| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 890 人关注过本帖
标题:求助:每10个字段值用单引号隔开后连接为一组
只看楼主 加入收藏
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
求助:每10个字段值用单引号隔开后连接为一组
有dbf数据(图1),其中有ksh字段(ksh1字段为了看方便是后加的),想ksh字段用英文引号隔开每10个一组连接,效果如图2(只是效果,因为不会目前和dbf表实际数据不一致)
sy.zip (2.43 KB)

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册



[此贴子已经被作者于2023-7-11 08:35编辑过]

搜索更多相关主题的帖子: 单引号 数据 字段 连接 效果 
2023-07-11 08:23
pnyjq
Rank: 2
等 级:论坛游民
帖 子:22
专家分:74
注 册:2021-7-14
收藏
得分:7 
* 水平有限,代码质量一般,仅供参考
程序代码:
Create Cursor zl(序号 C(10), 考号 C(200))

Local lcKh, lcId, n
lcKh = ""
lcId = ""
n = 0
Select sy
Scan
    n = n + 1
    If n = 1
        lcId = Alltrim(sy.xh)
        lcKh = Transform(sy.Ksh)
    Else 
        lcKh = lcKh + ";" + Transform(sy.Ksh)
        
        * 满十行插入一行到新表
        If n = 10
            n = 0    && 计数器归零
            lcId = lcId + " - " + Alltrim(sy.xh)
            Insert Into zl(序号, 考号) values(lcId, lcKh)
        EndIf 
    EndIf 
EndScan

* 收集最后漏掉的零头
If n > 0
    Go bottom &&这里要回到表的末尾,不然xh的值为空的,而不是最后一个
    lcId = lcId + " - " + Alltrim(sy.xh)
    Insert Into zl(序号, 考号) values(lcId, lcKh)
EndIf 

Select zl
Browse

图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2023-7-11 09:24编辑过]

2023-07-11 09:20
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1094
专家分:2693
注 册:2015-12-30
收藏
得分:7 
程序代码:
CLOSE DATABASES 

LOCAL xii,xstr,xxh
SELECT CAST(0 AS int) 序号,SPACE(8) 序号1,SPACE(200) 连接后 FROM sy WHERE 1=2 INTO CURSOR syout READWRITE 

xii = 0
xxh = ''
xstr = ''
SELECT sy
SCAN 
    IF EMPTY(xxh)
        xxh = alltrim(xh)+'-'
    ENDIF 

    xii = xii + 1 
    xstr = xstr + ';' + alltrim(ksh)
    IF xii=10 OR RECNO()=RECCOUNT()
        xxh = xxh + alltrim(xh)
        INSERT INTO syout (序号1,连接后) VALUES (xxh,SUBSTR(xstr,2))
        xii = 0
        xstr = ''
        xxh = ''
    ENDIF
ENDSCAN 
SELECT syout
REPLACE ALL 序号 WITH RECNO()

SELECT * FROM syout


如果按楼主图示,连接后字段内容最后有分号的话,是下面这段程序
程序代码:
CLOSE DATABASES 

LOCAL xii,xstr,xxh
SELECT CAST(0 AS int) 序号,SPACE(8) 序号1,SPACE(200) 连接后 FROM sy WHERE 1=2 INTO CURSOR syout READWRITE 

SELECT sy
GO TOP 
xii = 0
xxh = ''
xstr = ''
SELECT sy
SCAN 
    IF EMPTY(xxh)
        xxh = alltrim(xh)+'-'
    ENDIF 

    xii = xii + 1 
    xstr = xstr + alltrim(ksh) + ';' 
    IF xii=10 OR RECNO()=RECCOUNT()
        xxh = xxh + alltrim(xh)
        INSERT INTO syout (序号1,连接后) VALUES (xxh,xstr)
        xii = 0
        xstr = ''
        xxh = ''
    ENDIF
ENDSCAN 
SELECT syout
REPLACE ALL 序号 WITH RECNO()

SELECT * FROM syout


[此贴子已经被作者于2023-7-11 09:37编辑过]

2023-07-11 09:24
pnyjq
Rank: 2
等 级:论坛游民
帖 子:22
专家分:74
注 册:2021-7-14
收藏
得分:0 
IF xii=10 OR RECNO()=RECCOUNT()
版主这一行代码高呀
2023-07-11 09:33
pnyjq
Rank: 2
等 级:论坛游民
帖 子:22
专家分:74
注 册:2021-7-14
收藏
得分:0 

* 收集最后漏掉的零头
If n > 0
    Go bottom &&这里要回到表的末尾,不然xh的值为空的,而不是最后一个
    lcId = lcId + " - " + Alltrim(sy.xh)
    Insert Into zl(序号, 考号) values(lcId, lcKh)
EndIf

直接省掉了我后面的一这段
2023-07-11 09:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:7 
; 这是英文引号?

坚守VFP最后的阵地
2023-07-11 09:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
程序代码:
CLOSE DATABASES 
CREATE CURSOR test (xh c(4), xh1 c(10), ksh c(150))
USE sy IN 0
STORE 0 TO ln1, ln2
ln2 = ln1 + 1
lc = SPACE(0)
SELECT sy 
SCAN 
    lc = lc + "'" + ksh && 单引号分隔字段值
    ln1 = ln1 + 1
    IF MOD(ln1, 10) = 0 OR RECNO() = RECCOUNT()
        INSERT INTO test VALUES (PADL(CEILING(ln1/10), 4, '0'), PADL(ln2, 4, '0') + '-' + PADL(RECNO("sy"), 4, '0'), SUBSTR(lc, 2))
        lc = SPACE(0)
        ln2 = ln1 + 1
    ENDIF     
ENDSCAN
SELECT test
BROWSE 

坚守VFP最后的阵地
2023-07-11 10:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2023-07-11 10:37
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 6楼 sdta
不好意思,,说错了,需要用英文分号隔开
2023-07-11 11:16
chychychy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:105
注 册:2015-4-18
收藏
得分:0 
回复 3楼 laowan001
谢谢,学习了
2023-07-11 11:24
快速回复:求助:每10个字段值用单引号隔开后连接为一组
数据加载中...
 
   



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

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