Cum se repară „Eroare de execuție ‘3464’: Data type mismatch in criteria expression.” în MS Access (Programare, Vba, Ms Access)

Căpitanul a intrebat.

Lucrez la un formular în Access. Acesta ar trebui să insereze date într-un tabel, dar continui să primesc eroarea 3464.

Sunt un pic nou în Visual Basic. Anterior, acest lucru funcționa, dar nu mai funcționează. Folosesc SQL Server ca și back-end. Conexiunea funcționează și introducea rânduri noi. Am căutat pe internet, dar nu am găsit o explicație cuprinzătoare a acestei erori.

Private Sub mSubmitButton_Click()

    CurrentDb.Execute "INSERT INTO dbo_Reporting_Table([Date], Vendor, Ordered_By, Picked_Up_By, Reported_By) " & _
    " VALUES('" & Me.mDate & "','" & Me.mVendor & "','" & Me.mOrdered_By & "','" & _
    Me.mPicked_Up_By & "','" & Me.mReported_By & "')"

    CurrentDb.Execute "INSERT INTO dbo_Items_Table([PO#], [Item], [Price], [Equipment], [Quantity]) " & _
    " VALUES(" & Me.mPONumber & ",'" & Me.mItemInput0 & "'," & Me.mPriceInput0 & ",'" & _
    Me.mEquipmentInput0 & "'," & Me.mQuantityInput0 & ")"


    Me.mItemInput0 = ""
    Me.mPriceInput0 = ""
    Me.mEquipmentInput0 = ""
    Me.mQuantityInput0 = ""

    Me.mDate = ""
    Me.mVendor = ""
    Me.mOrdered_By = ""
    Me.mPicked_Up_By = ""
    Me.Requery

    Exit Sub

Error_PopupMessage:
    'Response = MsgBox(Message, vbOKOnly + vbInformation, "Form Entry Hint", "help", "1000")
    Exit Sub

End Sub

Orice sfat cu privire la ceea ce aș putea face greșit ar fi foarte apreciat.

Comentarii

  • Eroarea înseamnă că unul dintre tipurile de date din valorile dvs. nu se potrivește cu tipul de date al coloanei în care încercați să o inserați. Deoarece nu avem nicio idee despre tipurile de date ale coloanelor din tabelele dvs., nu vă putem spune care dintre ele este greșit sau de ce. Va trebui să vă uitați la fiecare definiție de coloană pentru a vedea ce tip de date se așteaptă să îi furnizați și apoi să vă dați seama cum să îi furnizați în mod corespunzător acel tip de date în instrucțiunea INSERT. –  > Por Ken White.
  • Deci, ce s-a schimbat? Este [Date] un câmp de tip dată/timp? Folosiți delimitatori de apostrof. Dacă acesta ar fi un tabel Access, delimitatorii ar fi caracterul #. Într-adevăr, nu ar trebui să folosiți semne de punctuație și caractere speciale (underscore doar excepție) în convenția de denumire. –  > Por iunie7.
1 răspunsuri
Căpitanul

Problema mea a fost că, în formular, nu introduceam toate câmpurile obligatorii înainte de a apăsa submit. Acum am o instrucțiune if care încheie procesul dacă câmpurile obligatorii sunt nule. Sper că poate fi de folos cuiva.

If Eval(IsNull(Me.mDate.Value) Or IsNull(Me.mVendor.Value) Or IsNull(Me.mPicked_Up_By.Value) Or IsNull(Me.mReported_By.Value)) Then
    MsgBox " Make sure you have entered the Date, Vendor, Purchaser, and signed the form. "
    Exit Sub
ElseIf Eval(IsNull(Me.mItemInput0.Value) Or IsNull(Me.mEquipmentInput0.Value) Or IsNull(Me.mPriceInput0.Value)) Then
    MsgBox " Please enter atleast one complete row of an item for the PO. "
    Exit Sub
Else
End If