Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.06.2024 19:56:24
17.06.2024 19:39:46
Anzeige
Archiv - Navigation
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenbankabfrage nach Datum per SQL aus VBA

Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 08:52:19
Riediger
Hallo Leute,
ich habe bei meiner Excel-Version ein seltsames Phänomen, das mich verzweifeln lässt.
Ich möchte aus einer Datenbank Datensätze nach einem Datum auslesen. Dabei akzeptiert Excel allerdings nur entweder die Abfrage nach Jahr und Monat, oder Jahr und Tag...usw nur nicht die Abfrage nach Jahr, Monat und Tag? Ich kappiers einfach nicht - könnt Ihr mir bitte helfen ?
Hier ein Auszug aus meinem Code
Sub Auswertung()
Dim seltag1, seljahr1, selmonat1 As Integer
dsn = UCase(UserForm1.TextBox1.Value)
von_datum = UserForm1.TextBox2.Value
seltag1 = Day(UserForm1.TextBox2.Value)
selmonat1 = Month(UserForm1.TextBox2.Value)
seljahr1 = Year(UserForm1.TextBox2.Value)
......
Sheets("Abfrage2").Select
With ActiveSheet.QueryTables.Add(Connection:=Datenbankname, Destination:= _
Range("A1"))
.CommandText = Array("SELECT bab_typ,bab_nr,te,tr,rueckm_menge,weeks(fruehest_start)KW, " & _
"fruehest_start,status,year(fruehest_start) from bab_afo " & _
"where (year(fruehest_start) >= " & seljahr1 & ") and (month(fruehest_start) >= " & selmonat1 & " )and (day(fruehest_start) >= " & seltag1 & " ) and bab_typ=20 and status <> 99 order by KW ")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
Das Problem liegt in der Where Klausel, die Fehlermeldung lautet: Laufzeitfehler 13 - Typen unverträglich
Vielen Dank schon mal vorab für Eure Mühen

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 09:03:00
Armin
Hallo Riediger,
der Fehler kommt nicht von Excel sondern vom ODBC, ich würde sagen der Fehler liegt im Select des Datenbankzugriffes. Nicht jeder Select von SQL funktioniert sauber im ODBC. Versuche zunächst einen ODBC zugriff Manuel. Wenn der funktioniert, kannst Du diesen Select dann nutzen.
Gruß Armin

AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 09:31:00
Riediger
Hallo Armin,
vielen Dank schonmal für Deinen Lösungsversuch. Ich habe das SQL manuell mal laufen lassen und die Datumswerte mit ' ' eingegeben. Das hat als reine SQL-Abfrage mit der Software Interactive SQL von Adaptive Server Anywhere prima funktioniert, aber wenn ich diese Abfrage dann unter VBA ausführe und die Datumswerte manuell eingebe, dann funktionierts nicht mehr (D.h. nur mit Jahr und Monat oder nur mit Monat und Tag schon, nur mehr als zwei Abfragen gleichzeitig packt er nicht). Wie kann ich das sonst noch irgendwie hinbekommen?

Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 09:42:41
Renee
Hi Riediger,
Stell mal den SQL, der funktioniert in Klarschrift (nicht VBA) hier rein.
Greetz Renee

AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 09:58:00
Luschi
Hallo ,
bei der Sql-Abfrage muß der gesamte Sql-String stimmig sein. Die folgende Passage ist es wohl nicht:
weeks(fruehest_start)KW
Das müßte wohl lauten: weeks(fruehest_start) KW (also mit 1 Leerzeichen als Lücke)
oder weeks(fruehest_start) As KW, denn Du willst doch, daß der Rechenausdruck die Spaltenüberschrift "KW" erhält.
Zudem würde ich statt "ODBC" "ADODB" nehmen. Wenn man schon den Abfrage-String per Vba zusammensetzt, dann kann man auf neuere Abfrage-Methoden umsteigen.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 10:11:00
Riediger
Hallo Luschi,
auch Dir vielen Dank für den Lösungsversuch, aber auch das hat leider nicht funktioniert. Ich bin Neuling bei der Abfrage von Datenbanken per vba/sql, daher ist mein Code vielleicht etwas umständlich, aber irgendwie funktionieren müsste es doch eigentlich trotzdem ?

AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 09:41:00
Renee
Mazwara Riediger,
Das der Fehler an ODBC liegt ist ziemlich unwahrscheinlich, wenn nicht sogar auszuschliessen!
Versuch mal folgendes:
Ersetze .CommandText = Array(....)mit:

.Sql = "SELECT bab_typ,bab_nr,te,tr,rueckm_menge,weeks(fruehest_start) KW, " & _
"  fruehest_start,status,year(fruehest_start) " & _
"FROM bab_afo " & _
"WHERE (year(fruehest_start) >= " & seljahr1 & ")" & _
"  AND (month(fruehest_start) >= " & selmonat1 & " )" & _
"  AND (day(fruehest_start) >= " & seltag1 & " )" & _
"  AND bab_typ=20 AND status  99 " & _
"ORDER by KW "


Wenn ein Fehler auftritt, wie äussert er sich? Gibt es ein Meldung?
Kommen überhaupt Datensätze zurück?
Was ist das für ein Typ von Datenbank?
Wie ist das Datumsformat der Datenbank?
Greetz Renee

Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 10:05:41
Riediger
Hallo Renee,
vielen Dank für den Tipp. Hat mich leider auch nicht weiter gebracht. Es kommt jetzt Laufzeitfehler 1004 - Syntaxfehler. Wenn ich z.B. die Abfrage nach dem Tag rausnehme, dann funktionierts einwandfrei.
Der Original - Code lautet:
SELECT bab_typ,bab_nr,te,tr,rueckm_menge,weeks(fruehest_start)KW, fruehest_start,status,year(fruehest_start) from bab_afo where (year(fruehest_start) >= '2007')
and (month(fruehest_start) >= '1' ) and (day(fruehest_start) >= '1' ) and bab_typ=20 and status <> 99 order by KW
Es handelt sich um eine Sybase - Datenbank
Wenn alle Stricke reissen, dann lösche ich halt nachträglich aus meiner Tabelle die Zeilen raus, die ich nicht haben will, aber irgendwie ärgern tut's mich schon , dass das nicht funktionieren will

Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 10:29:00
Renee
Hi Riediger,
Im Unterschied zum funktionierenden, fehlen im VBA-SQL die Hochkommas. Also probier mal:

With ActiveSheet.QueryTables.Add(Connection:=Datenbankname, Destination:= _
Range("A1"))
.CommandText = Array("SELECT bab_typ,bab_nr,te,tr,rueckm_menge,weeks(fruehest_start)KW, " & _
"fruehest_start,status,year(fruehest_start) from bab_afo " & _
"where (year(fruehest_start) >= '" & seljahr1 & "') and (month(fruehest_start) >= '" &  _
selmonat1 & "' )and (day(fruehest_start) >= '" & seltag1 & "' ) and bab_typ=20 and status  99 order by KW ")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With


Greetz Renee

Anzeige
AW: Datenbankabfrage nach Datum per SQL aus VBA
31.07.2007 10:53:00
Riediger
Hallo Renee,
das funzt leider auch nicht. Jetzt kommt die Fehlermeldung 'Typen - unverträglich' .
Ich hab mir die unnötigen Datensätze nachträglich gelöscht und frage jetzt eben nur über das Jahr und den Monat ab. Das geht wenigstens. Aber an einer Lösung bin ich natürlich nach wie vor interessiert. Nur mir fällt leider keine Variante mehr ein.
Viele Grüße
Martin

Ich weiß ja nicht, ob sich das inzwischen...
02.08.2007 04:43:53
Luc:-?
...geändert hat, Martin,
aber vor 5 Jahren waren unsere Programmierer der Ansicht, das SyBase-DBs nur sehr schlecht mit MS-Produkten zusammenarbeiten und man es deshalb lassen sollte. Wenn das noch so sein sollte, stehen dir noch etliche Mühen ins Haus. Außerdem hat Sybase einen eigenen SQL-Dialekt. Deine Abfrage fkt aber als direkte DB-Abfrage? Mir ist so als ob da nicht ab und an noch Semikolons zum Befehlsabschluss reingehören. Aber wahrscheinlich verträgt sich der SyBase-Dialekt nicht mit dem MS-SQL-Dialekt. VBA wird vermutlich irgendwas erzeugen, was SyBase nicht versteht.
Gruß Luc :-?
Anzeige

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige