2016-12-13 3 views
0

lassen Sie mich sagen, ich habe 3 "SerialNoCubicle" Nummer als Auslöser; "8", "17", "18".Ersetzen Sie TextBox.Value Excel mit Recordset Fields.Value von Access

Wenn der combobox.value mit einem dieser Werte gefüllt ist, wird der Rest von textbox.value von der Access-Datenbank ersetzt. Das Problem ist, ich konnte es nur für den ersten tun, wenn der Wert "8" war, dann wird textboxes.value ersetzt. Aber wenn "17" oder "18" der Textbox.value noch leer ist.

Ich kann es tun manuell durch

Ändern
If txtSerialNoCubicle.Value = 8 or txtSerialNoCubicle.Value = 17 or _ 
txtSerialNoCubicle.Value = 18 then 

aber wenn die Benutzereingabe ein anderen Wert neben „8“, „17“, „18“ für „SerialNoCubicle“, dann der Code wird nicht für neuen Wert arbeitet

Private Sub serialnocubicleDB() 
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long 
Dim sql1 As String 

Set cn = New ADODB.Connection 
cn.Open "Provider=Microsoft.ace.OLEDB.12.0; " & _ 
"Data Source=E:\Database.accdb" 
Set rs = New ADODB.Recordset 

sql1 = "Select * FROM tblspecification " 

    rs.Open sql1, cn 
    If txtSerialNoCubicle.Value = rs.Fields("SerialNoCubicle").Value Then 
     TextBox1.Value = rs.Fields("Project").Value 
     TextBox2.Value = rs.Fields("ProjectNo").Value 
     TextBox3.Value = rs.Fields("No&DateofDrw").Value 
     TextBox4.Value = rs.Fields("DrawingNumber").Value 
     TextBox5.Value = rs.Fields("NameofCubicle").Value 
     TextBox6.Value = rs.Fields("SingleLineLayout").Value 
     TextBox7.Value = rs.Fields("PlantofTest").Value 
     TextBox9.Value = rs.Fields("TypeofProduct").Value 
     TextBox10.Value = rs.Fields("IPofProduct").Value 
     TextBox11.Value = rs.Fields("Substation").Value 
    End If 
    rs.Close 
    cn.Close 
    Set rs = Nothing 
    Set cn = Nothing 

    End Sub 

Antwort

0

Statt die gesamte Tabelle abzufragen, erhalten nur den Datensatz, den Sie wollen

Private Sub serialnocubicleDB() 
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long 
    Dim sql1 As String 

    Set cn = New ADODB.Connection 
    cn.Open "Provider=Microsoft.ace.OLEDB.12.0; " & _ 
    "Data Source=E:\Database.accdb" 
    Set rs = New ADODB.Recordset 

    'Query for the specific serial number 
    ' should be probably using parameters here depending on your use case 
    sql1 = "Select * FROM tblspecification t where " & _ 
      " t.SerialNoCubicle=" & txtSerialNoCubicle.Value 

    rs.Open sql1, cn 

    If Not rs.EOF Then 
     TextBox1.Value = rs.Fields("Project").Value 
     TextBox2.Value = rs.Fields("ProjectNo").Value 
     TextBox3.Value = rs.Fields("No&DateofDrw").Value 
     TextBox4.Value = rs.Fields("DrawingNumber").Value 
     TextBox5.Value = rs.Fields("NameofCubicle").Value 
     TextBox6.Value = rs.Fields("SingleLineLayout").Value 
     TextBox7.Value = rs.Fields("PlantofTest").Value 
     TextBox9.Value = rs.Fields("TypeofProduct").Value 
     TextBox10.Value = rs.Fields("IPofProduct").Value 
     TextBox11.Value = rs.Fields("Substation").Value 
    Else 
     TextBox1.Value = "" 
     TextBox2.Value = "" 
     TextBox3.Value = "" 
     TextBox4.Value = "" 
     TextBox5.Value = "" 
     TextBox6.Value = "" 
     TextBox7.Value = "" 
     TextBox9.Value = "" 
     TextBox10.Value = "" 
     TextBox11.Value = "" 
    End If 

    rs.Close 
    cn.Close 
    Set rs = Nothing 
    Set cn = Nothing 

End Sub 
+0

einen Fehler theres Linie für sql1 bei der Definition, dann änderte ich auf "Select * FROM tbl Specification, wo 'SerialNoCubicle = & txtSerialNoCubicle.Value'" es funktioniert, aber nur für txtserialnocubicle.value = 8. der Rest funktioniert nicht ... –

+0

"funktioniert nicht" bedeutet was * genau*? Das sagt uns nicht viel, was uns helfen könnte ... –

Verwandte Themen