Hi, Munich!
Lecker. Für mich noch ein bisschen Sahne dazu:wink:
*g*
Wildschwein à la creme…
Was meinst Du mit „identische“ Abfragen? Willst Du auf alle
Tabellen zugleich zugreifen, oder auf jede einzeln? Tabellen
(und auch Abfragen) „zusammenfahren“ funktioniert mit UNION,
z. B. SELECT Spalte1 Kosten Spalte3 Spalte4 Spalte5
Seriennummer FROM Tabelle2004 UNION SELECT Spalte1 Kosten
Spalte3 Spalte4 Spalte5 Seriennummer FROM Tabelle2005. Dann
hast Du eine Abfrage, die wie eine Deiner Tabellen aussieht.
- Die Tabellen sind gleich - heissen aber anders, sind eben
jährlich angelegte Auswertungen über Ersatzteilverbräuche.
Diese Tabellen müssen mit den gleichen Abfragen abgearbeitet
werden.
- dieses UNION SELECT klingt sehr gut… wenn ich 2 Tabellen
habe kann ich doe so zusammenfügen, oder?
Wo mache ich das? In der SQL Entwurfsansicht?
Kann ich dann auch noch eine zusätzliche Spalte einfügen, in
der ich dann jeweils nochmal die Herkunft der Daten eintrage
also eine Spalte in der entweder 2003 oder 2004 steht?
Das geht auch. UNION kann allerings nicht der Entwurf, sondern wirklich nur SQL. Du kannst aber die „Einzelabfragen“ über die Entwurfsansicht zusammenbasteln, kopieren und dann per UNION verbinden. Zu der zusätzlichen Spalte: Klar geht das:
SELECT 2003 AS Jahr, Feld1, Feld2, Feld3
FROM Tabelle2003 WHERE Feld1 LIKE '\*moin\*'
UNION
SELECT 2004 AS Jahr, Feld1, Feld2, Feld3
FROM Tabelle2004 WHERE Feld1 LIKE '\*moin\*'
ergibt z. B.
Jahr Feld1 Feld2 Feld3
2003 moin,tach 1 blubb
2003 tach,moin 1 hugo
2004 moinmoin 2 hundert
wenn ich dieses Union Dings verwenden kann dürfte es nicht
mehr relevant sein denke ich. Die Idee war in einer Tabelle
den Tabellennamen der Quelle für die Abfrage zu hinterlegen
und wie man dann sagen soll dass dieser Tabellenname für die
Abfragen gebraucht wird… (klingt komplex glaub ich ^^)
Ginge auch; dabei dann die Abfrage zur Laufzeit zusammenbauen mit CreateQueryDef oder dem Zuweisen der SQL-Eigenschaft zu einer bestehenden Abfrage.
naja - Abfrage 3 arbeitet auf der Basis der Daten von Abfrage
2, die ihre Daten aus Abfrage 1 holt, die die Daten aus der
Tabelle holt…
Das dauert schon, vor allem, wenn Du dann noch Textkriterien vergleichen lässt. Musst Du halt mal ausprobieren. Es gibt dann noch diverse Möglichkeiten, die Abfragen zu optimieren. Dazu muss man dann aber schon ein wenig weiter in die Materie einsteigen. Als grober Trend: Selektion (einschränkende Auswahl) so früh wie möglich in der Abfrage, Zusammenführen (JOINs und UNION) so spät wie möglich.
das klingt so als arbeitest Du fast nur mit den SQLs… ich
bin da aber noch relativ unerfahren 
Jein. Einfache Abfragen klicke ich mir mit dem Entwurfsassistenten zusammen, ändere fest eingetragene Kriterien ggf. durch Variablen per Code und tue dann so, als wäre der resultierende SQL-String auf meinem eigenen Mist gewachsen.
ich denke da steckt ne Menge power drin… wenn ichs verstehen
würde was welcher Befehl macht ^^
Das tut es zweifelsohne. Suche mal in der Online-Hilfe nach allem, was mit SQL zu tun hat. Oder suche so was wie eine SQL-Referenz. Die meisten Konstrukte gibt es auch unter Access, ggf. in leichter Dialekt-Abart.
Also baust Du Dir am besten ein Formular mit
Eingabemöglichkeit der Filterkriterien (im Luxus auch die
Auswahl des Vergleichoperators: entspricht, beginnt mit, endet
mit, enthält, ist leer, ist nicht leer, …) und verarbeitest
dann alle Eingaben zu einer WHERE- bzw. Filter-Bedingung, die
Du dann einem Formular bzw. obiger Gesamtabfrage zuordnest.
die Frage ist nur wie man sowas macht *g*
Wie oben. Formular mit Eingabe der Werte, dann bei Klick auf Schaltfläche den eigens gestrickten SQL-Befehl „nachbauen“ und mit den Eingaben setzen. Diesen SQL-Befehl kannst Du dann ja als Datenquelle für ein Formular oder Bericht angeben. Also z. B.
strSql = "SELECT 2003 AS Jahr, Feld1, Feld2, Feld3" \_
& " FROM Tabelle2003 WHERE Feld1 LIKE '\*" \_
& Me.txtFilter1 &"\*' UNION " \_
&" SELECT 2004 AS Jahr, Feld1, Feld2, Feld3 " \_
&" FROM Tabelle2004 WHERE Feld1 LIKE '\*" \_
& Me.txtFilter1 &"\*'"
DoCmd.OpenForm DeinFormular,....,strSql
und dann z. B. im Formular
Me.RecourdSource = Me.OpenArgs
Gruß, Manfred