Вызов набора записей на основе значения текстового поля

#sql #excel #vba

#sql #excel #vba

Вопрос:

Мне нужно вызвать группу записей, хранящихся в базе данных MS Access. До сих пор мне удавалось отображать все записи, но мне нужно отображать определенные записи на основе номера фолио, который хранится в текстовом поле пользовательской формы.

Я пытался изменить WHERE Folio = me.tbFolio.Value несколько раз, но я просто не могу сделать это правильно, он продолжает показывать все наборы записей в базе данных.

 Private Sub Srch_Click()
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long, sSQL As String, Fl As Long
    Let Fl = tbFolio.Value - 1
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" amp; _
        "Data Source=S:CommonQualityRASTREABILIDADMAIN PROJECTPROYECTO KOREANO MX.accdb;"
    Set rs = New ADODB.Recordset
    rs.Open "Trazabilidad", cn, adOpenStatic, adLockReadOnly, adCmdTable
    sSQL = "SELECT [Folio], [N° de Orden, Fecha], [N° de Parte, Materiales], [N° de Parte Material], [N° de Lote/Fecha de Proucción], [Quién Capturo]" amp; _
        "FROM Trazabilidad" amp; _
        "WHERE Folio = me.tbfolio.value;"
    MsgBox rs.GetString, vbOKOnly, "Trazabilidad"
    cn.Close
    Set cn = Nothing
End Sub
 

Комментарии:

1. Попробуйте изменить «WHERE Folio = me.tbfolio.value;» на «WHERE Folio = ‘» amp; me.tbfolio.value amp; «‘;»

Ответ №1:

Вы должны попытаться объединить (используя amp;) значение из текстового поля, чтобы поместить это значение в ваш запрос

   Private Sub Srch_Click()
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long, sSQL As String, Fl As Long
    Let Fl = tbFolio.Value - 1
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" amp; _
            "Data Source=S:CommonQualityRASTREABILIDADMAIN PROJECTPROYECTO KOREANO MX.accdb;"
        Set rs = New ADODB.Recordset
        rs.Open "Trazabilidad", cn, adOpenStatic, adLockReadOnly, adCmdTable
        sSQL = "SELECT [Folio], [N° de Orden, Fecha], [N° de Parte, Materiales], [N° de Parte Material], [N° de Lote/Fecha de Proucción], [Quién Capturo]" amp; _
            "FROM Trazabilidad" amp; _
            "WHERE Folio = " amp;  me.tbfolio.value
        MsgBox rs.GetString, vbOKOnly, "Trazabilidad"
        cn.Close
        Set cn = Nothing
    End Sub
 

если это
изменение строки

 "WHERE Folio = " amp;  me.tbfolio.value 
 

для

 "WHERE Folio = '" amp;  me.tbfolio.value amp; "'"