用VB6编写更新SQL数据库的数据不成,为何?
我用VB6.0編寫更新SQL資料庫資料的程式,為什麼老是提示rs.Edit一句出錯,錯誤是Edit未找到方法或資料成員?程式和注釋如下:
Private Sub cmdEdit1_Click()
Dim conn As New adodb.Connection
Dim rs As New adodb.Recordset
Set conn = New adodb.Connection
Set rs = CreateObject( "adodb.recordset ")
conn.ConnectionString = "Driver={SQL Server};server=XICHEN;uid=sa;pwd=1234;database=disc "
conn.Open
rs.Open "select * from disc_name ", conn, adOpenForwardOnly, adLockReadOnly
Dim Result() As String
Dim EditID As String
Result = Split(List2.Text, ", ") ‘List2是一個列表框,有形如1,aa '和2,bb及3,cc這樣的資料,Result就是取1,2或3
EditID = Result(0) ‘ 把1,2,或3賦給EditID
rs.MoveFirst
Do While Not rs.EOF
If rs.Fields( "disc_name_id ").Value = EditID Then ‘rs.Fields '( "disc_name_id ")是disc_name表的第一個欄 位。
' 該句的意思是找到Id ' 為EditID的記錄。
rs.Edit ‘ 開始更新,這裏出 '錯
rs.Fields( "discname ").Value = Text4.Text ‘ rs.Fields '( "discname ")是disc_name表 '的第二個欄位,將這個欄位 '的值改成Text4裏輸入的值
rs.Update
Debug.Print "discname= " & rs.Fields( "disc_name ").Value
Exit Do
End If
rs.MoveNext
Loop
MsgBox "已成功修改盤名稱! "
rs.Close
End Sub
[解决办法]
更有效率的方法:
Dim conn As New adodb.Connection
Set conn = New adodb.Connection
conn.ConnectionString = "Driver={SQL Server}; "_
& "server=XICHEN;uid=sa;pwd=1234;database=disc "
conn.Open
Dim Result() As String
Dim EditID As String
Result = Split(List2.Text, ", ") ‘List2是一個列表框,有形如1,aa '和2,bb及3,cc這樣的資料,Result就是取1,2或3
EditID = Result(0)
conn.execute "update disc_name set discname= ' "& trim(Text4.Text) & " ' " _
& " where disc_name_id= ' "& EditID & " ' "
set conn=nothing