Искать реестр используя vba формуляр Access

Я изучаю немного vba, с макросами в acces, что я стараюсь делать, состоит, в том, чтобы введя эту идентификацию в компьютер, он реализовал соответствующую консультацию и показал одно из полей в другом поле ввода текста, я присоединяю изображение формуляра и кода

Однако кликнув в искании, оно является следующим. introducir la descripción de la imagen aquí

и если я использую один, пойдите mu длина бросает меня следующая ошибка произвела себе ошибку 6 во время выполнения: Избыток

это код, который я использую

   Private Sub consultar_Click()

 Dim strSQL As String
 Dim ValCustID As Integer

 ValCustID = Me.idx.Value

 strSQL = "SELECT Modelo " & "FROM Motores " & "WHERE id='" & ValCustID & "';"

Modelox.Value = strSQL

End Sub
0
задан 14.08.2019, 03:41
1 ответ

В этих случаях мне нравится использовать recordsets, так как не используется какое-то поле ввода combinado/comboBox, следовательно я сделал бы это следующей формой:

Dim Rs As New ADOB.RecordSet

''Validamos si el campo del Id  no este vacio, si lo esta avizamos al usuario.
If Nz(Me.Idx, "") = "" Then
    MsgBox "Aqui se le hace saber al usuario que el campo no esta lleno.", 
           vbInformation + vbOkOnly, "Campo Vacio"
    Exit Sub/Function
End If

''Aqui abrimos el Recordset
With Rs
    .ActiveConnection = CurrentPrject.Connection
    .Open("SELECT Modelo FROM Motores WHERE Id = '" & Nz(Me.Idx, "") & "' ")

    ''En este punto, estamos evaluando que la propiedad EOF (End Of File) _
      no este establecida como true, de estarlo significa que el recordset _
      no tiene ningun dato, o que la consulta no regreso algo.
    If .EOF Then
        MsgBox "No se ha encontrado informacion con ese Id.", vbExclamation + 
               vbOkOnly, "Error!"
        Exit Sub/Function
    ENd If

    ''Si la EOF es falso, es decir que si encontro algo, en este punto es donde _
      seteamos el valor al campo en el que lo queremos.
    Me.Modelo = Nz(!Modelo, "")

End With

Из этой формы ты гарантируешь хорошее выполнение кода, немного более объясненный:

-Nz (): эта функция sinifica Нот Серо, он используется для того, чтобы оценивать контроль или переменную, согласно Вашему типу информации, например, если он числовой любого типа, он используется следующей формы:

Nz(ValorNumerico, 0)

В случае один буквенно-цифровой тип стоимости или цепи:

Nz(Cadena, "")

помещает Себе 0 или "" из-за которого это стоимость, которая возвращалась в случае, если переменная / контроль придет недействительно, и - информация, которую он, должно быть, размещает обязательно.

-RecordSet: это объект манипуляции данных, а именно, в общем они используются для консультации SQL, это поддерживает заявление переменной для того, чтобы оно функционировало, возможно делать двух способов:

Dim RsEjemplo As New ADOB.RecordSet

Гі

Dim RsEjemplo As RecordSet
Set RsEjemplo = New ADOB.RecordSet

-Clausule With - Энд Вит: Это метод манипуляции объектов, как ты можешь замечать, он используется в объекте RecordSet, этот одинокий метод упрощает способ манипулировать объектом, используется следующего способа:

With OjbetoEjemplo
''Para sacar las propiedades del objeto, se referencian con un . seguido de la _
  propiedad.
    .Open
    .Connection
End With

Просто так, которые иметь, надеялся помочь.

0
ответ дан 03.12.2019, 18:31

Не имея достаточной информации о таблице, это вероятно, что поле id будьте числовым. Да поле - long, ты был бы должен поддерживать данные в ранге между-2.147.483.648 и 2.147.483.647.

Видя, что в консультации они ищутся как текст, также он удалил бы кавычки консультации:

strSQL = "SELECT Modelo FROM Motores WHERE id = " & ValCustID & ";"
1
ответ дан 03.12.2019, 18:31