Versuchen, einige alten Code von einem früheren Mitarbeiter zu bearbeiten und über zu einem aktualisierten System, sondern einfach durch Kopieren der Code, der ursprünglich geschrieben wurde I Erhalte den Laufzeitfehler '1004' - SQL Syntax Error. Eine Kopie des Codes ist unten, wenn jemand mich in die richtige Richtung weisen möchte?Führen Sie eine Abfrage von Zugriff über Excel VBA - Runtime Fehler 1004 - SQL Syntax Error
in fett Der Teil scheint zu sein, wo es Fehler ...
Sub MIMacro()
'
'
Sheets("MI_Report").Select
Cells.Select
Selection.ClearContents
Dim StartDate As String
Sheets("Date").Select
StartDate = Range("D2").Value & "-" & Range("C2").Value & "-" & Range("B2").Value & " 00:00:00"
Dim EndDate As String
EndDate = Range("D3").Value & "-" & Range("C3").Value & "-" & Range("B3").Value & " 00:00:00"
Sheets("MI_Report").Select
Dim MySql As String
MySql = "SELECT * FROM `W:\MI Reports\Imprint Reports.mdb`.XGSNOR_MI Katie L XGSNOR_MI Katie L WHERE (XGSNOR_MI Katie L.DelDate>={ts '" & StartDate & "'} And XGSNOR_MI Katie L.DelDate<={ts '" & EndDate & "'}) ORDER BY XGSNOR_MI Katie L.JobNo"
With ActiveSheet.QueryTables.Add(Connection:=Array(Array(_
"ODBC;DSN=MS Access Database;DBQ=W:\MI Reports\Imprint Reports.mdb;DefaultDir=W:\MI Reports;DriverId=25;FIL=MS Access;MaxBufferS" _
), Array("ize=2048;PageTimeout=5;")), Destination:=Range("A1"))
.CommandText = Array(MySql)
.Name = "Query from MS Access Database"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
**.Refresh BackgroundQuery:=False**
End With
Columns("E:E").Select
Selection.NumberFormat = "General"
Columns("C:C").Select
Selection.NumberFormat = "m/d/yyyy"
Range("A1").Select
Selection.End(xlDown).Select
lr1 = Selection.Row
Range("G1").Select
ActiveCell.FormulaR1C1 = "Cost"
Range("H1").Select
ActiveCell.FormulaR1C1 = "Total Pick Cost"
Range("G2").Select
Dim cost As Double
Dim extra As Double
Dim total As Double
cost = 7#
extra = 0.9
total = 0#
temp = "neworder"
Dim e As Integer
For e = 2 To lr1
If temp = "neworder" Then
temp = Range("A" & e).Value
Range("G" & e).Select
ActiveCell.FormulaR1C1 = cost
total = total + cost
Else
temp = Range("A" & e).Value
Range("G" & e).Select
ActiveCell.FormulaR1C1 = extra
total = total + extra
End If
temp2 = Range("A" & e + 1).Value
If temp <> temp2 Then
temp = "neworder"
Range("H" & e).Select
ActiveCell.FormulaR1C1 = total
total = 0
End If
Next e
Columns("G:H").Select
Selection.NumberFormat = "$#,##0.00"
Range("A1").Select
End Sub
Es ist nicht der Code, die SQL-Abfrage ist schlecht formatiert und wird nur in dieser Zeile ausgeführt. –
Haben Sie den DSN auf Ihrem Computer eingerichtet? – braX
Dies ist der FROM-Teil Ihrer Aussage. Es sollte eine Tabelle, mehrere durch Kommata getrennte Tabellen oder etwas komplexere Dinge enthalten, und es sollte keine Leerzeichen enthalten: 'FROM W: \ MI Berichte \ Impressum Berichte.mdb.XGSNOR_MI Katie L XGSNOR_MI Katie L '. Das ist nicht gültig und ich weiß nicht genau, was Sie dort machen wollen. Sie sollten nur dann eine Datenbankadresse eingeben, wenn Sie eine externe Datenbank abfragen, aber Sie geben dieselbe Adresse an, auf die Ihr DSN verweist. Und sind diese Namen Tabellennamen oder Feldnamen? –