Fragensteller
[Access 03] Batch-Query

Frage
-
Hallo,
unterstützt Acces 2003 mehrere Queries hintereinander à la:
string queryString = "SELECT bla FROM blub;" + "SELECT hip FROM hop;" + ... ; OleDBCommand ocmd = new OleDBCommand(queryString, conString); OleDBDataReader odr = ocmd.ExecuteReader(); int i = 0; do{ //odr[i] verarbeiten i++; } while(odr.NextResult())
- Bearbeitet Flux89 Dienstag, 17. Juli 2012 12:07
Alle Antworten
-
Hallo,
Flux89 wrote:
unterstützt Acces 2003 mehrere Queries hintereinander à la:
string queryString = "SELECT bla FROM blub;" + "SELECT hip FROM hop;" + ... ;
Leider nicht. Jet/ACE egal in welcher Version unterstuetzt nur einzelne
SQL-Statements, keine Scripts.Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo,
man könnte eine UNION Abfrage nutzen:
etwa so:
string queryString = "SELECT bla as Spalte_1 FROM blub " + "UNION SELECT hip as Spalte_1 FROM hop;" + ... ;
Bei UNION Abfragen muss nur der Spaltenname jeweils eindeutig sein. Die Ergebnisse werden hintereinander ausgegeben.
In VBA geht das jedenfalls. Probiere es mal aus.
Sonnige Grüße
Frank Hoffmann- Als Antwort vorgeschlagen Frank Hoffmann x28.de Dienstag, 17. Juli 2012 20:45
-
Hallo,
Frank Hoffmann x28.de wrote:
man könnte eine UNION Abfrage nutzen:
etwa so:
string queryString ="SELECT bla as Spalte_1 FROM blub "
+"UNION SELECT hip as Spalte_1 FROM hop;"+...;Dem Beispiel im OP wuerde UNION ALL entsprechen.
Bei UNION Abfragen muss nur der Spaltenname jeweils eindeutig sein. Die
Ergebnisse werden hintereinander ausgegeben.Spaltennamen (sogar die Feldtypen) duerfen durchaus abweichen, aber die
Anzahl der Spalten muss ueber das gesamte UNION-Konstrukt uebereinstimmen.Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Flux89
Was genau willst Du machen? Wenn du das so ausführen könntest, dann würdest Du ja mehrere DataReader erhalten, einen je Query im Command. Mit Access hat das relativ wenig zu tun. Ich bin auch nicht sicher, ob .NET unterstützt, dass ein OleDBCommand mehrere Reader erzeugt, vermutlich nicht.
Wenn Du die Resultsets in einen einzelnen Reader bekommen willst, musst Du eine UNION benutzen, also:
string queryString = "SELECT bla AS DeinFeld FROM blub UNION SELECT hip FROM hop UNION ..."
Gruss
Henry
-
Wenn du das so ausführen könntest, dann würdest Du ja mehrere DataReader erhalten, einen je Query im Command
Soweit ich weiss wird nur ein DataReader erzeugt (auch bei Batch-Queries), aber mehrere ResultSets.
do { while(myDR.Read()) {//Zeile verarbeiten} } while(myDR.NextResult())
So koennte man die Zeilen aller ResultSets durchlaufen.
- Bearbeitet Flux1989 Freitag, 20. Juli 2012 16:29