标题:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
只看楼主
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用tlliqi在2014-5-20 21:39:00的发言:

以语文人数为例:在4楼代码中做下变通
*--各科人数统计
Select sum(IIF([语文]$km,1,0)) 语文人数 From Temp Into Cursor Temp1
Select Temp1
Browse
有多少科有多少条命令太不理想
2014-05-20 22:15
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
以下是引用sylknb在2014-5-20 17:25:08的发言:

现在我想在下表中分别求出各科的人数。
如下格式
库1
报名点代码,地理人数
库2
报名点代码,历史人数
库3
报名点代码,化学人数
,,,,


下面的代码为何不行,找不到‘地理’列
ckm='地理化学历史生物数学物理英语政治'
nkm=len(ckm)
for i=1 to nkm STEP 2
 dkm=substrc(ckm,i,2)
select 报名点代码,count(*) as &dkm. from Temp1.DBF where &dkm.$km group by 报名点代  into table &dkm.
毛病可能出在count(*) as &dkm.
程序代码:
zkm='地理,化学,历史,生物,数学,物理,英语,政治'
nkm=alines(fkm,zkm,[,])
FOR i=1 TO nkm
select 报名点代码,SUM(IIF(fkm(i)$报考科目,1,0)) &fkm(i)人数 FROM ls2 GROUP BY 1 into table &fkm(i)
endf
2014-05-21 01:07
dalianliyang
Rank: 2
等 级:禁止发言
帖 子:37
专家分:23
注 册:2013-1-30
得分:4 
提示: 作者被禁止或删除 内容自动屏蔽
2014-05-21 07:17
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
以下是引用sylknb在2014-5-20 16:34:12的发言:

sylkn4@ 谢谢了
已发送

只求每天有一丁点儿的进步就可以了
2014-05-21 08:36
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
以下是引用liuxingang28在2014-5-20 13:56:21的发言:

尽管楼主的表结构设计并不利于统计报考各科目的人数,但我还是对楼主的问题给出了解决方案:
为 ls2.dbf 新增一个字段 subject c(50),用于保存整理后的报考课目,然后执行如下代码:
CLOSE ALL
USE ls2
SCAN FOR !EMPTY(报考科目)
    cStr = ','+ALLT(报考科目)+','        && 为报考科目加前后定界符,便于使用 STREXTRACT()提取科目
    nNum = OCCURS(',',cStr) - 1          && 报考科目数
    DIMENSION aStr[nNum]                 && 将各科目保存到数组
    FOR i = 1 TO nNum
        aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))
    NEXT
    = ASORT(aStr)                        && 对科目进行排序
    cStr = ''                            && 由数组重新组合成报考科目字符串
    FOR i = 1 TO nNum
        cStr = cStr + IIF(i=1,'',',')+aStr[i]
    NEXT
    REPLACE subject WITH cStr            && 保存排序后的报考科目
ENDSCAN
GO TOP
BROWSE
DIMENSION aStr[nNum]                 && 将各科目保存到数组
    FOR i = 1 TO nNum
        aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))
    NEXT
中STREXTRACT函数第5个参数I表示何义?从for循环中STREXTRACT函数第5个参数I的值中1,2,3,4,5,。。VFP9帮助文件中第5个参数是1,2,4
2014-05-22 09:25
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
不可思议
编程的关键在于思路

坚守VFP最后的阵地
2014-05-22 10:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))
此处用GetWordNum()比用STREXTRACT()更合适。

[ 本帖最后由 sdta 于 2014-5-22 10:07 编辑 ]

坚守VFP最后的阵地
2014-05-22 10:04
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
以下是引用sylknb在2014-5-22 09:25:13的发言:

DIMENSION aStr[nNum]                 && 将各科目保存到数组
    FOR i = 1 TO nNum
        aStr = ALLT(STREXTRACT(cStr,',',',',i))
    NEXT
中STREXTRACT函数第5个参数I表示何义?从for循环中STREXTRACT函数第5个参数I的值中1,2,3,4,5,。。VFP9帮助文件中第5个参数是1,2,4

楼主怎么回事?连12345都分不清了?在 STREXTRACT(cStr,',',',',i)中,i 不是第5个参数,而是第4个参数。第1参数是cStr,表示要从哪个字符串中提取,第2个参数是起始定界符,第3个参数是截止定界符,第4个参数是提取第几组定界符中间的部分。本函数在这里的作用是:提取源字符串中以逗号分隔开的部分。


[ 本帖最后由 liuxingang28 于 2014-5-22 10:26 编辑 ]

泉城飞狐
2014-05-22 10:24
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
sdta 版主说的对,对于本例来说,使用 ALINES()函数比使用 OCCURS() 和 STREXTRACT()简练得多。
我的原代码是:
    ……
    cStr = ','+ALLT(报考科目)+','        && 为报考科目加前后定界符,便于使用 STREXTRACT()提取科目
    nNum = OCCURS(',',cStr) - 1          && 报考科目数
    DIMENSION aStr[nNum]                 && 将各科目保存到数组
    FOR i = 1 TO nNum
        aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))
    NEXT
    ……
使用 ALINES()函数可将上述代码精简为一个语句:
    nNum = ALINES(aStr,ALLT(报考科目),',')

泉城飞狐
2014-05-22 10:38
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
用 ALINES()函数精简一些
2014-05-22 11:46



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




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

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