标题:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
Local lcBkkm,lcBkkm1,lcKddm,lcStr
Store "" To lcBkkm,lcBkkm1,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)"
          lcBkkm1=lcBkkm1+Iif(Empty(lcBkkm1),"",",")+Alltrim(Abkkm[lnI]) && 报考科目内容
       EndIf
   EndFor
Endscan

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

For lnI=1 To Alines(Abkkm,lcBkkm1,",")
    lcStr=lcStr+Iif(Empty(lcStr),"",",")+"Sum("+Abkkm[lnI]+")"
Endfor

Insert Into Tjb Select "合计",&lcStr,0 From Tjb
lcStr=""
Select Tjb
For lnI=2 To Fcount()-1
    lcStr=lcStr+Field(lnI)+Iif(lnI<Fcount()-1,"+","")
EndFor
Replace All (Field(Fcount())) With Evaluate(lcStr)
Browse 
这段代码速度快

[ 本帖最后由 sdta 于 2014-5-23 17:51 编辑 ]
收到的鲜花
  • tlliqi2014-05-23 18:01 送鲜花  40朵   附言:辛苦了

坚守VFP最后的阵地
2014-05-23 17:49
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
一个比一个精采,要读懂你的代码确定要化好大的力气,里面有好多的奥妙之处。
2014-05-23 18:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
多看多练多思考,才能提高你的水平。

坚守VFP最后的阵地
2014-05-23 18:35
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
先初步问一下,下面的代码中有几句不明的
Scan
   If Alltrim(考点代码)==lcKddm    &&如判断结果为真,下面没有没有动作?
   Else
      Insert Into Tjb (考点代码) Values (Temp.考点代码)
   EndIf
   Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb  &&是不是更新TJB表?“(temp.科目) With temp.人数”是什么意思?
   lcKddm=Alltrim(考点代码)
Endscan
2014-05-23 19:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
会看代码的执行结果吗

坚守VFP最后的阵地
2014-05-23 19:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用sylknb在2014-5-23 19:12:31的发言:

先初步问一下,下面的代码中有几句不明的
Scan
   If Alltrim(考点代码)==lcKddm    &&如判断结果为真,下面没有没有动作?
   Else
      Insert Into Tjb (考点代码) Values (Temp.考点代码)
   EndIf
   Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb  &&是不是更新TJB表?“(temp.科目) With temp.人数”是什么意思?
   lcKddm=Alltrim(考点代码)
Endscan
If 条件=.T.
Else
   Insert Into Tjb (考点代码) Values (Temp.考点代码)
EndIf
条件=.T. 或 .F. 都要执行下面的代码
Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
所以
If 条件=.T.
Else
之间为空

关于命令的用法,自己看帮助文件吧

(temp.科目) With temp.人数  是什么意思?
看代码的结果
如何看代码的结果
可以在代码中加入:
MessageBox(temp.科目)
代码加入的位置,视具体情况而定
该示例中,MessageBox(temp.科目) 加入到
MessageBox(temp.科目)
Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
之前

分析代码时,要结合前面生成的临时表综合分析

[ 本帖最后由 sdta 于 2014-5-23 19:49 编辑 ]

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

这是Temp临时表中的内容
Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
temp.科目 的内容:地理、历史、化学,......。也就是临时表 Tjb 中的字段名。
上面的代码是动态变换临时表 Tjb 中的字段名

坚守VFP最后的阵地
2014-05-23 19:59
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:680
专家分:1287
注 册:2009-3-1
得分:0 
每个学生报考科目数== OCCURS(",",科目) +1
2014-05-23 21:28
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:680
专家分:1287
注 册:2009-3-1
得分:0 
每个学生报考科目数== OCCURS(",",科目) +1
2014-05-23 21:28
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
Replace (temp.科目) With temp.人数 For Alltrim(考点代码)==Alltrim(Temp.考点代码) In Tjb
temp.科目 的内容:地理、历史、化学,......。也就是临时表 Tjb 中的字段名。
上面的代码是动态变换临时表 Tjb 中的字段名
是否可理介为:
在更新tjb记录时,更新jtb中的字段名(如地理)的记录,它的字段名用temp.科目,记录内容,用temp.人数。
真是急转弯了。
2014-05-23 22:02



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




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

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