Excel中的EOF / BOF错误,但SQL语句返回Access中的记录

时间:2018-09-19 21:43:20

标签: excel vba access

新手在这里。 我将Excel用作前端,将Access用作后端来存储数据。我正在尝试进行查询,然后在Excel中使用VBA将值写入Access表。我得到一个BOF或EOF为True的错误,并且在Access中运行SQL语句时,我得到了记录。
任何反馈将不胜感激。预先谢谢你。

这是我的代码:

Sub Write_Timesheet_AJ()
'**********************************************JGT**********************************************
'Transpose Data for HCS
'2018.09.17
'**********************************************JGT**********************************************
strPath1 = "C:\Reports\Timesheets\"
strFile1 = "Timesheets.accdb"
strDB = strPath1 & strFile1

Conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strDB & "; Persist Security Info=False;"
    Conn.Open strDB
    Conn.CursorLocation = adUseClient

'Clear table
strSQL = "Delete * From tbl_Timesheet_AJ;"
    Set rs2 = Conn.Execute(strSQL)

'Transpose Data
strSQL = "Select VisitDate As VisitDt, PatientName, vw_Days_Worked_AJ.CaregiverCode As CaregiverCode, CaregiverName as AideName, CoordinatorName As Coordinator, " _
        & "Street_1 As Street1, Street_2 As Street2, City1 As City, State1 as State, Zip, [Language] as L1 " _
        & "From vw_Days_Worked_AJ Left Join vw_Caregiver_Info_AJ On vw_Days_Worked_AJ.CaregiverCode = vw_Caregiver_Info_AJ.CaregiverCode;"

Set rs1 = Conn.Execute(strSQL)

If rs1.RecordCount = 0 Then    'Record count check
    Debug.Print strSQL
    Debug.Print rs1.BOF
    Debug.Print rs1.EOF

    rs1.Close
    Set rs1 = Nothing
    Conn.Close
'    MsgBox "There are no records; please check data."
Else
    rs1.MoveFirst
    rsCount1 = rs1.RecordCount
    ReDim arrData1(rsCount1)

    For loopX = 1 To rsCount1
    With arrData1(loopX)
        .VisitDt = Format(rs1.Fields("VisitDt"), "m/dd")
        .WkEndDt = Get_Fri_Dt(CDate(rs1.Fields("VisitDt")))
        .DayOfWk = Left(Get_Day_of_Wk(CDate(rs1.Fields("VisitDt"))), 3)
        .PatientName = rs1.Fields("PatientName")
        .CaregiverCode = rs1.Fields("CaregiverCode")
        .AideName = rs1.Fields("AideName")
        .Coordinator = rs1.Fields("Coordinator")
        If IsNull(rs1.Fields("Street1")) Then .Street1 = " " Else .Street1 = rs1.Fields("Street1")
        If IsNull(rs1.Fields("Street2")) Then .Street2 = " " Else .Street2 = rs1.Fields("Street2")
        If IsNull(rs1.Fields("City")) Then .City = " " Else .City = rs1.Fields("City")
        If IsNull(rs1.Fields("State")) Then .State = " " Else .State = rs1.Fields("State")
        If IsNull(rs1.Fields("Zip")) Then .Zip = " " Else .Zip = rs1.Fields("Zip")
        If IsNull(rs1.Fields("L1")) Then .L1 = " " Else .L1 = rs1.Fields("L1")

    strInsert = "Insert Into tbl_Timesheet_AJ " _
            & "(WkEndDt, PatientName, CaregiverCode, AideName, Coordinator, " & .DayOfWk & ", " _
            & "AideName2, CaregiverCode2, Street1, Street2, City, State, Zip, L1) " _
            & "Values (#" & .WkEndDt & "#, '" & .PatientName & "', '" & .CaregiverCode & "', " _
            & "'" & .AideName & "', '" & .Coordinator & "', '" & .VisitDt & "', '" & .AideName & "', " _
            & "'" & .CaregiverCode & "', '" & .Street1 & "', '" & .Street2 & "', '" & .City & "', " _
            & "'" & .State & "', '" & .Zip & "', '" & .L1 & "');"
    Set rs2 = Conn.Execute(strInsert)

        rs1.MoveNext
        End With

        Next loopX

        rs1.Close
        Set rs1 = Nothing
        Conn.Close
    End If
End Sub

0 个答案:

没有答案