Access数据库运行时错误13类型不匹配

时间:2014-09-23 22:17:11

标签: database vba ms-access

第一次发帖...我确定这可能很简单,所以我提前道歉。这实际上是我第一次使用VBA而且我遇到了问题。尽管我尝试过任何事情,但我已经搜索并尝试了多项内容,但仍然存在同样的问题。

我已将数据库移至另一台计算机,现在我收到运行时错误13.调试人员在第28行说:

Me!odf = CVDate("01.01.1800")

当您点击按钮打开新窗口以使用用户设置的特定条件搜索数据库时。

以下是代码:

    VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Form_Pregledt"
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Option Compare Database
Private Sub Angioloski_Click()
  Forms!PREGLEDT!Pregledf.Form!Idpregleda.RowSource = "SELECT [Qpregledt].[Idpregleda], [Qpregledt].[Datum], [Qpregledt].[Prezime i ime], [Qpregledt].[Godina rodjenja], [Qpregledt].[Adresa], [Qpregledt].[Telefon], [Qpregledt].[Faks], [Qpregledt].[e-mail] FROM [Qpregledt] WHERE [VRSTA PREGLEDA]=FORMS!PREGLEDT!VRSTA AND [ANGIOLOSKI]=FORMS!PREGLEDT!ANGIOLOSKI  and datum>=forms!pregledt!odf  and datum<=forms!pregledt!dof "
  Forms!PREGLEDT!Pregledf.Form!Idpregleda.Requery
  Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
  Me.Refresh
End Sub

Private Sub do_AfterUpdate()
If IsNull(Me!od) = True Then
Me!odf = CVDate("01.01.1800")
Else
Me!odf = Me!od
End If
If IsNull(Me!do) = True Then
Me!dof = CVDate("01.01.2800")
Else
Me!dof = Me!do
End If
Forms!PREGLEDT!Pregledf.Form!Idpregleda.Requery
Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
Me.Refresh
End Sub

Private Sub Form_Load()
Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
Me!odf = CVDate("01.01.1800")
Me!dof = CVDate("01.01.2800")
Forms!PREGLEDT!Pregledf.Form!Idpregleda.Requery
Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
Me.Refresh
End Sub

Private Sub od_AfterUpdate()
If IsNull(Me!od) = True Then
Me!odf = CVDate("01.01.1800")
Else
Me!odf = Me!od
End If
If IsNull(Me!do) = True Then
Me!dof = CVDate("01.01.2800")
Else
Me!dof = Me!do
End If
Forms!PREGLEDT!Pregledf.Form!Idpregleda.Requery
Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
Me.Refresh
End Sub

Private Sub vrsta_Click()
If Me!vrsta = 1 Then
 Me!Angioloski.Enabled = True
 Else
 Me!Angioloski.Enabled = False
 Me!Angioloski = Null
End If
If IsNull(Me!vrsta) = False Then
 If IsNull(Me!Angioloski) = True Then
  Forms!PREGLEDT!Pregledf.Form!Idpregleda.RowSource = "SELECT [Qpregledt].[Idpregleda], [Qpregledt].[Datum], [Qpregledt].[Prezime i ime], [Qpregledt].[Godina rodjenja], [Qpregledt].[Adresa], [Qpregledt].[Telefon], [Qpregledt].[Faks], [Qpregledt].[e-mail] FROM [Qpregledt] WHERE [VRSTA PREGLEDA]=FORMS!PREGLEDT!VRSTA and datum>=forms!pregledt!odf  and datum<=forms!pregledt!dof "
 Else
  Forms!PREGLEDT!Pregledf.Form!Idpregleda.RowSource = "SELECT [Qpregledt].[Idpregleda], [Qpregledt].[Datum], [Qpregledt].[Prezime i ime], [Qpregledt].[Godina rodjenja], [Qpregledt].[Adresa], [Qpregledt].[Telefon], [Qpregledt].[Faks], [Qpregledt].[e-mail] FROM [Qpregledt] WHERE [VRSTA PREGLEDA]=FORMS!PREGLEDT!VRSTA AND [ANGIOLOSKI]=FORMS!PREGLEDT!ANGIOLOSKI  and datum>=forms!pregledt!odf  and datum<=forms!pregledt!dof"
 End If
End If
Forms!PREGLEDT!Pregledf.Form!Idpregleda.Requery
Forms!PREGLEDT!Pregledf.Form!ukupno.Caption = "Ukupno: " & Forms!PREGLEDT!Pregledf.Form!Idpregleda.ListCount
Me.Refresh
End Sub

Private Sub izlaz_Click()
'On Error GoTo Err_izlaz_Click
On Error Resume Next

    DoCmd.Close

Exit_izlaz_Click:
    Exit Sub

Err_izlaz_Click:
    MsgBox Err.Description
    Resume Exit_izlaz_Click

End Sub

1 个答案:

答案 0 :(得分:0)

正如蒂姆在评论中所说,你的日期分隔符是错误的。但是,我个人首先要避免字符串含糊不清(什么日期是01/03/02?)并使用DateSerial函数:

Me!odf = DateSerial(1800, 1, 1)