非常感谢online以及yinweihong帮助我一无所知的VB新手完成了一个小的工具!基本功能都已实现。但是还有几个小问题请几位帮忙完善一下(:
问题1:我在执行脚本的时候如果正确以下代码没有问题,但是如果脚本有问题就会报错并结束程序。如何做可以做到提示检查选择的数据库以及脚本而且不会结束程序。
比如脚本文件内容为:update GLname set seq = 3 where seq = 1 而我选择的数据库中没有“GLname”的表。系统提示错误确定后程序就结束了。
Private Sub Command3_Click()
Call Command1_Click
If txtdata.Text = "" Then
MsgBox "请选择选择数据库!", vbCritical, "登陆提示"
txtdata.SetFocus
Exit Sub
End If
Open App.Path & "\" & "update.sql" For Input As #1 ' 打开输入文件。
Do While Not EOF(1) ' 循环至文件尾。
Input #1, sqljb ' 将数据读入变量。
Loop
Close #1 ' 关闭文件。
conn.Execute sqljb
MsgBox "清除成功", vbOKOnly + vbInformation, "提醒"
End Sub
问题1:我在执行脚本的时候如果正确以下代码没有问题,但是如果脚本有问题就会报错并结束程序。如何做可以做到提示检查选择的数据库以及脚本而且不会结束程序。
比如脚本文件内容为:update GLname set seq = 3 where seq = 1 而我选择的数据库中没有“GLname”的表。系统提示错误确定后程序就结束了。
Private Sub Command3_Click()
Call Command1_Click
If txtdata.Text = "" Then
MsgBox "请选择选择数据库!", vbCritical, "登陆提示"
txtdata.SetFocus
Exit Sub
End If
Open App.Path & "\" & "update.sql" For Input As #1 ' 打开输入文件。
Do While Not EOF(1) ' 循环至文件尾。
Input #1, sqljb ' 将数据读入变量。
Loop
Close #1 ' 关闭文件。
conn.Execute sqljb
MsgBox "清除成功", vbOKOnly + vbInformation, "提醒"
End Sub
解决方案 »
- 请问,在VB6中,复合框控件值改变怎么不执行Change事件呀?
- 请问ms script control的函数在winxp下为何比win98、win2000、win2003下运行慢的多?
- 怎么样添加系统配置文件?
- 滚动条问题? : ) 穷分了
- 谢谢谁可提供vsview 8.0 和vs flexgrid pro 8.0?
- 简体中文版下写的程序怎么移植到繁体中文版下急急!
- 查询时怎样用进度条,急等!!
- 关于vb中生成弹出窗口并操作
- 如何用SQL Enterprise Manager 运行pubs数据库中的Accounts.sql脚本
- #####hnlzh(吸海垂虹)####
- DCOM的问题,Server端为ActiveX EXE,客户端调用时,如果调用频繁....
- 如何限制lostfocus事件?
Private Sub OpenConnection()
On Error GoTo EH
Dim ser, user, pass, ufdata
ser = txtser
user = txtuser
pass = txtpass
ufdata = txtdataSet conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "driver={SQL Server};" & "server=" & ser & ";uid=" & user & ";pwd=" & pass & ";database=" & ufdata & ""
conn.Open
Exit Sub
EH:
MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"
End SubPrivate Sub Command2_Click()
Call OpenConnection
End Sub
加上错误处理。on error ... , 具体可查联机帮助。
Command1_Click是检测出该SQL 服务器上所有数据库么?
曾给了检测出特定数据库中的数据表代码
你既然要更新GLname表 怎么该表又会不存在呢?
2.
conn.Open
后加一句msgbox "连接成功"
eixt sub去掉
On Error GoTo EH
conn.Execute sqljb
MsgBox "清除成功", vbOKOnly + vbInformation, "提醒"
EH:
MsgBox "连接错误!表可能不存在", vbCritical, "登陆提示"
End Sub你试试啊或者先检查表是否存在
conn.open "你的连接"
set rs=conn.execute("GLname",,adcmdtabledirect)
if err.number<>0 then
msgbox "表不存在"
else
msgbox "表存在"
end if
错误1:我运行程序就检查OpenConnection的连接属性(如果user,pass属性“txet”为空正常如果user,pass属性“txet”不为空而且连接不正确程序就“MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"”
)为什么?
错误2:在执行Command2_Click(测试连接按钮)时我想做到如果OpenConnection正确就提示"连接成功"如果不成功就“MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"”
错误3:如果连接成功后执行Command3_Click(执行脚本)有错误的话(比如脚本文件内容为:update GLname set seq = 3 where seq = 1 而我选择的数据库中没有“GLname”的表。系统提示错误确定后程序就结束了。)如何修改可以做到提示检查选择的数据库以及脚本而且不会结束程序。Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Const DB_PROVIDER = "SQLOLEDB"
Dim sqljb As String
------------------------------------------------------------------------
Private Sub OpenConnection()
On Error GoTo EH
Dim ser, user, pass, ufdata
ser = txtser
user = txtuser
pass = txtpass
ufdata = txtdataSet conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "driver={SQL Server};" & "server=" & ser & ";uid=" & user & ";pwd=" & pass & ";database=" & ufdata & ""
conn.Open
Exit Sub
EH:
MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"
End Sub
-----------------------------------------------------------------------------
Private Sub Command2_Click()
Call OpenConnection
End Sub
-----------------------------------------------------------------------------
Private Sub Command3_Click()
Call OpenConnection
If txtdata.Text = "" Then
MsgBox "请选择选择数据库!", vbCritical, "登陆提示"
Exit Sub
End If
Open App.Path & "\" & "update.sql" For Input As #1 ' 打开输入文件。
Do While Not EOF(1) ' 循环至文件尾。
Input #1, sqljb ' 将数据读入变量。
Loop
Close #1 ' 关闭文件。
conn.Execute sqljb
MsgBox "清除成功", vbOKOnly + vbInformation, "提醒"
End Sub
-------------------------------------------------------------------------------
Private Sub ListAllServerDatabases()
Dim rsDB As ADODB.Recordset
Dim i As Integer
txtdata.Clear
i = 1
Set rsDB = conn.OpenSchema(adSchemaCatalogs)
While Not rsDB.EOF
txtdata.AddItem rsDB!CATALOG_NAME
rsDB.MoveNext
i = i + 1
Wend
rsDB.Close
Set rsDB = Nothing
End Sub
--------------------------------------------------------------------------------
Private Sub Form_Load()
Call OpenConnection
Call ListAllServerDatabases
End Sub
Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Const DB_PROVIDER = "SQLOLEDB"
Dim sqljb As StringPrivate Sub OpenConnection()
On Error GoTo EH
Dim ser, user, pass, ufdata
ser = txtser
user = txtuser
pass = txtpass
ufdata = txtdataSet conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "driver={SQL Server};" & "server=" & ser & ";uid=" & user & ";pwd=" & pass & ";database=" & ufdata & ""
conn.Open
MsgBox "连接成功"
Exit Sub
EH:
MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"
End Sub
'-----------------------------------------------------------------------------
Private Sub Command2_Click()
Call OpenConnection
End Sub
'-----------------------------------------------------------------------------
Private Sub Command3_Click()
'Call OpenConnection
On Error GoTo EH
If txtdata.Text = "" Then
MsgBox "请选择选择数据库!", vbCritical, "登陆提示"
Exit Sub
End If
Open App.Path & "\" & "update.sql" For Input As #1 ' 打开输入文件。
Do While Not EOF(1) ' 循环至文件尾。
Input #1, sqljb ' 将数据读入变量。
Loop
Close #1 ' 关闭文件。
conn.Execute sqljb
MsgBox "清除成功", vbOKOnly + vbInformation, "提醒"
Exit Sub
EH:
MsgBox "更新语句不成功,请检查数据库及sql语句是否正确", vbCritical, "登陆提示"
End Sub
)为什么?因为sqlserver数据库默认的用户名是sa,密码是空
运行后界面一般这样输入
txtser.text="你的sqlserver数据库服务器名"
txtuser.text="sa"
txtpass.text=""
txtdata.text="你的数据库名"
现在程序执行后首先会弹出“连接成功”的提示。但是
我的:
txtser.text="数据库服务器名"
txtuser.text="sa"
txtpass.text=""
txtdata.text="你的数据库名"
还没输呢?
我只想在执行Command2_Click时判断错误或对并相应提示。
如果不执行Command2_Click而直接执行Command3_Click时Command3_Click可以先检查Command2_Click的结果是否正确如果正确不提示直接执行,如果错误提示“MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"
”不知可不可以。
txtser.text="数据库服务器名"
txtuser.text="sa"
txtpass.text=""
txtdata.text="你的数据库名"
都唯空时执行Command2_Click(连接测试)也提示连接成功只有txtuser.text="sa",txtpass.text=""不为空时才会MsgBox "连接错误!请检查用户名密码,服务器名称以及数据库是否有误。", vbCritical, "登陆提示"
有啊!我就是按照你的代码测试的。
1.测试结果运行程序先弹出“连接成功”消息框(不管连接错于对)然后才返回到主界面。
2.如果我的连接属性没有问题,直接执行Command3_Click(执行脚本)的话提示错误“更新语句不成功,请检查数据库及sql语句是否正确”必须先执行Command2_Click(测试连接)在执行Command3_Click(执行脚本)才能成功!