标题:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
Local lcBkkm,lcKddm,lcStr
Store "" To lcBkkm,lcKddm,lcStr
Create Cursor Tj (考点代码 C(5),科目 C(10))
Select * From ls2 Into Cursor Temp
Scan
   For lnI=1 To Alines(Abkkm,Alltrim(报考科目),",")
       Insert Into Tj Values (Temp.报名点代码,Abkkm[lnI])
       If Not Alltrim(Abkkm[lnI])$lcBkkm
          lcBkkm=lcBkkm+Iif(Empty(lcBkkm),"",",")+Alltrim(Abkkm[lnI])+" N(4)" && 提取报考科目
       EndIf
   EndFor
Endscan
Messagebox(lcBkkm)
Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5))

Select 考点代码,科目,Count(*) 人数 From Tj Group By 1,2 Into Cursor Temp
Scan
   If Alltrim(考点代码)==lcKddm
   Else
      Insert Into Tjb (考点代码) Values (Temp.考点代码)
   EndIf
   Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
   lcKddm=Alltrim(考点代码)
Endscan

Insert Into Tjb (考点代码) Values ("合计")
Select Tjb
For lnI=2 To Fcount()-1
    lcStr=lcStr+Field(lnI)+Iif(lnI<Fcount()-1,"+","")
    Sum Evaluate(Field(lnI)) To X
    Replace Record Reccount() (Field(lnI)) With X && 列合计
EndFor
Replace All (Field(Fcount())) With Evaluate(lcStr) && 行小计
Browse

坚守VFP最后的阵地
2014-05-25 12:28
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
运行此句提示:Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5)),语法错误!
2014-05-25 13:24
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用sdta在2014-5-25 12:28:52的发言:

Local lcBkkm,lcKddm,lcStr
Store "" To lcBkkm,lcKddm,lcStr
Create Cursor Tj (考点代码 C(5),科目 C(10))
Select * From ls2 Into Cursor Temp
Scan
   For lnI=1 To Alines(Abkkm,Alltrim(报考科目),",")
       Insert Into Tj Values (Temp.报名点代码,Abkkm[lnI])
       If Not Alltrim(Abkkm[lnI])$lcBkkm
          lcBkkm=lcBkkm+Iif(Empty(lcBkkm),"",",")+Alltrim(Abkkm[lnI])+" N(4)" && 提取报考科目
       EndIf
   EndFor
Endscan
Messagebox(lcBkkm)
Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5))

Select 考点代码,科目,Count(*) 人数 From Tj Group By 1,2 Into Cursor Temp
Scan
   If Alltrim(考点代码)==lcKddm
   Else
      Insert Into Tjb (考点代码) Values (Temp.考点代码)
   EndIf
   Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
   lcKddm=Alltrim(考点代码)
Endscan
 
Insert Into Tjb (考点代码) Values ("合计")
Select Tjb
For lnI=2 To Fcount()-1
    lcStr=lcStr+Field(lnI)+Iif(lnI
运行到Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5)) 提示语法错误
 
2014-05-25 13:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
怎么运行的

坚守VFP最后的阵地
2014-05-25 13:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
运行正常

坚守VFP最后的阵地
2014-05-25 13:34
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
我也不知道何原因?LS2库第一条为空时出现错误提示[attach]76133[/attach]
当第一条给它填上,没有错误提示。
第一条记录为空与Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5)) 是没有关系的。



[ 本帖最后由 sylknb 于 2014-5-25 13:57 编辑 ]
2014-05-25 13:53
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
原因找出来了,若第一条记录为空,lcbkkm所产生的为
 Messagebox(lcBkkm)

Create Cursor Tjb (考点代码 C(5),&lcBkkm,小计 N(5)) 中),&lcBkkm产生错了,所以提示

2014-05-25 14:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
当第一条记录为空lcBkkm的结果为

坚守VFP最后的阵地
2014-05-25 14:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
是第一条记录,不是第一天记录

坚守VFP最后的阵地
2014-05-25 14:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
要学会用Messagebox()调试代码、显示代码结果。

坚守VFP最后的阵地
2014-05-25 14:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431813-1-1.html




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

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