请问如何对一列求和?

qg1977 2005-06-21 12:56:25
表aa如下:类型 10序  20序 30序………………完工数
     工废  20   30   10       10
我想求出当类型为“工废”该列所有字段之和,
因为字段的名称和数量是不定的,请问如何在不知道字段名称和数量的情况下求出和?
...全文
292 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LAIYANGPJ 2005-06-23
  • 打赏
  • 举报
回复
Close All
Use aa
all_field=0
For i=2 To Fcount()
f_locate=Field(i)
Sum(&f_locate.) To N For Alltrim(类型)=='工废'
all_field=all_field+N
Endfor
Wait Window all_field
szjhxu 2005-06-22
  • 打赏
  • 举报
回复
利用Fcount()函数可以知道共有多少字段,Field()函数可以获取某个字段的字段名,然后用宏替换进行
操作。
大概的代码是这样的:
use aa
fn=Fcount()
locate for 类型="工废"
s=0
for i=2 to fn
fld=field(i)
s=s + &fld
next
use
?s
xclzteb 2005-06-22
  • 打赏
  • 举报
回复
用Total或Sum()都可以的。或者用SQl语言
qg1977 2005-06-21
  • 打赏
  • 举报
回复
小黑黑脸兄,太不够意思了!联系方式也不留一个可怎么“在空联系”呢?至少留个QQ号吧
俺的QQ号是191972094,有空联系!
淡蓝冰 2005-06-21
  • 打赏
  • 举报
回复
給你一段代碼﹐我想你肯定很有用。和你想要做的東西有很大的關系。跟你一樣﹐字段都是動態的。樓主也是做....﹐有空聯系﹗

IF EMPTY(thisform.text1.Value) OR EMPTY(thisform.text2.Value)
MESSAGEBOX("請輸入訂單起始日",64,"系統提示")
RETURN
ENDIF
mi=MIN(THISFORM.text1.VALUE,THISFORM.text2.VALUE)
ma=MAX(THISFORM.text1.VALUE,THISFORM.text2.VALUE)
thisform.text1.Value=mi
thisform.text2.Value=ma
miyear=year(mi)
mayear=year(ma)
mimon=month(mi)
mamon=month(ma)
nwhere=" zzorddate>='"+DTOC(mi)+"' and zzorddate<='"+DTOC(ma)+"'"
listname="operator c(15),"
nlist=""
mamon=mamon+(mayear-miyear)*12
FOR I=mimon to mamon
listname=listname+"zs"+alltrim(str(I-mimon+1))+" n(6,0),js"+alltrim(str(I-mimon+1))+" n(5,0),"
nlist=nlist+"sum(zs"+alltrim(str(I-mimon+1))+"),sum(js"+alltrim(str(I-mimon+1))+"),"
ENDFOR
listname=listname+"zshj n(7,0),jshj n(6,0)"
nlist=nlist+"sum(zshj) zshj,sum(jshj) jshj"
CREAT CURSOR kdb(&listname)
IF SQLEXEC(connect_sql,"select zzoperator as operator from t_order where "+nwhere,"aa")<0
RETURN
ELSE
sele kdb
append from DBF("aa")
ENDIF
nK=1
afieldlist=""
bfieldlist=""
FOR I=mimon to mamon
DIME nArray1(nK),nArray2(nK)
nyear=miyear+iif(I=1,0,int((I-1)/12))
nmonth=iif(I%12=0,12,I%12)
aname="zs"+alltrim(str(I-mimon+1))
bname="js"+alltrim(str(I-mimon+1))
afieldlist=afieldlist+"+"+aname
bfieldlist=bfieldlist+"+"+bname
IF SQLEXEC(connect_sql,"select cast(count_big(*) as int(6)) "+aname+",aa.zzoperator operator from t_order aa,t_orderc bb where aa.zzno=bb.zzno and datepart(year,aa.zzorddate)="+alltrim(str(nyear))+" and datepart(month,aa.zzorddate)="+alltrim(str(nmonth))+" group by aa.zzorddate,aa.zzoperator order by aa.zzorddate,aa.zzoperator","bb")<0
RETURN
ENDIF
SELE BB
INDEX ON operator tag operator
sele kdb
set relation to operator into bb
replace all &aname with bb.&aname
IF SQLEXEC(connect_sql,"select cast(count_big(*) as int(5)) "+bname+",aa.zzoperator operator from t_order aa,t_orderc bb where aa.zzno=bb.zzno and zzmainst='ZZ' and datepart(year,aa.zzorddate)="+alltrim(str(nyear))+" and datepart(month,aa.zzorddate)="+alltrim(str(nmonth))+" group by aa.zzorddate,aa.zzoperator order by aa.zzorddate,aa.zzoperator","cc")<0
RETURN
ENDIF
SELE cc
INDEX ON operator tag operator
sele kdb
set relation to operator into cc
replace all &bname with cc.&bname
nArray1(nK)=alltrim(str(nyear))+"年"+alltrim(str(nmonth))+"月總數"
nArray2(nK)=alltrim(str(nyear))+"年"+alltrim(str(nmonth))+"月間色數"
nK=nK+1
ENDFOR
sele kdb
repl all zshj with &afieldlist,jshj with &bfieldlist
DIME nArray(2*nK+1)
nArray(1)="操作者"
FOR I=1 to nK-1
nArray(2*I)=nArray1(I)
nArray(2*I+1)=nArray2(I)
ENDFOR
nArray(2*I)="總數合計"
nArray(2*I+1)="間色數合計"
sele operator,&nlist from kdb into cursor Temp1 group by operator
AFIELD(nStruArray)
CREAT CURSOR TempInvent FROM ARRAY nStruArray
SELE TempInvent
APPEND FROM DBF('Temp1')
sele "合計 " operator,&nlist from kdb into cursor temp2
scatter to bArray
insert into TempInvent from array bArray
SELE TempInvent
THISFORMSET.FORM4.GRID1.RECORDSOURCE='TempInvent'
THISFORMSET.FORM4.GRID1.COLUMNCOUNT=FCOUN('TempInvent')
FOR I=1 TO FCOUN('TempInvent')
SELE TempInvent
nColumnName='Column'+ALLT(STR(I))
THISFORMSET.FORM4.GRID1.&nColumnName..CONTROLSOURCE=FIELD(I)
THISFORMSET.FORM4.GRID1.&nColumnName..HEADER1.CAPTION=nArray(I)
THISFORMSET.FORM4.GRID1.&nColumnName..WIDTH=MAX(LEN(FIELD(I)),FSIZE(FIELD(I)))*7
IF THISFORMSET.FORM4.GRID1.&nColumnName..WIDTH>240
THISFORMSET.FORM4.GRID1.&nColumnName..WIDTH=240
ENDIF
THISFORMSET.FORM4.GRID1.&nColumnName..HEADER1.ALIGNMENT=2
ENDFOR
SELE TempInvent
GO TOP
WAIT CLEA
THISFORMSET.FORM4.GRID1.SCROLLBARS=3
THISFORMSET.FORM4.CAPTION=THIS.CAPTION
THISFORMSET.FORM1.VISIBLE=.F.
THISFORMSET.FORM4.VISIBLE=.T.


2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧