| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4591 人关注过本帖
标题:请教搜索无重复的行
取消只看楼主 加入收藏
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
结帖率:73.44%
收藏
已结贴  问题点数:16 回复次数:15 
请教搜索无重复的行
先生好,我有一段代码用来筛选无重复的行(有一个原表 ,312行10列,用代码筛选出以某行为标准的几行中无重复数据的),原来以为已可筛选了,但今天无意中将原表的行的次序(整行交换位置)交换后竟然筛选后的结果不一样了,请先生抽空指点,谢谢了(原表是312行10列,代码筛选后无重复数据的且有10行的“行块”有10块,但当原表中的前19行剪贴到文件尾后,搜索结果中无重复数据且有10行的“行块”只有一块了)
)

请教.rar (13.22 KB)

这个问题的逻辑关系有点复杂.rar (3.17 KB)


[此贴子已经被作者于2018-7-22 19:29编辑过]

搜索更多相关主题的帖子: 搜索 重复 代码 筛选 数据 
2018-07-22 19:21
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 3楼 sdta
先生您好,您的代码我试了下,还是有问题,运行后无重复的10行的“块”只有一块,若把原表中的前19行剪贴到文件尾时,运行的结果则无重复的10行的“块”就有十块了,请指教,谢谢(不知我第二个附件中关于本题的要求是否会词不达意)

[此贴子已经被作者于2018-7-22 22:01编辑过]

2018-07-22 21:56
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 9楼 sdta
首先感谢先生的耐心指导,但我还有一个疑问,就是若将压缩包中的“原表.dbf”中的最后19行剪贴到“原表.dbf”的头部(最顶端),则运行后的“有9条记录”的块只有一处了,照理也应该有10处啊,谢谢先生(以下附件是剪贴后的原表,只是最后19行剪贴到了头部,其他都没改变,请先生替换原表后再运行下,谢谢)
原表.rar (3.22 KB)
2018-07-23 06:55
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 13楼 sdta
先生是的,行的先后次序(整行或者说该行中10个数学的前后次序不改变)改变后“无重复的10行的块”的块数是会发生变化,但当我将行的前后改变较大时(譬如将行的次序随机排列后)怎么会“无重复的10行的块”不出现的情况呢,这是否说明我的代码有问题或者说我的要求与文字表达有偏差
2018-07-23 14:39
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 11楼 吹水佬
先生我运行了您的代码,但也出现“无重复10行的块”无解的情况
2018-07-23 14:40
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 14楼 fdxxhjc
为此我把这个问题的思路要求以文字的形式再疏理了下并贴上:

    逻辑要求再说明如下:总的要求是以每一行为标准与“原表”的312行都作一次比对。
第一轮(整个运行过程相当于有312轮):
    第一轮的第1步:以第一行为标准,与第一行比对有重复(自比对有重复即回避,以下同),第一行与第二行作比对,比对的结果有二种可能,第一种是:第一行中的10个数与第二行中的10个数均无重复时,则第二行符合要求;第二种是:第一行中的10个数与第二行中的10个数有一对及以上的重复时则第二行不符合要求。
    第一轮的第2步:当第一步下来第二行若是符合要求的,则以第一第二行共20个数为标准与第三行比对(当第一步下来若第二行不符合要求,则只有第一行的10个数与第三行比对)。
    第一轮的第3步:这步中作为标准的数可能有30个(前二次比对下来都符合要求)也有可能是20个(前二步中其中有一步符合一步不符合)也有可能还只有10个(前二步下来均不符合要求),此时以30个数或20个数或10数为标准与第四行进行比对,直至以前面311行比对的结果为标准与第312行进行比对,并将最后符合要求的各行写入“比较后”。
第二轮:以第二行为标准,先与第一行比对,可能性与第一轮相似,与第二行自相比对即回避,再将比对的结果为标准与第三行进行比对,直到与第312行进行比对,并将比对结果写入“比较后”。
……
第三佰十二轮:即以312行为标准与第一行进行比对,直至与312比对,至此运行结束。
2018-07-23 14:43
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 15楼 fdxxhjc
为此我把这个问题的思路要求以文字的形式再疏理了下并贴上:

    逻辑要求再说明如下:总的要求是以每一行为标准与“原表”的312行都作一次比对。
 第一轮(整个运行过程相当于有312轮):
    第一轮的第1步:以第一行为标准,与第一行比对有重复(自比对有重复即回避,以下同),第一行与第二行作比对,比对的结果有二种可能,第一种是:第一行中的10个数与第二行中的10个数均无重复时,则第二行符合要求;第二种是:第一行中的10个数与第二行中的10个数有一对及以上的重复时则第二行不符合要求。
    第一轮的第2步:当第一步下来第二行若是符合要求的,则以第一第二行共20个数为标准与第三行比对(当第一步下来若第二行不符合要求,则只有第一行的10个数与第三行比对)。
    第一轮的第3步:这步中作为标准的数可能有30个(前二次比对下来都符合要求)也有可能是20个(前二步中其中有一步符合一步不符合)也有可能还只有10个(前二步下来均不符合要求),此时以30个数或20个数或10数为标准与第四行进行比对,直至以前面311行比对的结果为标准与第312行进行比对,并将最后符合要求的各行写入“比较后”。
 第二轮:以第二行为标准,先与第一行比对,可能性与第一轮相似,与第二行自相比对即回避,再将比对的结果为标准与第三行进行比对,直到与第312行进行比对,并将比对结果写入“比较后”。
……
第三佰十二轮:即以312行为标准与第一行进行比对,直至与312比对,至此运行结束。
2018-07-23 14:43
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 18楼 吹水佬
因有些时候运行下来“无重复的行中行数最多的达10行”
而有些时候运行下来“无重复的行数为10行的”没有出现,此时即为“无重复10行的块”了
列1    列2    列3    列4    列5    列6    列7    列8    列9    列10    循环记录
2    58    62    49    94    93    34    8    54    51    以第1为准,有10条
19    77    63    18    41    39    100    85    11    52          第133条
70    15    82    14    27    23    36    64    86    88          第154条
1    3    75    78    42    38    83    57    47    81          第175条
66    65    61    98    35    31    45    7    87    10          第193条
74    4    59    40    91    90    24    56    12    55          第225条
73    67    79    25    21    33    26    80    92    9          第245条
60    69    6    96    95    30    28    48    20    53          第269条
68    71    5    43    37    29    97    16    50    89          第290条
72    76    13    44    22    99    32    84    46    17          第312条


[此贴子已经被作者于2018-7-23 16:06编辑过]

2018-07-23 16:05
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 18楼 吹水佬
有些时候会出现“无重复数字的10行”的块的,那我想不管原表的行的次序如何改变,运行后这样的“无重复数字的10行”的块至少应该有一块吧,为何会出现无解的情况呢

2018-07-23 16:14
fdxxhjc
Rank: 1
等 级:新手上路
帖 子:305
专家分:0
注 册:2014-4-10
收藏
得分:0 
以下是引用fdxxhjc在2018-7-23 14:43:45的发言:

为此我把这个问题的思路要求以文字的形式再疏理了下并贴上:

    逻辑要求再说明如下:总的要求是以每一行为标准与“原表”的312行都作一次比对。
 第一轮(整个运行过程相当于有312轮):
    第一轮的第1步:以第一行为标准,与第一行比对有重复(自比对有重复即回避,以下同),第一行与第二行作比对,比对的结果有二种可能,第一种是:第一行中的10个数与第二行中的10个数均无重复时,则第二行符合要求;第二种是:第一行中的10个数与第二行中的10个数有一对及以上的重复时则第二行不符合要求。
    第一轮的第2步:当第一步下来第二行若是符合要求的,则以第一第二行共20个数为标准与第三行比对(当第一步下来若第二行不符合要求,则只有第一行的10个数与第三行比对)。
    第一轮的第3步:这步中作为标准的数可能有30个(前二次比对下来都符合要求)也有可能是20个(前二步中其中有一步符合一步不符合)也有可能还只有10个(前二步下来均不符合要求),此时以30个数或20个数或10数为标准与第四行进行比对,直至以前面311行比对的结果为标准与第312行进行比对,并将最后符合要求的各行写入“比较后”。
 第二轮:以第二行为标准,先与第一行比对,可能性与第一轮相似,与第二行自相比对即回避,再将比对的结果为标准与第三行进行比对,直到与第312行进行比对,并将比对结果写入“比较后”。
……
第三佰十二轮:即以312行为标准与第一行进行比对,直至与312比对,至此运行结束。

原表的行次序不管如何变动,当每一行均与全表的312都作一次上述的比对,那至少应该有一次这样的“无重复的10行”的块存在吧
2018-07-23 19:00
快速回复:请教搜索无重复的行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028922 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved