我有一个名为
DoubleBookings
的子例程,它查询另外 2 个 Excel 工作表并将查询输出到 DoubleBookings 工作表。目前它正在选择正确的信息,但在纸张的另一面上输出一半的信息?一切都工作正常,直到我添加标题。其他 4 张工作正常,但由于此 select
声明是 INNER JOIN
,因此会导致下图所示的问题。
Sub FindDoubleBookings()
Dim conn As New ADODB.connection
Dim rng As Excel.Range
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 12.0;HDR=YES;"";"
Dim doubleQuery As String
With Sheets("Inbounds")
Dim dataRef As String
dataRef = Intersect(.UsedRange, .Range("8:" & .Rows.Count)).Address(0, 0)
doubleQuery = "Select [vrid],[route],[schedule_date],[vehicle_carrier],[carrier_name],[orig_planned_yard_checkin_time],[orig_planned_yard_checkout_time],[dest_node]from [Inbounds$" & dataRef & "] AS Delivery INNER JOIN [Outbounds$" & dataRef & "] AS Collection on Delivery.actual_vehicle = Collection.actual_vehicle where Delivery.[orig_planned_yard_checkin_time] <= Collection.[orig_planned_yard_checkout_time] order by [Delivery.Route]"
End With
Dim drs As New ADODB.Recordset
drs.Open doubleQuery, conn
Dim wSht As Worksheet
Set wSht = ThisWorkbook.Worksheets("DoubleBookings")
With wSht
.Cells.clearContents
For i = 0 To drs.Fields.Count - 1
.Cells(8, i + 1).Value = drs.Fields(i).Name
Next i
.Range("A9").CopyFromRecordset drs
End With
ThisWorkbook.Sheets("DoubleBookings").Activate
conn.Close
End Sub
将
Select
语句更改为以下内容,效果很好。
感谢您的帮助。
doubleQuery = "Select Delivery.[vrid],Delivery.[route],Delivery.[Schedule_date],Delivery.[vehicle_carrier],Delivery.[carrier_name],Delivery.[actual_vehicle],Delivery.[dest_planned_yard_checkin_time],Delivery.[dest_planned_yard_checkout_time]," & _
"Collection.[vrid],Collection.[route],Collection.[Schedule_date],Collection.[vehicle_carrier],Collection.[carrier_name],Collection.[actual_vehicle],Collection.[orig_planned_yard_checkin_time],Collection.[orig_planned_yard_checkout_time],Collection.[dest_node] from [Inbounds$" & dataRef & "] AS Delivery INNER JOIN [Outbounds$" & dataRef & "] AS Collection on Delivery.actual_vehicle = Collection.actual_vehicle where Delivery.[dest_planned_yard_checkin_time] >= Collection.[orig_planned_yard_checkout_time] order by [Delivery.Route]"