Dim ssql1 As String
Dim cnn1 As New adodb.Connection
Dim ret1 As New adodb.Recordset
Const a = "'"
temp = Year(Date)
temp1 = Month(Date)
temp2 = temp & "-" & temp1
'连接数据库
cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\data\kq.mdb" + ";Persist Security Info=False;"
ssql1 = "select 编号,提成,月份 form 收银  Where format(月份,'yyyy-mm') ='" & temp2 & "' And 编号 = '" & text1.Text & "'"Debug.Print ssql1
 
 ret1.Open ssq1l, cnn1
If ret1.BOF And ret1.EOF Then
MsgBox "没有这个会员", , "警告"
Else
Text4.Text = ret1.Fields("提成")
Text5.Text = ret1.Fields("收取费用")
ret1.Close
cnn1.Close
End If以上代码出错,提示数据类型出错

解决方案 »

  1.   

    temp = Year(Date)
    temp1 = Month(Date)
    temp2 = temp & "-" & temp1
    以上三句可以用Format来代替:temp=Format(date,"YYYY-MM")
      

  2.   

    你的查询语句写错了,from 写成了 form 了你的编号是不是数字类型?如果是,它作为查询条件比较的时候不用加''
    ssql1 = "select 编号,提成,月份 from 收银  Where format(月份,'yyyy-mm') ='" & temp2 & "' And 编号 = " & text1.Text 
      

  3.   

    如果日期是字符型的更好,left(日期,10)
      

  4.   

    字符处理速度最慢。是否可以这样做:
    date1 = cdate(format(date, "yyyy-mm") & "-01") 
    date2 = dateadd("m", 1, date1)ssql1 = "select 编号,提成,月份 from 收银 Where 月份 >=" & date1 & " And 月份 <" & date2 & " And 编号 = " & text1.Text
      

  5.   

    我觉得你的format(月份,'yyyy-mm')  月份栏里面是不是含有年份信息呢?
       假如你的月份中一条记录是“05” 你format后yyyy是等于几呢?你自己试试吧!
      

  6.   

    从你的
        Where format(月份,'yyyy-mm')  
     
        不清楚字段  月份   的数据类型,如果是简单记录一个月份的数据的话,那你是查询不到符合 temp2 的数据。检查一下你的 字段:月份