标题:求助,如何将科目名称显示为全称
只看楼主
zysoft888
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-11-1
结帖率:33.33%
已结贴  问题点数:20 回复次数:10 
求助,如何将科目名称显示为全称
求助
代码  名称
5602         管理费用
560201     差旅费
56020101 市内差旅费
56020102 外地差旅费
新增一个字段科目全称,如何将该字段的内容替换为如下效果

代码  科目全称
5602         管理费用
560201     管理费用-差旅费
56020101 管理费用-差旅费-市内差旅费
56020102 管理费用-差旅费-外地差旅费
vfp或sql语句均可
搜索更多相关主题的帖子: 代码 名称 管理 字段 显示 
2019-11-01 22:52
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:352
专家分:1152
注 册:2015-10-2
得分:5 
如果表内记录多于2条,按照楼上的规律,是不是这意思?
use 表名
go top
c1=alltrim(名称)
skip
replace 名称 with (c1+'-'+alltrim(名称))
c2=alltrim(名称)
replace all 名称 with (c2+'-'+alltrim(名称)) for recno()>2
brow
2019-11-02 01:35
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:5 
这个是会计科目的一二三级科目吧
2019-11-02 07:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
目录级数不是固定,有些子目可能有5、6级。
可以索引“代码”再组合分级查找,如:
代码:56020102,分别拆开5602、01、02....直到拆完为止(空),再分别组合查找各级名称
seek "5602" 得“管理费用”
seek "560201" 得“差旅费”
seek "56020102" 得“外地差旅费”
...
依次组合就是:管理费用-差旅费-外地差旅费
2019-11-02 11:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 
可以发帖了,一周不能发帖真难受,后来管理员告诉我,说是浏览器版本的问题,换了谷歌浏览器,果然好用
CREATE CURSOR KM (代码 C(8), 名称 C(20))
INSERT INTO KM VALUES ("5602","管理费用")
INSERT INTO KM VALUES ("560201","差旅费")
INSERT INTO KM VALUES ("56020101","市内差旅费")
INSERT INTO KM VALUES ("56020102","外地差旅费")
INSERT INTO KM VALUES ("5602","管理费用1")
INSERT INTO KM VALUES ("560201","差旅费1")
INSERT INTO KM VALUES ("56020101","市内差旅费1")
INSERT INTO KM VALUES ("56020102","外地差旅费1")

IF TYPE("科目全称") == "U"
    ALTER TABLE KM ADD 科目全称 C(40)
ENDIF
SCAN
    DO CASE
        CASE LEN(ALLTRIM(代码)) = 4
            cStr1 = 名称
            REPLACE 科目全称 WITH cStr1
        CASE LEN(ALLTRIM(代码)) = 6
            cStr2 = cStr1 - "-" - 名称
            REPLACE 科目全称 WITH cStr2
        CASE LEN(ALLTRIM(代码)) = 8
            cStr3 = cStr2 - "-" - 名称
            REPLACE 科目全称 WITH cStr3
    ENDCASE
ENDSCAN
BROWSE

坚守VFP最后的阵地
2019-11-06 18:35
zysoft888
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-11-1
得分:0 
回复 5楼 sdta
非常感谢您的回复,您在回复中的方法很有用,在确定知道各级次位数的前提下是可行的,但是如果不确定各级次的位数,可能就不好实现了。

如果象下面这种比较复杂的情况,科目级次是4-2-2-2-2-2-2如何在做呢?


4001    财政拨款收入
400101    基本支出
40010101    人员经费
40010102    公用经费
400102    项目支出
4201    上级补助收入
420101    非专项收入
420102    专项收入
4601    非同级财政拨款收入
460101    非专项收入
460102    专项收入
4603    捐赠收入
4604    利息收入
4605    租金收入
4609    其他收入
460901    非专项收入
460902    专项收入
5001    业务活动费用
500101    财政补助费用
50010101    基本支出费用
5001010101    工资福利费用
500101010101    基本工资
500101010102    津贴补贴
50010101010201    国家津贴
50010101010202    国家补贴
50010101010203    地方性津补贴
50010101010204    高寒缺氧补贴
50010101010205    采暖补贴
50010101010206    乡镇岗位津贴
50010101010299    其他津补贴
500101010103    奖金
500101010104    其他社会保障缴费
500101010105    绩效工资
50010101010501    基础性绩效
50010101010502    奖励性绩效
500101010106    基本养老保险缴费
500101010107    职业年金缴费
500101010108    基本医疗保险缴费
500101010109    住房公积金
500101010199    其他工资福利费用
5001010102    商品服务费用
500101010201    办公费
500101010202    印刷费
500101010203    咨询费
500101010204    手续费
2019-11-15 12:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 6楼 zysoft888

CREATE CURSOR tt (代码 C(20), 名称 C(40))
INSERT INTO tt VALUES ("5602", "管理费用")
INSERT INTO tt VALUES ("560201", "差旅费")
INSERT INTO tt VALUES ("56020101", "市内差旅费")
INSERT INTO tt VALUES ("56020102", "外地差旅费")
INSERT INTO tt VALUES ("4001", "财政拨款收入")
INSERT INTO tt VALUES ("400101", "基本支出")
INSERT INTO tt VALUES ("40010101", "人员经费")
INSERT INTO tt VALUES ("40010102", "公用经费")
INSERT INTO tt VALUES ("400102", "项目支出")
INSERT INTO tt VALUES ("4201", "上级补助收入")
INSERT INTO tt VALUES ("420101", "非专项收入")
INSERT INTO tt VALUES ("420102", "专项收入")
INSERT INTO tt VALUES ("4601", "非同级财政拨款收入")
INSERT INTO tt VALUES ("460101", "非专项收入")
INSERT INTO tt VALUES ("460102", "专项收入")
INSERT INTO tt VALUES ("4603", "捐赠收入")
INSERT INTO tt VALUES ("4604", "利息收入")
INSERT INTO tt VALUES ("4605", "租金收入")
INSERT INTO tt VALUES ("4609", "其他收入")
INSERT INTO tt VALUES ("460901", "非专项收入")
INSERT INTO tt VALUES ("460902", "专项收入")
INSERT INTO tt VALUES ("5001", "业务活动费用")
INSERT INTO tt VALUES ("500101", "财政补助费用")
INSERT INTO tt VALUES ("50010101", "基本支出费用")
INSERT INTO tt VALUES ("5001010101", "工资福利费用")
INSERT INTO tt VALUES ("500101010101", "基本工资")
INSERT INTO tt VALUES ("500101010102", "津贴补贴")
INSERT INTO tt VALUES ("50010101010201", "国家津贴")
INSERT INTO tt VALUES ("50010101010202", "国家补贴")
INSERT INTO tt VALUES ("50010101010203", "地方性津补贴")
INSERT INTO tt VALUES ("50010101010204", "高寒缺氧补贴")
INSERT INTO tt VALUES ("50010101010205", "采暖补贴")
INSERT INTO tt VALUES ("50010101010206", "乡镇岗位津贴")
INSERT INTO tt VALUES ("50010101010299", "其他津补贴")
INSERT INTO tt VALUES ("500101010103", "奖金")
INSERT INTO tt VALUES ("500101010104", "其他社会保障缴费")
INSERT INTO tt VALUES ("500101010105", "绩效工资")
INSERT INTO tt VALUES ("50010101010501", "基础性绩效")
INSERT INTO tt VALUES ("50010101010502", "奖励性绩效")
INSERT INTO tt VALUES ("500101010106", "基本养老保险缴费")
INSERT INTO tt VALUES ("500101010107", "职业年金缴费")
INSERT INTO tt VALUES ("500101010108", "基本医疗保险缴费")
INSERT INTO tt VALUES ("500101010109", "住房公积金")
INSERT INTO tt VALUES ("500101010199", "其他工资福利费用")
INSERT INTO tt VALUES ("5001010102", "商品服务费用")
INSERT INTO tt VALUES ("500101010201", "办公费")
INSERT INTO tt VALUES ("500101010202", "印刷费")
INSERT INTO tt VALUES ("500101010203", "咨询费")
INSERT INTO tt VALUES ("500101010204", "手续费")

SELECT 代码, SPACE(200) 科目全称 FROM tt INTO CURSOR tmp READWRITE
SELECT tt
INDEX on 代码 TAG km
SELECT tmp
SCAN
    kmm = SUBSTR(代码,1,4)
    km = kmm
    =SEEK(km,"tt")
    kn = tt.名称
    n = 5
    kmm = SUBSTR(代码,n,2)
    DO WHILE !EMPTY(kmm)
        km = km + kmm   
        =SEEK(km,"tt")
        kn = kn - "-" - tt.名称
        n = n+2
        kmm = SUBSTR(代码,n,2)
    ENDDO
    REPLACE 科目全称 WITH kn
ENDSCAN
BROWSE
RETURN
2019-11-15 14:52
zysoft888
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-11-1
得分:0 
回复 7楼 吹水佬
多谢版主!!!

还有几个问题相求:
1、如何进行两个表的关联查询,如下:
   数据表:  科目代码    借方发生额     贷方发生额
             1001            1000
             4001                            1000
  科目表:   科目代码     科目全称
             1001           现金
             4001           收入

   如何实现这样的查询结果:
           科目代码      科目名称       借方发生额     贷方发生额
             1001        现金               1000
             4001        收入                              1000


2、GRID控件中如何,如果某字符型字段的值比较长,如何实现内容自动折行显示?
2019-11-15 22:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 8楼 zysoft888
参考示例:

CREATE CURSOR 数据表 (科目代码 C(20), 借方发生额 N(14,2), 贷方发生额 N(14,2))
INSERT INTO 数据表 VALUES ("1001", 1000, 0)
INSERT INTO 数据表 VALUES ("4001", 0, 1000)
CREATE CURSOR 科目表 (科目代码 C(20), 科目全称 C(40))
INSERT INTO 科目表 VALUES ("1001", "现金")
INSERT INTO 科目表 VALUES ("4001", "收入abcd123456ABCD")

SELECT 科目表
INDEX on 科目代码 TAG 科目码
SELECT 数据表
SET RELATION TO 科目代码 INTO "科目表"
GO TOP
of = CREATEOBJECT("myForm")
of.show(1)
SET RELATION TO
CLOSE DATABASES ALL
CLEAR ALL
RETURN

DEFINE CLASS myForm as Form
    ADD OBJECT grid1 as myGrid
ENDDEFINE

DEFINE CLASS myGrid as Grid
    RowHeight = 50
    RecordSourceType = 1
    RecordSource = "数据表"
    ColumnCount = 4
    PROCEDURE init
        this.autofit()
        this.Column1.ControlSource = "数据表.科目代码"
        this.Column2.ControlSource = "科目表.科目全称"
        this.Column2.RemoveObject("Text1")
        this.Column2.AddObject("edit1", "editbox")
        this.Column2.Sparse = .F.
        this.Column2.edit1.ScrollBars = 0
        this.Column2.edit1.Visible = .T.
        this.Column3.ControlSource = "数据表.借方发生额"
        this.Column4.ControlSource = "数据表.贷方发生额"
    ENDPROC
    PROCEDURE AfterRowColChange(nColIndex)
        thisform.caption = 科目表.科目全称 &&显示当前记录详细信息
    ENDPROC
ENDDEFINE

用editbox控件可以自动换行显示,但对某些字符串显示效果有点怪。
如果必要性不大,不用editbox,可以用一个类似状态栏的来显示当前记录详细信息。

[此贴子已经被作者于2019-11-16 10:47编辑过]

2019-11-16 10:45
zysoft888
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-11-1
得分:0 
回复 9楼 吹水佬
佩服!!!版主真是高手,这么简短的代码就解决了困扰我好长时间的难题。

想请教一下版主,有没有VFP编程方面的学习资料分享一下,不胜感激!
2019-11-16 17:22



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




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

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