Fehler in Oliver Tillmann's "Query-Assistent"

06/11/2009 - 15:55 von Michael Alexander | Report spam
Hallo!

Ich habe Olivers Query-Assistent in meine Acc07-DB eingebuat und dort
funktioniert der Export nach Excel nicht, weil ein ganz seltsames Verhalten
auftritt und ich weder eine Erklàrung dafür habe, noch den Fehler finde.

Wenn ich en QA nach Acc07 konvertiere funktioniert er.

Ich speichere eine Abfrae ab, deren SQL-String z.B. 343 Zeichen lang ist.

Diese Abfrage mit irgendeinem Namen kann man bestens nach Excel exportieren.

Ich habe die tbls und beide frms samt Code in meine DB importiert und dort
bricht der Export mit Fehlermeldungen ab.
Für die, die diesen QA nicht kennen:

Es wird eine tmp Query gebildet aus dem SQL-String, der in einer tbl in
einem MEMO-Feld gespeichert wird, abgerufen wird der String aus einer Spalte
eines Listenfeldes:
Function tmpqry()
Dim db As Database, qrydef As QueryDef
Set db = CurrentDb()
Set qrydef = db.CreateQueryDef(Me![ListeBenutzerabfragen].Column(1),
Me![ListeBenutzerabfragen].Column(2))
End Function

Me![ListeBenutzerabfragen].Column(1) ist der Name der qry, z.B. "test"
Me![ListeBenutzerabfragen].Column(2) ist der SQL-String, z.b: SELECT

Wenn ich mir die beiden Felder im Abfrage-Generator der Datenherkunft des
Listenfeldes ansehe, ist der SQL-String richtig in der Lànge, z.B. 343
Zeichen lang, bei der Ausführung der o.a. Function bricht er nach 255
Zeichen ab!!

D.h. ein Debug.Print Me![ListeBenutzerabfragen].Column(2) bringt nur 255
Zeichen!!

Eine SQL < 255 Zeichen hingegen funktioniert ohne Probleme!

Bei der Original-MDB wird der gesamte gespeicherte String ausgeführt, daher
funktioniert der Export. Ich habe den Code jedoch 1:1 übernommen.

Hat jemand eine Idee, was da schief làuft??

Anm.: in der Zwischenzeit habe ich es anders gelöst, aber interessante wàre
es schon, woran das liegen kann.
Workaround:
Function tmpqry()
Dim db As Database, qrydef As QueryDef
Dim strSQL As String
strSQL = DLookup("SQLString", "tbl_StoredQuerys", " [ID]= " &
Me![ListeBenutzerabfragen])
Set db = CurrentDb()
Set qrydef = db.CreateQueryDef(Me![ListeBenutzerabfragen].Column(1), strSQL)
End Function


Danke
Michael

Acc07 SP2, Viste HE SP2
 

Lesen sie die antworten

#1 Karl Donaubauer
06/11/2009 - 19:37 | Warnen spam
Michael Alexander wrote:

Ich habe Olivers Query-Assistent in meine Acc07-DB eingebuat und dort
funktioniert der Export nach Excel nicht, weil ein ganz seltsames
Verhalten auftritt und ich weder eine Erklàrung dafür habe, noch den
Fehler finde.
Wenn ich en QA nach Acc07 konvertiere funktioniert er.

Ich speichere eine Abfrae ab, deren SQL-String z.B. 343 Zeichen lang
ist.
Diese Abfrage mit irgendeinem Namen kann man bestens nach Excel
exportieren.
Ich habe die tbls und beide frms samt Code in meine DB importiert und
dort bricht der Export mit Fehlermeldungen ab.
Für die, die diesen QA nicht kennen:

Es wird eine tmp Query gebildet aus dem SQL-String, der in einer tbl
in einem MEMO-Feld gespeichert wird, abgerufen wird der String aus
einer Spalte eines Listenfeldes:
Function tmpqry()
Dim db As Database, qrydef As QueryDef
Set db = CurrentDb()
Set qrydef = db.CreateQueryDef(Me![ListeBenutzerabfragen].Column(1),
Me![ListeBenutzerabfragen].Column(2))
End Function

Me![ListeBenutzerabfragen].Column(1) ist der Name der qry, z.B. "test"
Me![ListeBenutzerabfragen].Column(2) ist der SQL-String, z.b: SELECT

Wenn ich mir die beiden Felder im Abfrage-Generator der Datenherkunft
des Listenfeldes ansehe, ist der SQL-String richtig in der Lànge,
z.B. 343 Zeichen lang, bei der Ausführung der o.a. Function bricht er
nach 255 Zeichen ab!!

D.h. ein Debug.Print Me![ListeBenutzerabfragen].Column(2) bringt nur
255 Zeichen!!

Eine SQL < 255 Zeichen hingegen funktioniert ohne Probleme!

Bei der Original-MDB wird der gesamte gespeicherte String ausgeführt,
daher funktioniert der Export. Ich habe den Code jedoch 1:1
übernommen.
Hat jemand eine Idee, was da schief làuft??
...



Bist du sicher, dass es in àlteren Versionen mit mehr als 255 Zeichen
funktioniert? Listenfelder können in allen Access-Versionen maximal
255 Zeichen pro Spalte enthalten. Das ist also eine ewige Grenze.

Oder geht es da auch irgendwie um den Export nach Excel?
Den Punkt habe ich nicht ganz verstanden. Bei Exporten nach Excel
kann das Verhalten bezüglich des Abschneidens von Memos in
versch. Access-Versionen durchaus unterschiedlich sein.

Servus
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com

Ähnliche fragen