注册 登录
编程论坛 VFP论坛

请教关于CA的使用问题

fanjinyu9108 发布于 2024-06-02 19:11, 460 次点击
创建ca,SelectCmd = "select * from shebei_zl_cs where id in (select bh from t)" ,其中shebei_zl_cs是sql远程表,t是本地表,前年我发了一个帖子,当时的版主说可以将本地表混在远程表中使用,但是我试了一下,没有成功,以下是我的代码,请师傅们帮我看下,能否混用?以下是CA的代码
程序代码:
CREATE CURSOR t(bh i)
INSERT INTO t (bh) values(207)  &&本地临时表
con = Sqlstringconnect([Driver={SQL Server};Server=PC-20221207NOOB;UID=sa;PWD=wjh-6552907;Database=yksb])
Public ca
ca=Createobject("CursorAdapter")
With ca
    .Alias = 'cs3'  &&别名
    .Datasource=con  &&建立的连接
    .DataSourceType = 'odbc'
    .SelectCmd = "select * from shebei_zl_cs where id in (select bh from t)"   &&sele 语句
    .KeyFieldList = 'id'  &&关键字
    .Tables = "cs3"  &&要修改的表
    .UpdatableFieldList = "id,id_zl" &&修改的字段
    .UpdateNameList ="id cs3.id,id_zl cs3.id_zl"   &&对应修改表的字段   这里必须包含关键字

    .CursorFill()   &&
Endwith
Select cs3      &&程序运行到这里出错
CursorSetProp("buffering",3)
browse



[此贴子已经被作者于2024-6-2 19:17编辑过]

10 回复
#2
csyx2024-06-02 21:32
混用本地和远程表?怎么可能,明显不合逻辑
#3
yiyanxiyin2024-06-03 09:44
你的语句需要改成: select * from shebei_zl_cs where id in (select bh from [VFP连接名]..[VFP用户].t)

[VFP连接名]为你事先在Sqlserver中通过ole db建立的vfp连接名,  上面的语句需要先在sqlserver里面测试通过然后再调试你的vfp代码


#4
fanjinyu91082024-06-04 20:39
版主您好,能说得详细点吗

#5
fanjinyu91082024-06-04 20:40
临时本地表怎么创建连接?在sqlserver里面还能创建连接? 通常我们所说的VFP连接不是在VFP数据库里面建立和其他数据库的连接吗

[此贴子已经被作者于2024-6-4 20:55编辑过]

#6
fanjinyu91082024-06-04 21:05
我在SQLSERVER里面找了下,没有找到可以建立连接的地方啊
#7
yiyanxiyin2024-06-05 09:46
只有本站会员才能查看附件,请 登录
#8
fanjinyu91082024-06-06 07:01
非常感谢,但是还是有个问题,vfp数据库是不需要用户名的密码的啊
#9
easyppt2024-06-06 08:03
你的思路和方向错了哦

你的需求应该是把  : select bh from t  在CA之前 把 bh枚举出来 作为字符串形式,放到 SQL里。

比如最终的SQL:  .SelectCmd = "select * from shebei_zl_cs where id in ('bh01','bh02','bh03')"


#10
fanjinyu91082024-06-06 14:58
easyppt师傅,确实是这个意思,但是编号的数量是不可确定的啊,因为临时表T也是根据不确定的条件从SQL远程查询出来的啊,我想换一种思路,就是用SQLSERVE存储过程,直接在SQLSERVER做二次查询,这样好像效率高些,但是有个问题,vfp能从SQLSERVER存储过程能同时接受2个表吗?

[此贴子已经被作者于2024-6-6 14:59编辑过]

#11
easyppt2024-06-07 09:32
动态IDlist的处理并更新CA的相关属性。放在调用CA之前执行。
这个方向不会错的哦,自己好好研究一下吧,方向错了就是南辕北辙
1