2017-03-06 20 views
-1

を(日付変数にエラーを示す)私は、型の不一致実行時エラーとして日型の不一致実行時エラー-13 VBAでここ

として

薄暗いstrDateでエラーを取得しています。..

任意の助けが理解されるだろうしてください....

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」はエラーを送出しません。あなたの質問を実際のエラーで更新してください。 –

+0

ありがとうございました@ Robin MackenzieここでDimStrDateと表示されている日付はtypeMismatchランタイムエラー-13を示す日付です –

答えて

0

まあ、TextBoxコ(Stringとして知られています)があります。変数DateStringを入れようとすると、エラーが発生することに驚くことはありません。試してみてください:

strDate = CDate(InsertForm.TextBox1.Value) 

これは、変換、またはは日付にあなたの文字列をキャストします。日付形式の文字列を指定しないと、エラーが返されます。


さらに。変数の名前付けには注意が必要です。以下のようなものに名前を変更を検討し、あなたの変数が Date形式になりますので

Dim strDate As String 

strDateはそうあなたがこれを見ることを期待したいあなたはStringを扱っていることを思い出させるために先頭に「STR」を持っています:

Dim dtDate As Date 

またはより良い、このハンガリースタイルの命名規則を無視して、単により多くの意味を持っているものという名前を付け、のような:

Dim selectedDate As Date 
+0

これは良い提案だと思いますが、OPでは 'Dim strDate As Date'でエラーが発生しています。あなたの答えは働く。 –

+0

ええ、エラーはその行にないと同意しました! OPのコードは確実にこの答えで修正された行にランタイムエラー '13'を投げるので、おそらく根本的な問題だと思った。 – CallumDA

+0

あなたの問題はあなたのコードに従ってフォームのInsertformをロードしたことがないということです。 Textbox1.valueは空です。 – Storax

関連する問題