请教高手vb+accecc转为VB+SQL要怎写代码?
请看一看下下面代码有没有问题:
Private Sub CmdLogin_Click()
Dim StrSQL As String
UserName = CStr(Trim(TxtUserName.Text)) '//将文本框内的值赋给定义好的全局变量
PassWord = CStr(Trim(TxtPassword.Text))
If UserName <> Empty And PassWord <> Empty Then '//用户名与密码是否为空
StrSQL = "select 用户名称,用户口令,用户权限 from 管理用户 where 用户名称= '" & UserName & "'and 用户口令 ='" & PassWord & "'"
If RsLoginCheck.State = adStateClosed Then
RsLoginCheck.Open StrSQL, DBCON, adOpenKeyset, adLockPessimistic, adCmdText '//打开记录集
End If
Group = RsLoginCheck.Fields(2).Value
If RsLoginCheck.Fields(2).Value <> "Administrators" Then
Call CheckLogin
End If
If RsLoginCheck.RecordCount <> 0 Then '//判断记录集记录条数是否为0
RsLoginCheck.Close
Unload Me
Frmmdimain.Show '//显示主窗
FrmDay.Show vbModal
ElseIf Counts < 2 Then
MsgBox "用户名称密码错误", vbExclamation + vbOKOnly, "登录失败"
RsLoginCheck.Close '//关闭记录集
Counts = Counts + 1 Else
MsgBox "密码错误不得超过三次,否则视您为非法用户!", vbCritical, "警告"
End
End If
Else
MsgBox "用户名密码不能为空", vbExclamation + vbOKOnly, "登录失败"
Call Form_Load
End If
End Sub在accecc里通过.连sql server不通过,报错
"Group = RsLoginCheck.Fields(2).Value
If RsLoginCheck.Fields(2).Value <> "Administrators" Then
Call CheckLogin
End If"
请看一看下下面代码有没有问题:
Private Sub CmdLogin_Click()
Dim StrSQL As String
UserName = CStr(Trim(TxtUserName.Text)) '//将文本框内的值赋给定义好的全局变量
PassWord = CStr(Trim(TxtPassword.Text))
If UserName <> Empty And PassWord <> Empty Then '//用户名与密码是否为空
StrSQL = "select 用户名称,用户口令,用户权限 from 管理用户 where 用户名称= '" & UserName & "'and 用户口令 ='" & PassWord & "'"
If RsLoginCheck.State = adStateClosed Then
RsLoginCheck.Open StrSQL, DBCON, adOpenKeyset, adLockPessimistic, adCmdText '//打开记录集
End If
Group = RsLoginCheck.Fields(2).Value
If RsLoginCheck.Fields(2).Value <> "Administrators" Then
Call CheckLogin
End If
If RsLoginCheck.RecordCount <> 0 Then '//判断记录集记录条数是否为0
RsLoginCheck.Close
Unload Me
Frmmdimain.Show '//显示主窗
FrmDay.Show vbModal
ElseIf Counts < 2 Then
MsgBox "用户名称密码错误", vbExclamation + vbOKOnly, "登录失败"
RsLoginCheck.Close '//关闭记录集
Counts = Counts + 1 Else
MsgBox "密码错误不得超过三次,否则视您为非法用户!", vbCritical, "警告"
End
End If
Else
MsgBox "用户名密码不能为空", vbExclamation + vbOKOnly, "登录失败"
Call Form_Load
End If
End Sub在accecc里通过.连sql server不通过,报错
"Group = RsLoginCheck.Fields(2).Value
If RsLoginCheck.Fields(2).Value <> "Administrators" Then
Call CheckLogin
End If"
-------------------------------
问题出在DBCON上,你的DBCON是怎么赋值的,贴出来看看
Public ServerName As String
'服务器名
Public DBname As String
'数据库名
Public UserName As String
'用户名
Public PassWord As String
'密码我把我常用的模块代码给你,你注意ConnectionString,access和SQL是不一样的,你自己检查修改一下吧.
Public Function IniDB() As Boolean
'初始化连接函数
On Error GoTo MyErr
IniDB = False
Set Cnn = New ADODB.Connection
With Cnn
.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & UserName & ";PWD=" & PassWord & ";Initial Catalog=" & DBname & ";Data Source=" & ServerName
'连接字符串
.CommandTimeout = 10
'连接等待时间
.CursorLocation = adUseClient
'游标类型
.Open
End With
IniDB = True
Exit Function
MyErr:
MyErr
End Function
Public Sub MyErr()
MsgBox "错误号:" & Err.Number & vbCrLf & "错误源:" & Err.Source & vbCrLf & "错误描述:" & Err.Description, vbCritical, "对不起,出现错误!"
Err.Clear
End Sub
Public Sub DBclose()
'断开连接
If Cnn.State = adStateOpen Then Cnn.Close
End Sub
Public Sub FillData(rs As ADODB.Recordset, Grid As MSHFlexGrid)
'导入数据过程
On Error GoTo myerr2
Dim i As Integer
Dim j As Integer
With Grid
.Clear
.rows = 2
.Cols = rs.Fields.Count
For i = 0 To .Cols - 1
.textmatrix(0, i) = rs.Fields(i).Name
'将矩阵的第一行设置为表字段名
Next i
If rs.RecordCount > 0 Then
.rows = rs.RecordCount + 1
i = 1
rs.MoveFirst
Do Until rs.EOF
'直到rs至结果集末尾退出循环
For j = 0 To rs.Fields.Count - 1
.textmatrix(i, j) = rs.Fields(j).Value & ""
'将表中的记录导入grid
Next j
rs.MoveNext
i = i + 1
Loop
End If
.ColSel = .Cols - 1
'设置起始列
End With
Exit Sub
myerr2:
MyErr
End Sub