注册 登录
编程论坛 VFP论坛

在数据环境里使用的CA,连接SQL总会有奇怪的问题

sw3929 发布于 2023-08-04 21:13, 915 次点击
折腾了好长时间了,总结如下:
表单里有六个表,都是用表单的数据环境里建立的CA方式,连接SQL2000数据库。其中有三个表字段名很多,大约每个表有58个中文字段名,在SQL服务器里这三个表也是五个字的中文表名。
问题出在连接方式上。
1、在数据环境的数据源里建立好连接,各表使用数据环境的数据源,则三个CA表会出错,不能生成。
2、先建立一个SQL连接句柄,在每个CA表的生成器里使用这个连接句柄,则和上述一样。除非启动表单时,在中间中断一下再继续则正常,如果直接运行,则要么不生成表,要么报一个连接忙,但能生成表。
3、在数据环境里的每个CA表的生成器里都使用连接字符串,则正常。
4、先手动建立一个连接SQL的数据源,即用户DSN,然后在数据环境里的每个CA表里使用这个数据源,则正常。
我觉得VFP肯定存在Bug,不知谁有这方面的经验。我现在使用手动建立数据源的方式,感到老土了,不太好意思出手!但没办法。希望能用连接句柄最好,因为将来更改服务器时,只需维护连接句柄就行了,还不用手动建立数据源。
另有一个表单只有一个简单的CA,无论何种方法都正常。
4 回复
#2
easyppt2023-08-05 09:43
一直用CA,没任何问题
#3
sw39292023-08-06 12:51
CA存在bug,比如在表单CA生成器里设odbc连接,如果先设字符串,后来改用句柄,会发现无效,在其init里可看到根本没改,必须要先初始化init才行,说明了CA并不完善。
#4
kangss2023-08-07 12:48
没见哪个大神说ca有bug。

ca用起来太复杂,不是十分了解它的话,不容易控制它。
#5
厨师王德榜2023-08-07 16:11
代码供参考:
程序代码:

* 这一段放在 Main.Prg
PUBLIC loConn as ADODB.Connection

LOCAL linkstr as String
    linkstr='provider=SQLOLEDB.1;' + ;
        'data source=192.168.8.130;' + ;
        'initial catalog=dataBaseName;' + ;
        'uid=user;' + ;
        'pwd=password;' + ;
        'trusted_connection=no'

IF VARTYPE(loConn ) <> 'O' THEN
    loConn = createobject('ADODB.Connection')
ENDIF
SQLSETPROP(0, "DispLogin",3)
TRY
    loConn.ConnectionString =linkstr
    loConn.Open()
CATCH TO err
    MESSAGEBOX(err.message ,64,'Try to Link...')
ENDTRY
* Main.prg 结束

* 这一段放在Form的 [color=#0000FF]Load()中...[/color]
IF loConn.State > 0 THEN
? 'loConn=' + STR(loConn.State)

 * ......定义你的各CA(只要这些CA共用loConn连接的话...)
ENDIF

我自己一直是这样用的,没有问题.

[此贴子已经被作者于2023-8-7 16:14编辑过]

1