DM.ADO_HM.First; //把“号码(HM)”表移动到第一条。
for i:=0 to DM.ADO_HM.RecordCount-1 do //一个从“号码(HM)”表第一条记录到最后一条记录的循环。
begin
DM.ADO_HM.Edit; //“号码(HM)”表进入编辑状态。
if length(DBE_SJHM.Text)=11 then //判断“手机号码(SJHM)”是不是11位。
begin
a:=strtoint(copy(DM.ADO_HM.FieldValues['SJHM'],length(DBE_SJHM.Text)-3,1)); //把“手机号码(SJHM)”第1位赋值给变量a。
b:=strtoint(copy(DM.ADO_HM.FieldValues['SJHM'],length(DBE_SJHM.Text)-2,1));//把“手机号码(SJHM)”第2位赋值给变量b。
c:=strtoint(copy(DM.ADO_HM.FieldValues['SJHM'],length(DBE_SJHM.Text)-1,1));//把“手机号码(SJHM)”第3位赋值给变量c。
d:=strtoint(copy(DM.ADO_HM.FieldValues['SJHM'],length(DBE_SJHM.Text),1));//把“手机号码(SJHM)”第4位赋值给变量d。
if (c=d)and(c>5)and(d>5)and(a<>c)and(b<>d)and(a<>b) then //“大双连”,例:7899,5266。
DM.ADO_HM.FieldByName('TSHM').AsString:='大双连'
else if (b=c)and(c=d)and(b>5)and(c>5)and(d>5)and(a<>b) then //“大三连”,例:7999,5666。
DM.ADO_HM.FieldByName('TSHM').AsString:='大三连'
else if (b=c)and(c=d)and(b<=5)and(c<=5)and(d<=5)and(a<>b) then //“小三连”,例:9222,4555。
DM.ADO_HM.FieldByName('TSHM').AsString:='小三连'
else if (a=b)and(b=c)and(c=d)and(a<=5) then //“小四连”,例:2222,5555。
DM.ADO_HM.FieldByName('TSHM').AsString:='小四连'
else if (a=b)and(b=c)and(c=d)and(a>5) then //“大四连”,例:6666,9999。
DM.ADO_HM.FieldByName('TSHM').AsString:='大四连'
else if (a=b)and(c=d)then //“AABB”,例:1122,4499。
DM.ADO_HM.FieldByName('TSHM').AsString:='AABB'
else if (d-c=1)and(c-b=1)and(b-a=1) then //“ABCD”,例:0123,6789。
DM.ADO_HM.FieldByName('TSHM').AsString:='ABCD'
else if (a=b)and(b=c)then //“AAAB”,例:1112,7779。
DM.ADO_HM.FieldByName('TSHM').AsString:='AAAB'
else if (a=d)and(b=c) then //“ABBA”,例:1551,9779。
DM.ADO_HM.FieldByName('TSHM').AsString:='ABBA'
else DM.ADO_HM.FieldByName('TSHM').AsString:='普通号码'; //什么都不属于则为普通号码。
end
else DM.ADO_HM.FieldByName('TSHM').AsString:=''; //不到11位的赋值为空。
if not DM.ADO_HF.FieldByName('SJHM').IsNull then//在“花费(HF)”表中查找该记录,若有则为开通。
DM.ADO_HM.FieldByName('SFYKT').AsString:='是'
else
DM.ADO_HM.FieldByName('SFYKT').AsString:='否';
DM.ADO_HM.Post; //提交修改。
Dm.ADO_HM.Next; //吓一条记录。
end;
showmessage('数据校验完毕!');//提示用户校验完毕求SQL高手把这段代码转换为SQL语言,以上这段代码在1万条记录的时候效率让人忍受不了。分不多100,万分感谢!!
解决方案 »
- 自己编写的“手机娱乐程式Bin程序”与大家分享一下
- 扩大交际圈,想和常年研究GIMP\CIMAGE\Paint.net \FreeImage\Devil\ImageMagick等人士交个朋友。
- 如何做这道循环
- 请教一个问题:DbGridEh设置了两行标题,比如:张三(副经理),需要分成两行,第一行是张三,而不是张三(
- 幾個小問題~高手請幫忙~
- 为什么我用ord转换'abcde...'的时候总是报不是有序的,怎么解决?
- sql语句查询
- 制作帮助文件的这个工具shelpm怎么用?谢谢!
- 如何换算文本的显示宽度?
- 大家来看!我发的帖子明明有回复你第一次看帖子却看不到任何有关别人的回复,只有你回复以后才能看到别人的回复,嘿嘿……CSDN就是有意思……
- delphi 的SOAP接口问题
- 怎么我的delphi程序中调用excel的printpreview没反应啊
//把“手机号码(SJHM)”倒数第4位赋值给变量a。
//把“手机号码(SJHM)”倒数第3位赋值给变量b。
//把“手机号码(SJHM)”倒数第2位赋值给变量c。
//把“手机号码(SJHM)”倒数第1位赋值给变量d。
DM.ADO_HM.First;
....
DM.ADO_HM.EnableControls;这样应该不会慢。至于SQL代码,估计大概是这样:设:
1:表名是:HMTable
2: HMTable.SJHM唯一,或关键字select a = 0, b = 0, c = 0, d = 0, SJHM_len = len(SJHM), SJHM into #Temp from HMTable
update #Temp set
a = substring(SJHM, SJHMLen - 3, 1),
b = substring(SJHM, SJHMLen - 2, 1),
c = substring(SJHM, SJHMLen - 1, 1),
d = substring(SJHM, SJHMLen, 1)update HMTable set HMTable.TSHM = '大双连'
from #Temp T
where T.SJHM = HMTable.SJHM and (T.c=T.d) and (T.c>5) and(T.d>5)and(T.a<>c)and(T.b<>T.d)and(T.a<>T.b)
其它类似大概是这样,好久没写SQL了,不知对不对。