2017-03-06 1 views
-1

Hier erhalte ich Fehler beiTypenkonflikt Laufzeitfehler-13 in VBA (zeigt Fehler bei Datum Variable)

Dim strDate As Date

als Typenkonflikt Laufzeitfehler ..

Bitte jede Hilfe dankbar sein ....

Sub Insert11() 

    'click on tools and select Microsoft ActiveX data Objects 2.0 Library 
    Dim DBFullName As String 
    Dim Connect As String, Source As String 
    Dim Connection As ADODB.Connection 
    Dim Recordset As ADODB.Recordset 
    Dim Col As Integer 
    Dim strDate As Date 
    Dim strWeight As Variant 
    Dim strMed_Id As Variant 
    Dim strGlucose As Variant 

    strDate = InsertForm.TextBox1.Value 
    strWeight = InsertForm.TextBox2.Value 
    strMed_Id = InsertForm.ListBox2.Value 
    strGlucose = InsertForm.TextBox3.Value 

    ' InsertForm.Show 
    Cells.Clear 

    'Database path info 
    DBFullName = "C:\Users\ND5036832\Downloads\Assignment1234\Sample1.accdb" 

    'open the connection 
    Set Connection = New ADODB.Connection 
    Connect = "Provider=Microsoft.ACE.OLEDB.12.0;" 
    Connect = Connect & "Data Source=" & DBFullName & ";" 
    Connection.Open ConnectionString:=Connect 

    'Create RecordSet 
    Set Recordset = New ADODB.Recordset 
    With Recordset 
     'filter Data 
     Source = "Insert into Glucose ([Date],Weight, Med_Id,Glucose) values (" & strDate & "," & strWeight & "," & strMed_Id & "," & strGlucose & ");" 
     .Open Source:=Source, ActiveConnection:=Connection 
     'Msgbox " The query:" & vbNewLine & vbNewLine & Source 
     'Write field names 
     For Col = 0 To Recordset.Fields.Count - 1 
      Range("G1").Offset(0, Col).Value = Recordset.Fields(Col).Name 
     Next 
     'Write recordset 
     'Range("G1").Offset(1, 0).CopyFromRecordset Recordset 
    End With 
    ActiveSheet.Columns.AutoFit 

    Set Recordset = Nothing 
    Connection.Close 
    Set Connection = Nothing 

End Sub 
+2

'Dim strDate As Date' sollte keinen Fehler werfen. Aktualisieren Sie Ihre Frage bitte mit dem echten Fehler. –

+0

Danke @ Robin Mackenzie Hier die erste Zeile selbst sagt Dim strDate als Datum zeigt typeMismatch Laufzeitfehler-13 –

Antwort

0

Nun, ein TextBox co enthält Text (bekannt als String). Wenn Sie versuchen, eine String in eine Date Variable zu setzen, dann bin ich nicht überrascht, dass Sie einen Fehler erhalten. Versuchen:

strDate = CDate(InsertForm.TextBox1.Value) 

Dieser wandelt, oder Zeichenfolge in ein Datum wirft. Wenn Sie keine Zeichenfolge im Datumsformat angeben, wird erneut ein Fehler ausgegeben.


Außerdem. Sei vorsichtig, wie du deine Variablen benennst. strDate hat „str“ am Anfang Sie daran erinnern, dass Sie mit einem String es zu tun, so würde man erwarten, dass dies zu sehen:

Dim strDate As String 

Da Ihre Variable in Date Format sein wird, sollten Sie es zu etwas Umbenennung wie :

Dim dtDate As Date 

Oder viel besser, ignorieren diese ungarische Namenskonvention Stil und es nur etwas nennen, die mehr Bedeutung hat, wie hat:

Dim selectedDate As Date 
+0

Ich denke, das ist ein guter Vorschlag - aber OP besagt, dass der Fehler auftritt auf "Dim strDate As Date" .... hoffe Deine Antwort funktioniert aber. –

+0

Ja stimmte der Fehler wäre nicht in dieser Zeile! Der Code von OP wird sicherlich einen Laufzeitfehler "13" auf die in dieser Antwort korrigierte Zeile werfen, also dachte ich, dass es wahrscheinlich das zugrundeliegende Problem war :) – CallumDA

+0

Ihr Problem ist, dass Sie nie das Formular Insertform entsprechend Ihrem Code geladen haben. Also ist Textbox1.value leer. – Storax

Verwandte Themen