Problem mit Access-Abfrage

27/03/2008 - 18:39 von Albrecht Schäffer | Report spam
Hallo zusammen,

ich habe folgendes Problem bei der Portierung einer VB6-Anwendung nach
VB2005:

In Access sind umfangreiche Abfragen vorhanden die mehrfach andere Abfragen
aufrufen.
Das Ergebnis dieser Abfragen wird per Einfügeabfrage wieder in eine Tabelle
gespeichert.
Unter VB6 lies sich das ganze mit DAO .Execute problemlos aufrufen.
Auch das direkte Aufrufen der Einfügeabfrage in Access funktioniert ohne
Probleme.

Unter VB2005 kommt beim Aufruf mittels ExecuteScalar eine Fehlermeldung:

OleDbException wurde nicht behandelt

Sie wollten eine Abfrage ausführen, die den angegebenen
Ausdruck '[Schnitte]+[Sonderschnitte]' nicht als Teil der
Aggregatfunktion einschließt.

Der Ausdruck '[Schnitte]+[Sonderschnitte]' liegt realtiv tief in der
Aufrufhierachie (5 Abfragen
bauen auf einander auf)

Hat jemand irgend eine Idee, wie ich hier weiter kommen könnte?

Vielen Dank

Albrecht
 

Lesen sie die antworten

#1 Elmar Boye
27/03/2008 - 20:16 | Warnen spam
Hallo Albrecht,

Albrecht Schàffer schrieb:
ich habe folgendes Problem bei der Portierung einer VB6-Anwendung nach
VB2005:

In Access sind umfangreiche Abfragen vorhanden die mehrfach andere
Abfragen aufrufen.
Das Ergebnis dieser Abfragen wird per Einfügeabfrage wieder in eine
Tabelle gespeichert.
Unter VB6 lies sich das ganze mit DAO .Execute problemlos aufrufen.
Auch das direkte Aufrufen der Einfügeabfrage in Access funktioniert ohne
Probleme.



Auch nur weil Du Access Gutmütigkeit ausnutzt ;-)
Mit Access XP und spàter dürfte das nicht mehr funktionieren, wenn Du
unter Optionen -> Tabellen/Abfragen -> SQL Server kompatible Syntax
aktivierst.

Unter VB2005 kommt beim Aufruf mittels ExecuteScalar eine Fehlermeldung:

OleDbException wurde nicht behandelt

Sie wollten eine Abfrage ausführen, die den angegebenen
Ausdruck '[Schnitte]+[Sonderschnitte]' nicht als Teil der
Aggregatfunktion einschließt.



Grundsàtzlich ist es in (ANSI) SQL nicht erlaubt in einer Abfrage mit
GROUP BY außer den Gruppierungsspalten etwas anderes als eine der
Aggregatfunktionen (MIN, MAX, SUM, COUNT usw) zu verwenden.

Der Ausdruck '[Schnitte]+[Sonderschnitte]' liegt realtiv tief in der
Aufrufhierachie (5 Abfragen bauen auf einander auf)



Grundsàtzlich wàre ein Überarbeiten auch der Abfrage schon sinnvoll,
wenns denn neues VB.NET werden soll.

Eher vorlàufig mag ein FIRST([Schnitte]+[Sonderschnitte])
oder auch LAST bzw. MIN in der jeweiligen Abfrage helfen.
Schau aber nach ob das Ergebnis das gewünschte ist.

Gruß Elmar

Ähnliche fragen