Excel.Query mit Excel2003 UND Access2003 (Achtung: Viel zu lesen)

04/01/2010 - 21:47 von Alexander Bierig | Report spam
Hallo,

mich bringt das Query des Excels manchesmal doch zum Ràtseln

Problemstellung:

Im Access eine Query mit sehr Subqueries erstellt (auf mehrere verlinkte
Datenbanken)
im Excel eine externe Abfrage auf das Access udn eine Access.Query gesetzt.
Das Ganze für sehr viele Sheets gemacht in einer Mappe, diese lassen sich ja
dann alle mit einem Mausklick aktualisieren...

Wenns dummlàuft auch noch mit Funktionen, welche das Excel nicht kennt
(Datepart evtl). Die Query zur Sicherheit nochmals gkapselt:

Bsp: unten...

Zwei Arten von Fehlermöglichkeiten:
1. es wurden x Parameter zu wenig übergeben
Ups?
2. undefinierte Funktion "datepart" in Statment...Ups?

Nun ist es vom Verhalten so, dass das Excel.Query offenkundig des
SQL-Statement vollstàndig parst und alle Funktionen auflösen will. Dabei
schaut es auch in die Sub-Queries udn deren Subqueries hinein.
Bei unbekannten Access-Funktionen wie datepart...
Ergebnis: Fehlermeldung 2

Oder wenn nix unbekanntes, dann Fehlermeldung1.

Die Frage: Kann man dex Excel.Query sagen,dass es den übergeben SQL-String
schlicht als Befehl abschicken soll ohne sich selbst um den String zu
kümmern?
(wei bei ADO.Command.Commandtype:=Command)

Ich habe einen Workaraound, das ist nicht das Problem. Dennoch würde ich
meinen Ansatzfehler gerne sehen und erkennen.

reales Beispiel:

SELECT Count(i.FIN) AS Anzahl, i.KW, i.Jahr, i.KW_ISO
FROM (select
tf.FIN, IIf(Len(Format([ProdDat],"ww",2))<2,"0" &
Format([ProdDat],"ww",2),Format([ProdDat],"ww",2)) AS KW,
Format([ProdDat],"yyyy",2) AS Jahr, Format([ProdDat],"yyyy",2) &
IIf(Len(Format([ProdDat],"ww",2))<2,"0" &
Format([ProdDat],"ww",2),Format([ProdDat],"ww",2)) as KW_ISO, tf.ProdDat,
tb.Injektortyp
FROM tbl_fin AS tf INNER JOIN tbl_om651_br_varianten AS tb ON tf.BRV =
tb.br_var
WHERE (((tf.ProdDat)>=[tb].[prod_von]) AND ((tb.Injektortyp)="P"))
) AS i
GROUP BY i.KW, i.Jahr, i.KW_ISO
ORDER BY i.KW_ISO;
Gesichert als "qry_prodzahl_KW_OM651_piezo"

und fürs Excel dann folgende Query im Access erstellt:
SELECT a.KW, a.Anzahl_kw, a.Anzahl AS WW, a.Jahr
FROM (select l.KW_ISO, l.KW, l.Jahr, l.Anzahl as Anzahl_kw, Sum(r.Anzahl) AS
Anzahl
FROM qry_prodzahl_KW_OM651_piezo AS l LEFT JOIN qry_prodzahl_KW_OM651_piezo
AS r ON l.KW_ISO >= r.KW_ISO
GROUP BY l.KW_ISO, l.KW, l.Jahr, l.Anzahl
). AS a
ORDER BY a.Jahr, a.KW;
gesichert als "qry_prodzahl_KW_OM651_piezo_kumuliert"

Dem Excel die Externe Abfrage gegeben: select * from
qry_prodzahl_KW_OM651_piezo_kumuliert"
Fehlermedlung: Es wurden 4 Parameter erwartet, aber zu wenig übergeben
Im Access gibts das Ergebnis sofort.


Any Ideas?

MfG

Alex
 

Lesen sie die antworten

#1 Alexander Bierig
07/01/2010 - 22:00 | Warnen spam
Hallo Miteinander,

hat da keiner eine Idee?


Im Access eine Query mit sehr Subqueries erstellt (auf mehrere verlinkte
Zwei Arten von Fehlermöglichkeiten:
1. es wurden x Parameter zu wenig übergeben
Ups?
2. undefinierte Funktion "datepart" in Statment...Ups?

Nun ist es vom Verhalten so, dass das Excel.Query offenkundig des
SQL-Statement vollstàndig parst und alle Funktionen auflösen will. Dabei
schaut es auch in die Sub-Queries udn deren Subqueries hinein.
Bei unbekannten Access-Funktionen wie datepart...
Ergebnis: Fehlermeldung 2

(wei bei ADO.Command.Commandtype:=Command)





MfG

Alex. Bierig

Ähnliche fragen