2,748
社区成员




应该是连接中断了,可能是这台电脑的系统设置问题,如:经过多长时间无人操作后,电脑自动休眠,激活后网络连接就断开了,所以出现你的问题。
解决方法:
1、设置系统不休眠或间隔时间延长,这个在 Windows 控制面板 -> 电源管理 中设置。
或
2、
Public gcConnectString,gnHandle
gcConnectString="DRIVER=SQL Server;SERVER=计算机名或IP地址;UID=用户名;PWD=密码;DATABASE=数据库名"
gnHandle=Sqlstringconnect(gcConnectString)
* 以上是程序启动时连接代码
* 然后每次操作前均检查一下连接是否中断了,可以把这部分写成自定义函数。
Local lnSqlState As Integer
Try
lnSqlState=SQLExec(gnHandle,'')
Catch
lnSqlState=-1
Endtry
If lnSqlState<1 && 如果无效则重新连接
SQLSetprop(0,"DispLogin" ,3)
gnHandle=Sqlstringconnect(gcConnectString)
If gnHandle<0 && 重新连接失败
Messagebox('服务器连接错误!'+Space(5),48,'信息提示')
Return
Endif
EndIf
* 可以把这部分写成自定义函数
* 连接正常或重新连接成功执行相应的 SQLExec(gnHandle,'相应的语句')
1、改成这样试试:
* 略去删除所有数据代码
Select 远程视图表
llUpdated=Tableupdate(.T.,.F.)
If !llUpdated
Messagebox("删除失败!操作将还原。",48,"信息提示")
Tablerevert(.T.)
Endif
Requery("远程视图表")
If llUpdated And Reccount("远程视图表")>0
Messagebox("请将数据存入系统后,再退出",0)
Return
Endif
Thisform.Release
2、不像你说的代码出的问题,你找一找是不是其他地方报的错(其他地方有更改,未及时更新或回滚)。
3、解决问题2,并在主程序开头加以下代码:
SQLSetprop(0,"DisconnectRollback",.T.) && 连接断开时未决的事务回滚(Rollback) (手动事务时手效)不能访问被选定的表 (错误 1152)
试图在 32K 工作区范围之外选择一个表或试图引用没打开表中的文件变量。该错误可能在下列条件之下发生:
ComboBox 或 ListBox 控件 RowSource 属性指定的表或临时表被关闭。
如果想要关闭一个 ComboBox 或 ListBox 控件 RowSource 属性指定的表或临时表,在关闭该表或临时表之前完成任一下列动作:
设置 RowSource 属性为一个空值 ("")。
-或者-
释放该表单所包含的 ComboBox 或 ListBox 控件。
执行了一个重建 RowSource 属性指定的表或临时表的 SQL SELECT 指令,当该 SQL SELECT 指令运行时,Visual FoxPro 先关闭然后再打开该表。
为避免该错误,设置 RowSource 属性为一个空值(""),执行 SQL SELECT 指令,再重新设置 RowSource 属性为它早先的值。