标题:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
只看楼主
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
For lnI=1 To Alines(Abkkm,lcBkkm1,",")
    lcStr=lcStr+Iif(Empty(lcStr),"",",")+"Sum("+Abkkm[lnI]+")"
Endfor
MESSAGEBOX(lcStr)   &&我在此处加了来下一句代码(Insert Into Tjb Select "合计",&lcStr,0 From Tjb)中的&lcstr
结果是sum(语文)sum(数学)。


Insert Into Tjb Select "合计",&lcStr,0 From Tj    &&此处中的 0  是何义 ?是不是对应“小计”的值?




[ 本帖最后由 sylknb 于 2014-5-23 22:29 编辑 ]
2014-05-23 22:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
看帮助文件,多研究,当程序运行正常(说明你的猜测是正确的)

坚守VFP最后的阵地
2014-05-23 22:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
Local lcBkkm,lcSql,lcStr
Store "" To lcBkkm,lcStr
Create Cursor Tj (Dm C(6),Km C(10))
Select * From Ls2 Into Cursor Temp
Scan
   For lnI=1 To Alines(Abkkm,报考科目,",")
       Insert Into Tj Values (Temp.报名点代码,Abkkm[lnI])
       If Not Alltrim(Abkkm[lnI])$lcBkkm
          lcBkkm=lcBkkm+Iif(Empty(lcBkkm),"",",")+Alltrim(Abkkm[lnI]) && 报考科目内容
       EndIf
   EndFor 
Endscan
Messagebox(lcBkkm,0,"代码结果")
=Alines(Abkkm,lcBkkm,",")
=Asort(Abkkm)
lcSql="Select Dm"
For lnI=1 To Alen(Abkkm,1)
    lcSql=lcSql+",Cast(Max(Iif(Alltrim(Km)=='"+Alltrim(Abkkm[lnI])+"',Rs,0)) As N(4)) "+;
    Alltrim(Abkkm[lnI])+Iif(lnI<Alen(Abkkm,1),"",",00000 小计 From Temp Group By Dm Into Cursor Tjb ReadWrite")
Endfor
Messagebox(lcSql,0,"Sql代码显示")
Select *,Count(*) Rs From Tj Group By 1,2 Into Cursor Temp

=Execscript(lcSql)
For lnI=1 To Alen(Abkkm,1)
    lcStr=lcStr+Iif(Empty(lcStr),"",",")+"Sum("+Abkkm[lnI]+")"
Endfor
Messagebox(lcStr,0,"代码显示")
Insert Into Tjb Select "合计",&lcStr,0 From Tjb

lcStr=""
For lnI=2 To Fcount()-1
    lcStr=lcStr+Field(lnI)+Iif(lnI<Fcount()-1,"+","")
    Blank All Fields (Field(lnI)) For Evaluate(Field(lnI))=0
EndFor
Replace All (Field(Fcount())) With Evaluate(lcStr)
Browse

坚守VFP最后的阵地
2014-05-24 13:57
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 

sdta:

太好了,有这样的代码提示学习起来容易多了,代码写的太精练了,才会想的到可以这样写。方显班主的风彩。
2014-05-24 21:36
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
sdte:
下段代码中标有红色是什么意思?
For lnI=1 To Alen(Abkkm,1)
    lcSql=lcSql+",Cast(Max(Iif(Alltrim(Km)=='"+Alltrim(Abkkm[lnI])+"',Rs,0)) As N(4)) "+;
    Alltrim(Abkkm[lnI])+Iif(lnI<Alen(Abkkm,1),"",",00000 小计 From Temp Group By Dm Into Cursor Tjb ReadWrite")
Endfor
2014-05-25 11:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
00000 小计
小计 为字段,宽度为5个字节,数值型数据
其它的看帮助文件

坚守VFP最后的阵地
2014-05-25 11:08
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 

sdta:
我说的是‘Iif(lnI<Alen(Abkkm,1),"",",00000 小计’中的iif判断的思路:for int=1 to alen(Alen(Abkkm,1)

循环开始是ini均小于Alen(Abkkm,1)用"" ,只到了循环结束后用00000 小计

这个""是不是用lcSql+",Cast(Max(Iif(Alltrim(Km)=='"+Alltrim(Abkkm[lnI])+"',Rs,0)) As N(4)) "+;
    Alltrim(Abkkm[lnI])
产生SQL语句时各科目之间产生空格:select 地理, 历史,..

[ 本帖最后由 sylknb 于 2014-5-25 11:51 编辑 ]
2014-05-25 11:18
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
lcStr=""
For lnI=1 To 5
    lcStr=lcStr+Transform(lnI)+Iif(lnI<5,","," A")
EndFor
Messagebox(lcStr)
Return

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

我说的是‘Iif(lnI
这类代码要经常写,要从简单的代码开始练起,根据不同情况,写出不同的代码来。
多看看我前面的代码,就能看出每段代码的不同。

[ 本帖最后由 sdta 于 2014-5-25 11:35 编辑 ]

坚守VFP最后的阵地
2014-05-25 11:22
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
我理介了产行SQL 语句中各科目间产生空格,反之为00000 小计。
2014-05-25 12:07



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




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

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