欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

请教十豆三老师关于sql远程视图连接数据源遇到的有关问题

更新时间: 2014-01-05 02:27:55 责任编辑: Author_N1

 

请问十豆三老师关于SQL远程视图连接数据源遇到的问题。
十豆三老师:
    经常得到你的指导,非常感激您!
    我上次向您提过一个问题,就是 运行SQL远程视图(通过资源管理器中的ODBC连接数据源)的软件中经常出现以下出错提示:

    连接错误:[Microsoft][ODBC SQL Server Driver]通讯连接失败”

    出现这个错误提示后,数据源不能连接(连接中断),软件处于死机状态,必须强行关机。
这个问题一直得不到解决。
    您上次曾教我一个方法,每次对远程视图进行连接操作前,先检查一下与数据源的连接是否中断,如中断则重新执行连接数据源命令。为此,我编写了一个程序文件:
程序文件名:LJSQLSJK.prg
程序内容:
Local lnSqlState As Integer
Try
  lnSqlState=SQLExec(gnHandle,'')   注:gnHandle是打开软件时取得的“连接句柄”
Catch
  lnSqlState=-1
Endtry
If lnSqlState<1
  SQLSetprop(0,"DispLogin" ,3)
  gnHandle=Sqlstringconnect(“数据源连接字符串”)
  If gnHandle<0
    Messagebox('数据源连接中断,软件被迫退出!'+Space(5),48,'信息提示')
    quit
  Endif
EndIf

    在运行软件中每次对远程视图进行连接操作前,先运行do LJSQLSJK 。
    但现在发现一个问题:运行do LJSQLSJK后,仍出现“ 连接错误:[Microsoft][ODBC SQL Server Driver]通讯连接失败””的出错提示框。
    按理,运行do LJSQLSJK后,如数据源连接中断,软件将被迫退出,但软件并没有退出,这说明数据源连接并没有中断,那又为什么仍出现“ODBC通讯连接失败””的出错提示框呢?
    Sqlstringconnect(数据源连接字符串)命令取得连接句柄是对运行SQLExec(gnHandle, “SQL语句”)用SPT编程需要的,而我用的却是SQL远程视图,远程视图与SPT这二者之间有没有必然的联系。是否重新执行Sqlstringconnect(数据源连接字符串)命令重新取得连接句柄成功后,就可以确保SQL远程视图连接数据源成功?
   敬请您指导,不胜感激!

--参考方法--
你的 LJSQLSJK.prg 只能检测 gnHandle 句柄的有效性,这个 gnHandle 必须是视图所有句柄才有意义。
如:
* LJSQLSJK.prg 改为
Lparameters tcViewName
lnViewConn=CursorGetProp("ConnectHandle",tcViewName)
Local lnSqlState As Integer
Try
lnSqlState=SQLExec(lnViewConn,'')
lnSqlState=0
Catch
lnSqlState=-1
Endtry
If lnSqlState<0
* SQLSetprop(0,"DispLogin" ,3) && 此行代码如果在主程序开头已设置了,以后不用重复设置了。
* Use 视图名 In 0 && 此处重新打开视图
Endif

检测时:Do LJSQLSJK With '视图名'
--参考方法--
如果视图与数据源断开,那被打开的视图也没有意义了,所以我上面又重新打开了视图,目的是重新取得连接。
需你测试一下

select &tcViewName   
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:27:55
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10137/
本文WWW.DOC100.NET DOC100.NET版权所有。