这种怪事谁遇到过?????

时间:2022-05-25 20:58:00
我做了一个C/S模式的小程序。我误点了一个安装包里面的一个类似于VB生成的.EXE的文件(是在Support文件夹中的),接着我打开我做的小程序就出错了。原因是我的界面上有调用到SQL中的内容。所以就打不开我的程序了。

但是奇怪的事,我的客户端的人能够打开啊?就是我所在的服务器上的程序打不开。这真是让我头疼。大家帮我想想办法这是怎么回事???

千万不要让我重新装操作系统
:)
在线期待大家的好消息!

15 个解决方案

#1


提示什么错误呀?
你用的什么方法连数据库呀?是ADO?

#2


是的
在cnn.open Connectstring的时候没有错误发生。但是在好像打开记录集的时候发生错误了。

错误提示是:
实时错误'91'
对象变量或with块变量未设置

#3


只能UP

#4


这问题很难吗?

相信大家还是的能力

#5


能不能把界面装载的代码贴出来让大家卡看

#6


UP

#7


错误提示是:
实时错误'91'
对象变量或with块变量未设置
这样的错误,建议先检查语法,检查if语句和select语句,看看是否完整,你可以把代码贴出来给大家看看呀

#8


可是我什么都没有动过源程序啊。到别人的机子上去装一下连接到服务器(即我的计算机)。一切都成功的啊
可是我自己的机子上却运行不了。真是让我头疼

Sub Main()
Dim fLogin As New frmLogin
Set fLogin = New frmLogin
    fLogin.Show vbModal
    If Not fLogin.Ok Then
        End
    End If
    Unload fLogin
Set fMainForm = New frmMain
    fMainForm.Show
    
End Sub
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
'定义字符串
Dim sTokens() As String
    State = True
On Error GoTo ExecuteSQL_Error
On Error Resume Next
'用Split 函数来产生一个包含各个子串的数组
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
    cnn.Execute SQL
    MsgString = sTokens(0) & "query successful"
Else
    Set rst = New ADODB.Recordset
    rst.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    Set ExecuteSQL = rst
***************************************************************
    MsgString = "查询到" & rst.RecordCount & "条记录"
上面一句是检查是否查询到记录用的
就在这一句的时候,我把鼠标移过去rst.RecordCount上出现了上述的错误。接下去运行了,直到跳出了,这个模块,运行到Form1中。报了上述的错误。
End If

ExecuteSQL_Exit:
'清空数据集对象
    Set rst = Nothing
'中断连接
    Set cnn = Nothing
    Exit Function
ExecuteSQL_Error:
    MsgString = "查询错误:" & Err.Description
    'Debug.Print MsgString
    MsgBox "你没有连接到服务器上,请与管理员联系", vbOKOnly + vbExclamation, "警告"
    State = False
    If frmLogin.Ok Then
        Exit Function
    End If
    'Debug.Print Err.Description
    Resume ExecuteSQL_Exit

End Function

Public Function ConnectString() As String
ConnectString = "File Name=c:\Program Files\Common Files\ODBC\Data Sources\HTK.dsn;"

End Function

***************************************
窗体代码
Private Sub Form_Load()
Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset
txtSQL = "select user_ID from user_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Not mrc.EOF Then    ****************从模块中跳到这里,报出了上述错误
    Do While Not mrc.EOF
        cboItem.AddItem Trim(mrc.Fields(0))
        mrc.MoveNext
    Loop
    cboItem.ListIndex = 0
Else
    MsgBox "请与管理员联系取得用户名", vbOKOnly + vbExclamation, "警告"
    Exit Sub
End If
mrc.Close
Ok = False
miCount = 0
End Sub

麻烦各位了。在线等待中....

#9


仔细看看你的流程,可能在某个时段发生错误,比如recordset关闭了,但你又要去调用。。。。

#10


重装mdac

#11


没有啊,以前也都好好的啊
我的客户端也好的啊
就是我的机子上有问题。但是有不知道出在那里。

#12


重起机器

#13


我不知道重启多少遍了,可还是不行啊
我试着重装VB6.0试试看!

#14


1.先检查语法,检查if语句和select语句,看看是否完整
2.看看mdac2.5/2.6

#15


果然是我的操作系统出了问题,我把它覆盖了一遍就好了。

谢谢各位对我问题的关注。

#1


提示什么错误呀?
你用的什么方法连数据库呀?是ADO?

#2


是的
在cnn.open Connectstring的时候没有错误发生。但是在好像打开记录集的时候发生错误了。

错误提示是:
实时错误'91'
对象变量或with块变量未设置

#3


只能UP

#4


这问题很难吗?

相信大家还是的能力

#5


能不能把界面装载的代码贴出来让大家卡看

#6


UP

#7


错误提示是:
实时错误'91'
对象变量或with块变量未设置
这样的错误,建议先检查语法,检查if语句和select语句,看看是否完整,你可以把代码贴出来给大家看看呀

#8


可是我什么都没有动过源程序啊。到别人的机子上去装一下连接到服务器(即我的计算机)。一切都成功的啊
可是我自己的机子上却运行不了。真是让我头疼

Sub Main()
Dim fLogin As New frmLogin
Set fLogin = New frmLogin
    fLogin.Show vbModal
    If Not fLogin.Ok Then
        End
    End If
    Unload fLogin
Set fMainForm = New frmMain
    fMainForm.Show
    
End Sub
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
'定义字符串
Dim sTokens() As String
    State = True
On Error GoTo ExecuteSQL_Error
On Error Resume Next
'用Split 函数来产生一个包含各个子串的数组
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
    cnn.Execute SQL
    MsgString = sTokens(0) & "query successful"
Else
    Set rst = New ADODB.Recordset
    rst.Open SQL, cnn, adOpenKeyset, adLockOptimistic
    Set ExecuteSQL = rst
***************************************************************
    MsgString = "查询到" & rst.RecordCount & "条记录"
上面一句是检查是否查询到记录用的
就在这一句的时候,我把鼠标移过去rst.RecordCount上出现了上述的错误。接下去运行了,直到跳出了,这个模块,运行到Form1中。报了上述的错误。
End If

ExecuteSQL_Exit:
'清空数据集对象
    Set rst = Nothing
'中断连接
    Set cnn = Nothing
    Exit Function
ExecuteSQL_Error:
    MsgString = "查询错误:" & Err.Description
    'Debug.Print MsgString
    MsgBox "你没有连接到服务器上,请与管理员联系", vbOKOnly + vbExclamation, "警告"
    State = False
    If frmLogin.Ok Then
        Exit Function
    End If
    'Debug.Print Err.Description
    Resume ExecuteSQL_Exit

End Function

Public Function ConnectString() As String
ConnectString = "File Name=c:\Program Files\Common Files\ODBC\Data Sources\HTK.dsn;"

End Function

***************************************
窗体代码
Private Sub Form_Load()
Dim txtSQL As String
Dim MsgText As String
Dim mrc As ADODB.Recordset
txtSQL = "select user_ID from user_Info"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Not mrc.EOF Then    ****************从模块中跳到这里,报出了上述错误
    Do While Not mrc.EOF
        cboItem.AddItem Trim(mrc.Fields(0))
        mrc.MoveNext
    Loop
    cboItem.ListIndex = 0
Else
    MsgBox "请与管理员联系取得用户名", vbOKOnly + vbExclamation, "警告"
    Exit Sub
End If
mrc.Close
Ok = False
miCount = 0
End Sub

麻烦各位了。在线等待中....

#9


仔细看看你的流程,可能在某个时段发生错误,比如recordset关闭了,但你又要去调用。。。。

#10


重装mdac

#11


没有啊,以前也都好好的啊
我的客户端也好的啊
就是我的机子上有问题。但是有不知道出在那里。

#12


重起机器

#13


我不知道重启多少遍了,可还是不行啊
我试着重装VB6.0试试看!

#14


1.先检查语法,检查if语句和select语句,看看是否完整
2.看看mdac2.5/2.6

#15


果然是我的操作系统出了问题,我把它覆盖了一遍就好了。

谢谢各位对我问题的关注。