【发布时间】:2017-06-23 19:34:21
【问题描述】:
所以我有一个连接到我的 VBA 登录框架的访问数据库,它会将您引导到学校假期的注册框架
我的 vba 代码中有一个特别奇怪的问题,因为无论我使用什么 dp,它都无法继续使用我的 sql 部分。 VBA 认为它从 SQL 得到的结果不正确或是否定的。
我已经放了一些带有字符串的 SQL 语句;
因为登录我的程序的学生的loginID只能在组合框中看到假期的特定位置,因为学生在某个班级,但其他下班的学生必须看到自己的位置,但是其中一些是两个类的组合。
不知怎的,我的 SQL 代码不对;
在数据库表 BEHEER 中有一个 LoginID(代码中的 leerlingnr)和一个密码(wachtwoord),它们的类称为 Klas。为方便起见:一名学生的 ID 为 12,密码为 1 在 Leerlingen(荷兰语学生)表中,他现在被分配到 1 班,但未来他将进入 A5A,但为了代码崩溃的安全,我将其设为 1。
Public Class frmInschrijven
Dim strSql As String = ""
Dim strConnectionString As String = ""
Private Sub frmInschrijven_Load() Handles MyBase.Load
'Declareer alle variabelen
Dim strUsername2 As String = ""
Dim strKlas As String = ""
'Bepaal CommandText (=SQL statement om records op te vragen:
strSql = "SELECT B.Leerlingnr, L.Leerlingnr, Wachtwoord, L.KLas, plaats FROM BEHEER B, LEERLINGEN L, Plaatsen P"
'Definieer de verbinding:
strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Werkweek.accdb"
'Maak connection aan op basis van de connectionstring en
'command op basis van de SQL opdracht en gemaakte connection:
Dim objConnection As New OleDb.OleDbConnection(strConnectionString)
Dim objCommand As New OleDb.OleDbCommand(strSql, objConnection)
'Open de verbinding:
objCommand.Connection.Open()
'Maak een DataReader aan op basis van de ingestelde command:
Dim objDataReader As OleDb.OleDbDataReader = objCommand.ExecuteReader(CommandBehavior.CloseConnection)
'Doorloop de Leerlingnr's om te zien in welke klas ze zitten
'Doorloop alle records in de tabel:
While objDataReader.Read
strUsername2 = frmInloggen.strUsername
'Nog zorgen dat ALLEEN data van 1 leerling beschikbaar is, dan pas kan strKlas
strKlas = objDataReader("Select Klas FROM LEERLINGEN L, BEHEER B WHERE L.Leerlingnr=""" & frmInloggen.strUsername & """AND B.LEERLINGNR=L.LEERLINGNR")
If strKlas = "1" Then
MsgBox("Correct, you saved me!")
ElseIf strKlas Like "H4A" Then
With cboKeuze1
.Items.Add("apart")
End With
Else MsgBox("try again")
End If
End While
'Sluit de DataReader en de Connection:
objDataReader.Close()
objConnection.Close()
End Sub
BEHEER 和 LEERLINGEN 都有学生证,在 BEHEER 中它被用作用户名。
如果你得到正确的消息框,你救了我,那么代码应该可以工作,但现在我无法通过这部分:
strKlas = objDataReader("Select Klas FROM LEERLINGEN L, BEHEER B WHERE L.Leerlingnr=""" & frmInloggen.strUsername & """AND B.LEERLINGNR=L.LEERLINGNR")
谁能帮帮我。 如果我必须包含我的整个 .sln,请提出要求,我会将其提供给您。 提前致谢。
【问题讨论】:
-
VBA?你的意思是VB.NET。旁注:永远不要使用连接的字符串作为查询。取而代之的是,使用参数化查询!见:How to: Execute a Parameterized Query