Private Sub Command1_Click()
Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
db.ConnectionString = "driver={sql server};server=(local);uid=sa;pwd=sa;database=WXCB"
db.Open
If Trim(text2.Text = "") Then
MsgBox "舊密碼不能為空,請重新輸入!", vbOKOnly + vbExclamation, "警告"
text2.Text = ""
text2.SetFocus
Exit Sub
End If
If Trim(Text3.Text = "") Then
MsgBox "新密碼不能為空,請重新輸入!", vbOKOnly + vbExclamation, "警告"
Text3.Text = ""
Text3.SetFocus
Exit Sub
End If
If Text3.Text <> Text4.Text Then
MsgBox "兩次輸入的新密碼不同,請重新輸入!", vbOKOnly + vbExclamation, "警告"
Text3.Text = ""
Text4.Text = ""
Text3.SetFocus
Exit Sub
Else
sql = "select * from user1 where 用戶名 ='" & text1.Text & "'"
rs.Open sql, db, adOpenStatic, adLockReadOnly '打開回傳的可用記錄集
If rs.EOF = True Then
MsgBox "沒有這個用戶", vbOKOnly + vbExclamation, ""
text1.Text = ""
text2.Text = ""
Text3.Text = ""
Text4.Text = ""
text1.SetFocus
Else
If Trim(rs.Fields("密碼")) <> Trim(text2.Text) Then
MsgBox "舊密碼不對,請重新輸入!", vbOKOnly + vbExclamation, "警告"
text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text3.SetFocus
Else
MsgBox "密碼修改成功!", vbOKOnly + vbInformation, "提示"
text1.Text = ""
text2.Text = ""
Text3.Text = ""
Text4.Text = ""
text1.SetFocus
End If
End If
End If
rs.Close
Set rs = Nothing
End Sub
顯示密碼修改成功,但是 資料沒變
uj5u.com熱心網友回復:
從頭到尾沒有看到updateuj5u.com熱心網友回復:
那要怎么在 MsgBox "密碼修改成功!", vbOKOnly + vbInformation, "提示"上面怎么添加呢?uj5u.com熱心網友回復:
得多積累知識啊。。。http://www.w3school.com.cn/sql/sql_update.aspUPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
UPDATE user1 SET 你的密碼列名 = 新密碼 WHERE 用戶名 = TXT的內容
uj5u.com熱心網友回復:
我按你的方法加了Update user1set密碼 = text3.textwhere用戶名 = text1.Text 顯示未找到方法或資料成員uj5u.com熱心網友回復:
不清楚你的資料庫有哪些欄位、密碼是第幾個欄位(或具體的欄位名),
我也沒有實際應用過ADODB物件。

不過似乎我還是能給你一點參考意見(有些不確定的地方你需要“試”一下)。
首先,你的 rs.Open 執行成功后,rs.RecordCount 值應該是1
如果大于1,說明有多條記錄(資料庫中“用戶名”有重復)。
其次,當rs.RecordCount為1時,你要修改對應用戶的“密碼”,應該用:
rs.Fields(key).Value = "新密碼"
這兒的“key”如何用,你需要試一下了(不排除下面“兩個方法都行”的可能):
1. 看能不能用數值,“密碼”是第幾個欄位(在第幾列),就傳幾。
比如欄位是 ID , 用戶名, 昵稱, 密碼, 郵箱 ,那么key 應該是4(也可能是3)。
具體的你可以設定個斷點,用 msgbox或debug.print 陳述句事先“查看”確認一下。
2. 如果不能用數值,那么就應該用“欄位名”。
比如剛才舉例的欄位結構,可能這樣就能更改: rs.Fields("密碼").Value = "新密碼"
當然,rs.RecordCount大于1,也照樣可以修改特定用戶的密碼:
rs(記錄集物件)有幾個“ .MoveXXXX” 的方法,把“當前記錄指標”移動到指定記錄上。
剛才上面說的“修改”操作,就是針對“當前記錄”進行修改的。
修改資料后,要“提交”,就是呼叫(不傳任何引數): rs.Update
uj5u.com熱心網友回復:
剛才在回復時,看了下“Update”的引數。也許在 rs.Open 執行成功后,執行這句就行:
rs.Update "密碼","新密碼"
當然,也不排除第1個引數傳“數值”的可能(按樓上回復中1.的方法確認具體值)。
uj5u.com熱心網友回復:
根本沒把新密碼寫入資料庫uj5u.com熱心網友回復:
......db.Execute "UPDATE user1 SET [密碼] ='" & Trim(Text3.Text) & "' WFERE [用戶名] ='“ & text1.Text & "‘ AND [密碼] = '" & Trim(text2.Text) & "'"
MsgBox "密碼修改成功!", vbOKOnly + vbInformation, "提示"
......
另外 If Trim(Text3.Text = "") Then 應為 If Trim(Text3.Text) = "" Then
uj5u.com熱心網友回復:
查詢后可以直接修改。如下:
Else
rs.Fields("密碼")=trim(Text3.Text)
rs.updata
MsgBox "密碼修改成功!", vbOKOnly + vbInformation, "提示"
uj5u.com熱心網友回復:
都沒有修改密碼的SQL陳述句啊喂uj5u.com熱心網友回復:
以上的陳述句rs.Fields("密碼")=trim(Text3.Text),必須有,才行的。uj5u.com熱心網友回復:
在 MsgBox "密碼修改成功!", vbOKOnly + vbInformation, "提示" 陳述句之前必須有修改密碼的陳述句rs.Fields("密碼")=trim(Text3.Text)
rs.Update
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/38687.html
標籤:VB基礎類
下一篇:資料庫內資料統計問題
