标题:csyx,我想改一下双飞输入模式,在帮我一下,感谢!
取消只看楼主
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
结帖率:100%
已结贴  问题点数:8 回复次数:9 
csyx,我想改一下双飞输入模式,在帮我一下,感谢!

麻烦帮我改一下,我现在想直接用标签输出
cTemp = Sys(2015)
Create Cursor (cTemp) (code V(4), cnt I)
cFlds = '零零,零一,零二,零三,零四,零五,零六,零七,零八,零九' ;
    + ',一一,一二,一三,一四,一五,一六,一七,一八,一九' ;
    + ',二二,二三,二四,二五,二六,二七,二八,二九' ;
    + ',三三,三四,三五,三六,三七,三八,三九' ;
    + '四四,四五,四六,四七,四八,四九' ;
    + ',五五,五六,五七,五八,五九' ;
    + ',六六,六七,六八,六九' ;
    + ',七七,七八,七九,八八,八九,九九'
For ii = 1 to ALines(aFlds, cFlds, 1+4, ',')
    Insert into (cTemp) (code) Values (aFlds[ii])
EndFor
*************************************************临时表

Select 历史
Scan all
    Scatter name oRec Fields 期号,组选号
    c双飞号 = Chrtran('XY,XZ,YZ', 'XYZ', m.oRec.组选号)
    For jj = ALines(a双飞号, c双飞号, 1+4, ',') to 2 step -1
        If a双飞号[jj] == a双飞号[jj-1]        && 去重
            a双飞号[jj] = ''
        EndIf
    EndFor
    For jj = 1 to Alen(a双飞号)
        If !Empty(a双飞号[jj])
            c双飞号 = Chrtranc(a双飞号[jj], '0123456789', '零一二三四五六七八九')
            Insert into (cTemp) (code, cnt) Values (c双飞号, 1)
        EndIf
    EndFor
EndScan
*****************************************************************************这里没看明白,好像是先写入到临时表,然后下面在写入到sql数据库里面
Select code, Sum(cnt) as cnt from (cTemp) group by code into cursor (cTemp)
Select (cTemp)
cUpd = ''
cFld = '[用户名]'
cVal = ['&user_']
Scan all
    cUpd = cUpd + Textmerge(',[<<code>>]=<<cnt>>')
    cFld = cFld + Textmerge(',[<<code>>]')
    cVal = cVal + Textmerge(',<<cnt>>')
EndScan
Text to m.cSql Noshow textmerge pretext 1+2+4
    If Exists (Select * from [历史统计双飞] where [用户名] = '<<user_>>')
        Update [历史统计双飞] set <<Substr(cUpd,2)>> where [用户名] = '<<user_>>';
    Else
        Insert [历史统计双飞] (<<cFld>>) Values (<<cVal>>);
EndText
******************************************************************************sql语句操作
*-- 更新到后台
SQLSetProp(nHandle, "Transactions", 1)
nResult = SQLExec(nHandle, cSql, cTemp)
Use in Select(cTemp)

******************************************************************************
我现在想直接输出到标签,不用数据库这块了,用数据库好像会影响速度,没有标签来得快,数据库表多了会对配置低点的电脑会有影响
如图:
我框起来的是四个容器,容器里面是标签,我需要你把值写入到数组,然后我控制数组去输出,或许你本来就是输出到数组的,中间那段程序我没看懂
我想用简单的方式,复杂了我看不懂
例如:你把数据输出到数组,我用循环去打印到标签就可以了
a[55]
我可以
for i=1 to 55
赋值给变量
b(i)=a(i)
endfor
for i=1 to x
输出标签
endfor
或者你直接帮我写好也可以,我四个容器的名称是Container17,Container19,Container21,Container23
23是7个标签,其他都是12个标签,标签名称都是排好了的,1到12
感谢!要不收个徒吧,不然老是找你,我都不好意思了,其他人也明白不了,现在就你一个人明白意思,我也只能找你
搜索更多相关主题的帖子: Select code 输出 For 标签 
2023-04-21 22:41
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 08:06:35的发言:

2023-04-22 09:25
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 08:06:35的发言:
你那个东西,我没看明白,看得我一头雾水
要不在改一下

cTemp = Sys(2015)
Create Cursor (cTemp) (code V(4), cnt I)
cFlds = '零零,零一,零二,零三,零四,零五,零六,零七,零八,零九' ;
    + ',一一,一二,一三,一四,一五,一六,一七,一八,一九' ;
    + ',二二,二三,二四,二五,二六,二七,二八,二九' ;
    + ',三三,三四,三五,三六,三七,三八,三九' ;
    + '四四,四五,四六,四七,四八,四九' ;
    + ',五五,五六,五七,五八,五九' ;
    + ',六六,六七,六八,六九' ;
    + ',七七,七八,七九,八八,八九,九九'
For ii = 1 to ALines(aFlds, cFlds, 1+4, ',')
    Insert into (cTemp) (code) Values (aFlds[ii])
EndFor
Select 历史
Scan all
    Scatter name oRec Fields 期号,组选号
    c双飞号 = Chrtran('XY,XZ,YZ', 'XYZ', m.oRec.组选号)
    For jj = ALines(a双飞号, c双飞号, 1+4, ',') to 2 step -1
        If a双飞号[jj] == a双飞号[jj-1]        && 去重
            a双飞号[jj] = ''
        EndIf
    EndFor
    For jj = 1 to Alen(a双飞号)
        If !Empty(a双飞号[jj])
            c双飞号 = Chrtranc(a双飞号[jj], '0123456789', '零一二三四五六七八九')
            Insert into (cTemp) (code, cnt) Values (c双飞号, 1)
        EndIf
    EndFor
EndScan
Select code, Sum(cnt) as cnt from (cTemp) group by code into cursor (cTemp)
Select (cTemp)
程序到这里,我觉得就可以了,只需要在重新排一下序,从零零排到九九
我在用SCATTER TO b,来处理后面的东西
因为你现在的排序是字母排序,我无法下手啊
2023-04-22 11:41
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
2023-04-22 20:24
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 21:02:53的发言:

不做无用功的话应该这样
1. 最前面的定义用阿拉伯数字
cFlds = '00,01,02,.....,09' ;
    + ',11,12, ....'
    + ...
    + ',77,78,79,88,89,99'

2.
红框里面两句简化成
Insert into (cTemp) (code, cnt) Values (a双飞号[jj], 1)

3. 7,8 楼的代码也不用了

cTemp = Sys(2015)
Create Cursor (cTemp) (code V(4), cnt I)
cFlds = '00,01,02,03,04,05,06,07,08,09' ;
    + ',11,12,13,14,15,16,17,18,19' ;
    + ',22,23,24,25,26,27,28,29' ;
    + ',33,34,35,36,37,38,39' ;
    + ',44,45,46,47,48,49' ;
    + ',55,56,57,58,59' ;
    + ',66,67,68,69' ;
    + ',77,78,79' ;
    + ',88,89 ';
    + ',99'
   
For ii = 1 to ALines(aFlds, cFlds, 1+4, ',')
    Insert into (cTemp) (code) Values (aFlds[ii])
EndFor
Select 历史
Scan all
    Scatter name oRec Fields 期号,组选号
    c双飞号 = Chrtran('XY,XZ,YZ', 'XYZ', m.oRec.组选号)

    For jj = ALines(a双飞号, c双飞号, 1+4, ',') to 2 step -1
        If a双飞号[jj] == a双飞号[jj-1]        && 去重
            a双飞号[jj] = ''
        EndIf
    EndFor

    For jj = 1 to Alen(a双飞号)
        If !Empty(a双飞号[jj])
                Insert into (cTemp) (code, cnt) Values (a双飞号[jj], 1)   
               
        EndIf
    EndFor
EndScan

*Select code, Sum(cnt) as cnt from (cTemp) group by code into cursor (cTemp)&&这句没问题!
Select code, Sum(cnt) as cnt from (cTemp) group by code into array a双飞统计    &&用这句不对啊!数据都不对了
现在只需要把cnt存到数组就可以了,code没用了。我只需要值,然后把值输出到标签就OK了



[此贴子已经被作者于2023-4-22 22:36编辑过]

2023-04-22 22:29
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 22:44:18的发言:

SELECT CNT FROM (Select code, Sum(cnt) as cnt from (cTemp) group by code ORDER BY CODE) A into array a双飞统计

晕死,输不输出 code 到数组有什么关系?都输出时你只用第二列不就行了
for ii = 1 to alen(a双飞统计,1)
    ? a双飞统计
endfor

thank you

2023-04-22 22:54
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 22:44:18的发言:

这个只输出 cnt 列到数组
SELECT CNT FROM (Select code, Sum(cnt) as cnt from (cTemp) group by code ORDER BY CODE) A into array a双飞统计

晕死,输不输出 code 到数组有什么关系?都输出时你只用第二列不就行了
for ii = 1 to alen(a双飞统计,1)
    ...
    ....Caption = trans(a双飞统计)
endfor

这个我知道,就是刚才那个,到数组是错误的,数据有错,现在对了
2023-04-22 22:55
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-22 23:27:26的发言:

都输出才是正确的做法,这样在发现数据对不上时,可以把 code 和 cnt 同时显示出来方便查找原因

Select code, Sum(cnt) as cnt from (cTemp) group by code ORDER BY CODE into array a双飞统计
for ii = 1 to alen(a双飞统计,1)
    ...
    ....Caption = a双飞统计 + ' : ' + trans(a双飞统计)
endfor

你这界面设计能力跟写代码能力极度不匹配,看你布局和配色还蛮有美工功底的,代码就写得实在太烂了

ps我的强项,vfp,弱爆了
2023-04-23 10:22
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 


数据还是有错,你看一下程序哪里有错,现在是统计不完全
图1中有14个双飞,程序统计出来才11个,另外统计还有错,没得24双飞,程序也统计出来了,麻烦看一下
程序代码:
cTemp = Sys(2015)
Create Cursor (cTemp) (code V(4), cnt I)
cFlds = '00,01,02,03,04,05,06,07,08,09' ;
    + ',11,12,13,14,15,16,17,18,19' ;
    + ',22,23,24,25,26,27,28,29' ;
    + ',33,34,35,36,37,38,39' ;
    + ',44,45,46,47,48,49' ;
    + ',55,56,57,58,59' ;
    + ',66,67,68,69' ;
    + ',77,78,79' ;
    + ',88,89 ';
    + ',99'
    
For ii = 1 to ALines(aFlds, cFlds, 1+4, ',')
    Insert into (cTemp) (code) Values (aFlds[ii])
EndFor
Select 历史同期查询
Scan all
    Scatter name oRec Fields 期号,组选号
    c双飞号 = Chrtran('XY,XZ,YZ', 'XYZ', m.oRec.组选号)
    For jj = ALines(a双飞号, c双飞号, 1+4, ',') to 2 step -1
        If a双飞号[jj] == a双飞号[jj-1]        && 去重
            a双飞号[jj] = ''
        EndIf
    EndFor
    For jj = 1 to Alen(a双飞号)
        If !Empty(a双飞号[jj])
                Insert into (cTemp) (code, cnt) Values (a双飞号[jj], 1)        
        EndIf
    EndFor
EndScan
SELECT CNT FROM (Select code, Sum(cnt) as cnt from (cTemp) group by code ORDER BY CODE) A into array a双飞统计

我删除了一些数据库字段,但是应该和字段没关系吧!组选号字段还是在的,这是必须要的字段


[此贴子已经被作者于2023-4-23 17:15编辑过]

2023-04-23 14:23
hytizj023
Rank: 1
等 级:新手上路
帖 子:166
专家分:7
注 册:2023-3-2
得分:0 
以下是引用csyx在2023-4-23 17:19:32的发言:

把 历史同期查询 这个表传上来,我要用这个表来跟踪

Select code, Sum(cnt) as cnt from (cTemp) group by code into array a双飞统计
for ii = 1 to alen(a双飞统计,1)
    g= trans(a双飞统计[ii,1])
    t= trans(a双飞统计[ii,2])
    ?g,t
endfor
我刚才又这样验证了一次数据又是正确的,还是你说得对,必须要完全输出到数组,这样才能更好验证数据,我在多验证几次,如果在有问题,在来请教你

我觉得问题是出在
SELECT CNT FROM (Select code, Sum(cnt) as cnt from (cTemp) group by code ORDER BY CODE) A into array a双飞统计
这句上面

[此贴子已经被作者于2023-4-23 17:49编辑过]

2023-04-23 17:44



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




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

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