如何解决实时错误'13'类型不匹配的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 06:51:37
我做了一个窗体想实现客房登记功能
当按下按钮“登记”时,产生凭证号码

产生凭证号码的主体代码如下:
Data1.RecordSource = "select * from djb order by 凭证号码"
Data1.Refresh
If Not Data1.Recordset.EOF Then Data1.Recordset.MoveLast
If lsph.Text = "" Then bh.Text = Date & "d" & Format(1, "###000")
If lsph.Text <> "" Then
y1.Text = Month(Date)
y2.Text = Month(Left(lsph.Text, 10))
If y1.Text = y2.Text Then
bh.Text = Date & "d" & Format(Val(Right(lsph.Text, 3)) + 1, "###000")
End If
If y1.Text <> y2.Text Then
bh.Text = Date & "d" & Format(1, "###000")
End If
End If

其中lsph是textbox控件,它的datafield为“凭证号码” datasource为Data1
bh也是textbox控件,它在窗体中显示凭证号
运行时出现报错,跳出实时错误‘13’类型不匹配,光标停在y2.Text = Month(Left(lsph.Text, 10))。
有谁能告诉我哪里出错了

Month函数接收的参数必须是能够表示日期的Variant、数值表达式、字符串表达式或它们的组合。你的错误就在Left(lsph.Text, 10)作为参数不符合Month对参数的要求。

Data1.RecordSource = "select * from djb order by 凭证号码"
Data1.Refresh
If Not Data1.Recordset.EOF Then Data1.Recordset.MoveLast
If lsph.Text = "" Then bh.Text = Date & "d" & Format(1, "###000")
If lsph.Text <> "" Then
y1.Text = Month(Date)
y2.Text = Month(cdate(Left(lsph.Text, 10)))
If y1.Text = y2.Text Then
bh.Text = Date & "d" & Format(Val(Right(lsph.Text, 3)) + 1, "###000")
End If
If y1.Text <> y2.Text Then
bh.Text = Date & "d" & Format(1, "###000")
End If
End If

Left(lsph.Text, 10) 类型不匹配不是日期类型的数据,这里可以定义的字符串来转换为Date,在带入即可。
Dim ld as string
Dim zd as date

ld=Left(lsph.Text,10)
zd=CDate(ld)
y2.Text = Month(zd)