我的程序:

sqlstr = "select * From load where convert (char,s_date,111) like'sdate'"i = 0
Do While i < 4
        value(i) = 0
        i = i + 1
Loop
dccmd.CommandText = sqlstr
dccmd.CommandType = adCmdText
dccmd.ActiveConnection = dcconn
Set dcrs = dccmd.Execute()If (Not dcrs.BOF) Then
        dcrs.MoveFirst
End If
  
i = 0
Do While (i < 4)
       value(i) = dcrs.Fields("s_date")(****)
       dcrs.MoveNext
       i = i + 1
Loop
    Set dcrs = Nothing
    dccmd.cancel

其中表格load 中字段有:s_date (datetime) e_date (datetime)
变量sdate是(string)且值为“2003-01-01”
当我执行到(****)处,系统提示我“实时错误‘3021’BOF或EOF中有一个是“真”,或者当前的记录以被删除,所需的操作要求一个当前的记录。
为什么会出现这个问题???

解决方案 »

  1.   

    If dcrs.BOF And dcrs.EOF Then
       msgbox "没有记录!!!"   
       exit sub
    Else
       dcrs.MoveFirst
    End If
      

  2.   

    sqlstr = "select * From load where convert(char,s_date,111) like 'sdate'"i = 0
    Do While i < 4
            value(i) = 0
            i = i + 1
    Loop
    dcrs.CursorLocation=adUseClient
    dcrs.open sqlstr,dcconn,3,3
    If dcrs.BOF And dcrs.EOF Then
       msgbox "没有记录!!!"   
       exit sub
    Else
       dcrs.MoveFirst
    End Ifi = 0
    Do While (i < 4)
           value(i) = dcrs.Fields("s_date")(****)
           dcrs.MoveNext
           i = i + 1
    Loop
    dcrs.close 
    Set dcrs = Nothing
        
      

  3.   

    TO: chenyu5188(蓝色情调)
    我把你的代码替换了我的
    If (Not dcrs.BOF) Then
            dcrs.MoveFirst
    End If
    运行时的确提示我,没有记录,可是为什么呢?
    我得SQL语句select * From load where convert (char,s_date,111) like'sdate'在Query Analyzer里运行时有运行结果的呀。结果是:
    s_date                      e_date                          department 
    --------------------------- ---------------------------     ---------- 
    2003-01-01 07:00:00.000     2003-01-01 10:00:00.000              js  
      

  4.   

    sqlstr = "select * From load where convert (char,s_date,111) like'" & sdate & "'"
      

  5.   

    楼主你那个s_datedatetime型的,但是那个数组你初始化时都为数值型的0,不妥吧。
      

  6.   

    你的SQL语句有问题你的state是变量吧?!如果是的话SQL语句要这样写:sqlstr = "select * From load where convert(char,s_date,111) like '" & sdate & "'"
      

  7.   

    那我该如何设置这个value变量呢,它在我程序中的作用是存放满足我日期要求的一些记录2003-01-01 07:00:00.000     2003-01-01 10:00:00.000              js ,因为我这些记录还将写回数据库中,并且在控件中显示。*^_^*
      

  8.   

    是变量
    Dim sdate As String
    。。
    year = DTPicker_que.year
    mon = DTPicker_que.Month
    day = DTPicker_que.day
    sdate = year & "/" & Format(mon, "00") & "/" & Format(day, "00")
      

  9.   

    同意chenyu5188(蓝色情调) ,up!
    sdate = year & "—" & Format(mon, "00") & "—" & Format(day, "00")
      

  10.   

    TO:cbr7619(cbr7619)
    如果按照你的sdate = year & "—" & Format(mon, "00") & "—" & Format(day, "00")
    就发生没有记录的现象了,因为convert(char,s_date,111)输出的日期格式是****/**/**
    我现在的问题仍然是运行程序是系统跳出实时错误‘3021’