建了个student.dsn DATABASE为pubs中 添加用户窗体:
输入用户名(label1) text1
输入密码 (label2) text2
确认密码 (label3) text3
确认(command1)
窗体代码:Private Sub Command1_Click()
Dim txtsql As String
Dim mrc As ADODB.Recordset
Dim msgtext As String
If Trim(Text1.Text) = "" Then
MsgBox "请输入用户"
Exit Sub
Text1.SetFocus
Else
textsql = "select * from userinfo" '问题1:这个是不是要先建个表userinfo,书里也没说明
Set mrc = executesql(txtsql, msgtext) '调用模块代码
While (mrc.EOF = False)
If Trim(mrc.Fields(0)) = Trim(Text1) Then
MsgBox "此用户已存在了"
Text1 = ""
Text2 = ""
Text3 = ""
Text1.SetFocus
Exit Sub
Else
mrc.MoveNext
End If
Wend
End If
If Trim(Text2.Text) <> Trim(Text3) Then
MsgBox "两次密码不一致"
Text1.SetFocus
Text1 = ""
Text2 = ""
Text3 = ""
Else
If Text2 = "" Or Text3 = "" Then
MsgBox "密码不能为空"
Text1.SetFocus
Text1 = ""
Text2 = ""
Text3 = ""
Else
mrc.AddNew
mrc.Fields(0) = Trim(Text1)
mrc.Fields(1) = Trim(Text2)
mrc.Update
mrc.Close
Me.Hide
MsgBox "添加成功"
End If
End If
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
stokens = Split(sql)
Set cnn = New ADODB.Connection
cnn.ConnectionString = "DSN=student.dsn" & ";DATABASE=pubs"
If InStr("INSERT,DELETE,UPDATE", UCase(stokens(0))) Then '问题2:执行command1时 提示错误 "下标越界"
cnn.Execute sql
msgstring = stokens(0) & "查询成功"
Else
Set rst = New ADODB.Recordset
rst.Open Trim(sql), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount & "条记录"
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
End Function问题3:添加用户时,用户添加到哪里去? 书上没有说建表?手上只有10分
输入用户名(label1) text1
输入密码 (label2) text2
确认密码 (label3) text3
确认(command1)
窗体代码:Private Sub Command1_Click()
Dim txtsql As String
Dim mrc As ADODB.Recordset
Dim msgtext As String
If Trim(Text1.Text) = "" Then
MsgBox "请输入用户"
Exit Sub
Text1.SetFocus
Else
textsql = "select * from userinfo" '问题1:这个是不是要先建个表userinfo,书里也没说明
Set mrc = executesql(txtsql, msgtext) '调用模块代码
While (mrc.EOF = False)
If Trim(mrc.Fields(0)) = Trim(Text1) Then
MsgBox "此用户已存在了"
Text1 = ""
Text2 = ""
Text3 = ""
Text1.SetFocus
Exit Sub
Else
mrc.MoveNext
End If
Wend
End If
If Trim(Text2.Text) <> Trim(Text3) Then
MsgBox "两次密码不一致"
Text1.SetFocus
Text1 = ""
Text2 = ""
Text3 = ""
Else
If Text2 = "" Or Text3 = "" Then
MsgBox "密码不能为空"
Text1.SetFocus
Text1 = ""
Text2 = ""
Text3 = ""
Else
mrc.AddNew
mrc.Fields(0) = Trim(Text1)
mrc.Fields(1) = Trim(Text2)
mrc.Update
mrc.Close
Me.Hide
MsgBox "添加成功"
End If
End If
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
stokens = Split(sql)
Set cnn = New ADODB.Connection
cnn.ConnectionString = "DSN=student.dsn" & ";DATABASE=pubs"
If InStr("INSERT,DELETE,UPDATE", UCase(stokens(0))) Then '问题2:执行command1时 提示错误 "下标越界"
cnn.Execute sql
msgstring = stokens(0) & "查询成功"
Else
Set rst = New ADODB.Recordset
rst.Open Trim(sql), cnn, adOpenKeyset, adLockOptimistic
Set executesql = rst
msgstring = "查询到" & rst.RecordCount & "条记录"
End If
executesql_exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
End Function问题3:添加用户时,用户添加到哪里去? 书上没有说建表?手上只有10分
textsql = "select * from userinfo" '问题1:这个是不是要先建个表userinfo,书里也没说明
---------------------当然要有表了,书上不可能每一步骤都写的
============================If InStr("INSERT,DELETE,UPDATE", UCase(stokens(0))) Then '问题2:执行command1时 提示错误 "下标越界"
--------------------
textsql = "select * from userinfo" '问题1:这个是不是要先建个表userinfo,书里也没说明
Set mrc = executesql(txtsql, msgtext) '调用模块代码第一句是textsql ,传参数是却变成txtsql,所以stokens数组中无数据
======================问题3:添加用户时,用户添加到哪里去? 书上没有说建表?新添加用户是放在 userinfo表里的,
MsgBox "请输入用户"
Exit Sub
Text1.SetFocus2、这边exit sub要放tex1.setfocus的后面!不然那边都无意义了!
还有,PUBS好象是SQL安装时就有的数据库,里面应该有那个userinfo表,记不太清楚了!不过要使用select * from userinfo就必须要有该表存在!3、你打开的userinfo表,当然是添加到该表了!