Без знания класса Access
я должен рекомендовать другой подход к запросам к базе данных. Важно убедиться, что база данных не уязвима для SQL внедрения , будь то преднамеренного или случайного. Для этого можно использовать так называемые SQL параметры: вместо помещения значения в строку запроса значение предоставляется отдельно.
Private Function EmployeeSearchwithID(personalNr As String) As String
Dim mitarbeiter As String = String.Empty
Dim sql = "SELECT [Vorname], [Name] from [TA-Personal] WHERE [Personal_Nr] = ?;"
Using conn As New OleDbConnection("your connection string"),
cmd As New OleDbCommand(sql, conn)
cmd.Parameters.Add(New OleDbParameter With {.ParameterName = "@PersonalNr",
.OleDbType = OleDbType.VarChar,
.Size = 12,
.Value = personalNr})
conn.Open()
Dim rdr = cmd.ExecuteReader()
If rdr.Read() Then
mitarbeiter = rdr.GetString(0) & " " & rdr.GetString(1)
End If
End Using
Return mitarbeiter
End Function
Private Sub tbxUserInput_KeyDown(sender As Object, e As KeyEventArgs) Handles tbxUserInput.KeyDown
If e.KeyCode = Keys.Enter Then 'employeeIDnumbersSelect()
Dim employeeName = EmployeeSearchwithID(tbxUserInput.Text.Trim())
If String.IsNullOrEmpty(employeeName) Then
MessageBox.Show("Not found.", "Problem", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Else
Label5.Text = employeeName
End If
End If
End Sub
Команда Using
гарантирует, что «неуправляемые ресурсы», задействованные в запросах к базе данных, впоследствии очищаются, даже если что-то идет не так.
Вам потребуется изменить значения OleDbType.VarChar
и .Size = 12
, чтобы они соответствовали типу и размеру этого столбец в базе данных.
Имя параметра только для удобства с OleDb, потому что оно игнорируется в реальном запросе, который использует "?" в качестве заполнителя. Пожалуйста, смотрите Свойство OleDbCommand.Parameters для полной информации.
Если это все еще не работает, пожалуйста, введите идентификатор вручную в tbxUserInput
и посмотрите, сможете ли вы заставить его работать таким образом .
Подожди ... tbxUserInput.ToString
должно быть tbxUserInput.Text
. Но все остальное, что я написал, остается в силе.