标题:想做一个SPT属性设置的通用程序,请教怎么做?
只看楼主
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
结帖率:88.5%
已结贴  问题点数:20 回复次数:11 
想做一个SPT属性设置的通用程序,请教怎么做?
如题,想做一个SPT属性设置的通用程序,比如先输入如下代码:
bd_t='c_t' &&本地表
yc_t='fy'  &&远程表
zd='id,area,hw,pz,qm,zm,kp_l,kp_kg,zz_l,cy1' &&本地表的字段内容,并且与远程表的字段名完全一致
然后执行一个通用程序,执行后,得到下面的结果:
SELECT c_t
CURSORSETPROP("tables","fy","c_t")
CURSORSETPROP("keyfieldlist","id","c_t")
CURSORSETPROP("updatablefieldlist","id,area,hw,pz,qm,zm,kp_l,kp_kg,zz_l,cy1","c_t")
yy='id fy.id,area fy.area,hw fy.hw,pz fy.pz,qm fy.qm,zm fy.zm,kp_l fy.kp_l,kp_kg fy.kp_kg,zz_l fy.zz_l,cy1 fy.cy1'
CURSORSETPROP("updatenamelist",yy,"c_t")
CURSORSETPROP("sendupdate",.t.,"c_t")
CURSORSETPROP("wheretype",2)
cursorsetprop("buffering",5)  &&设置表缓冲
其中bd_t,yc_t,zd相当于三个变量,通过执行程序,得到下面的结果,请教如何实现?

搜索更多相关主题的帖子: 通用 执行 结果 字段 属性 
2022-01-06 08:00
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:10 
这种要求,还是做成类比较好,因为类的属性可以保存一些关键信息.大致步骤有:
定义类的一些属性:
连接字串, 远程表名称.本地表名称,
定义类的方法:
连接()
断开()
获取远程表结构()
获取远程表数据()
......
错误处理()
定义好后,直接创建类的实体,再调用类方法就好了,这个比你做通用程序要好用得多.
2022-01-06 10:04
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
非常感谢厨师王德榜的解答,但是不管是用类,还是用程序,都要处理以下问题,比如:
bd_t='c_t' &&本地表
yc_t='fy'  &&远程表
zd='id,area,hw,pz,qm,zm,kp_l,kp_kg,zz_l,cy1'

变成如下:
'id fy.id,area fy.area,hw fy.hw,pz fy.pz,qm fy.qm,zm fy.zm,kp_l fy.kp_l,kp_kg fy.kp_kg,zz_l fy.zz_l,cy1 fy.cy1'
请问这个怎么弄

   
2022-01-08 11:00
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:10 
这是要把本地表的数据插入到远程表里吗?
2022-01-08 11:09
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
谁能通过小程序帮我解决3楼的问题,我的思路是先要把ZD这个变量的内容一个一个抽取出来,但是怎么抽取我还不会
2022-01-08 20:47
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
变量 zd='id,area,hw,pz',如何通过转换,变成临时表的四条记录?记录内容分别是。第一条记录:id   第二条记录:area 第三条记录:hw 第四条记录:pz。变量zd的内容可能多,也可能少
2022-01-08 20:59
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
程序代码:
LOCAL i,xfields[1],newzd
bd_t='c_t' &&本地表
yc_t='fy'  &&远程表
zd='id,area,hw,pz,qm,zm,kp_l,kp_kg,zz_l,cy1'

alines(xfields,zd,2,',')
newzd = ''
FOR i=1 TO alen(xfields)
    newzd = newzd + ',' + xfields[i] + ' ' + yc_t + '.' + xfields[i]
ENDFOR 

newzd = SUBSTR(newzd,2)
MESSAGEBOX( newzd)
* 上面是3楼要的吧

*下面是6楼要的吧
LOCAL xfile
xfile = SYS(2015)
CREATE CURSOR &xfile (zdname varchar(10))

FOR i=1 TO alen(xfields)
    INSERT INTO &xfile (zdname) VALUES (xfields[i])
ENDFOR 

SELECT * FROM &xfile


[此贴子已经被作者于2022-1-8 21:53编辑过]

2022-01-08 21:49
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
非常感谢laowan001师傅的解答,这个正是我想要的,问题还没有完全解决,遇到不会的,还会继续提问,再次感谢
2022-01-09 07:36
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
再次感谢2位版主的解答,厨师王德榜师傅的解答有些高级,我还要慢慢揣摩,laowan001师傅的解答可以解决目前的问题,经过测试,完全通过。
2022-01-10 09:10
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:644
专家分:20
注 册:2014-1-16
得分:0 
对了,忘了请教厨师王德榜师傅,如果做成类的话,用什么类型的类?
2022-01-10 09:16



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




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

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