Office: (Office 2003) mehrere Abfragen verschachteln (SQL)?

Helfe beim Thema mehrere Abfragen verschachteln (SQL)? in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Nur Mut. Wer 14 verschachtelte ABfragen denken kann, wird sich doch nicht von 4 Anführungszeichen verunsichern lassen. Nicke zu den folgenden Sätzen,... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Moerio, 11. Oktober 2009.

  1. mehrere Abfragen verschachteln (SQL)?


     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  2. zu 1:
    gut

    zu 2:
    kommt immer drauf an, in welcher db das ausgeführt wird.

    Bei dbTemp.execute "..." sind die Tabellen von dbtemp die eigenen Tabellen, die daher nicht qualifiziert werden müssen. Tabellenaußerhalb von dbTemp sind dann fremde Tabellen und müssen qualifiziert werden.

    Bei Currentdb.execute "..." ist Currentdb die DB, deren Tabellen zur Hand sind; hier wäre dann die TempDB die fremde, deren Tabellen zu qualifizieren wären.

    Da du die ganze Zeit dbtemp.Execute machst, musstest du alle Tabellen außerhalb von dbtemp mit dem Dateinamen versehen. Es kann da einfacher sein, "das Bein zu wechseln" und das ganze von Currentdb aus aufzuziehen.

    Es ist wie mit einer Tür: wo's zu ziehen gilt, hilft kein drücken *Smilie Wenn du drücken willst, musst du auf die andere Seite der Tür gehen.

    zu 3:
    Ja so sollte es sein. Dann ist vielleicht irgendwo ein Leerzeichen zu wenig oder sowas. Lass dir den ganzen (!) Text der zusammengesetzten SQL mal ausgeben (= schreib ihn in eine Variable und gib die ins Direktfenster aus) und kopiere diese Gesamt-SQL in eine Abfrage. Da wird dir der Fehler genauer beschrieben.

    zu 4:
    Was ist denn unklar? Du verkettest. Denk es dir so:
    ? "Heute ist der " & Date() ergibt im Direktbereich:
    Heute ist der 16.10.2009 (Date wurde von VBA ausgeführt)

    ? "Heute ist der & Date()" ergibt im Direktbereich:
    Heute ist der & Date() (Date wurde als fester Text gedeutet und daher nicht ausgeführt)

    Dass meinte ich mit innen und außen. Du kannst auch "Form" und "Inhalt" dazu sagen.
     
    Atrus2711, 16. Oktober 2009
    #47
  3. \@Atrus2711
    Ich komme leider am Wochende nicht zum probieren ,von daher.
    Neue Woche neues Glück*mrcool


    folgendes hatte ich probiert:
    Code:
    Das führte auch in der Abfrage zum gleichen Fehler.

    Ich hab dann noch was rum probiert und dabei ist folgendes raus gekommen.

    Code:
    Das funktioniert.
    Für mich siehts jetzt so aus das ich nur einmal in der "From-Klausel" den Tabellen Ort bekannt machen muß.
    Sehe ich das richtig?

    Gruß
    Moerio
     
  4. mehrere Abfragen verschachteln (SQL)?

    Ja, die Datei muss nur in der From-Klausel angegeben werden. So wars doch auch in meinen Beispielen?!
     
    Atrus2711, 18. Oktober 2009
    #49
  5. *rolleyes.gif* Ja,wer lesen kann ist klar im Vorteil*rolleyes.gif*

    Ich hatte es Mißverstanden und vor jede Tabellenangabe den Pfad geschrieben.


    Noch mal vielen Dank.*top
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  6. Und ich habs in deinem Code übersehen... *Smilie
     
    Atrus2711, 18. Oktober 2009
    #51
  7. So,nun bin ich bei der letzten Tabelle angelangt und will den Bericht darauf zugreifen lassen.

    Ich hab dann bei Öfnnen des Berichtes die ganzen temporären Tabellen in der tmpDB erstellen lassen und zum Schluß als Datenqelle
    Code:
    angegeben.
    Aber leider wird die tmpDB zu früh geschlossen.

    Wie müßte ich vorgehen das die tmpDB erst "Beim Schließen" des Berichtes gekillt wird.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  8. mehrere Abfragen verschachteln (SQL)?

    Je nach Aufbau deiner DB kannst du
    • die TempDB in einem aufrufenden Formular, das immer geöffnet bleibt, erzeugen (das Form kann ja unsichtbar gemacht werden). Erst beim Schließen des Forms stirbt dann die tempDB mit.
    • oder die TempDb dem Bericht übergeben, z.B. in einer PropertyGet/Set-Prozedur. Diese Property hat dann nur (!) den Sinn, "Ballfänger" für die Tempdb zu sein, damit sie nicht vorzeitig stirbt. Die TempDb wird im Bericht nicht weiter genutzt (außer in der Datenquelle).
     
    Atrus2711, 19. Oktober 2009
    #53
  9. Mhm,und schon haste mich wieder erwischt.*boah

    Ich hatte mir folgendes gedacht.
    Ich öffne den Bericht.
    Beim öffnen wird die temporäre Datenbank erzeugt
    Meine Abfragen werden durchlaufen.
    Der Bericht wird aufgrundlage der letzten erstellten Tabelle angezeigt.
    Ich schließe den Bericht
    Die temporäre Datenbank wird gekillt.


    Code:
    *confused.gif*
    Ich bin des Programmierens leider nicht soo mächtig.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  10. Denke mal so:
    1. Du hast ein Formular (!), das den Bericht aufruft.
    2. Diese Formular erzeugt die TempDB und legt sie in einer Formularvariablen ab. Es führt auch die Datenverwurstung durch (14 x db.execute ...)
    3. Wenn die Daten verwurstet sind, steht die tempDB immer noch zur Verfügung, weil sie im Formular deklariert ist. Solange das geöffnet bleibt, lebt die TempDb.
    4. Der Bericht kann jetzt vom Formular aus auf die TempDb zugreifen, denn das Formular hat die solange am Leben gehalten.
    5. Der Bericht wird angezeigt. Stundenlang. Das Formular ist solange unsichtbar (aber noch geöffnet)
    6. Beim Schließen des Berichts wird das Formular wieder sichtbar. Noch lebt die TempDB, da das Formular nach wei vor auf sie verweist.
    7. Beim Schließen des Formulars (oder bei sonst einem Ereignis, bei dem du sagst, die tempDB hat ausgedient) wird das Formular geschlossen. Dabei wird (besser explizit oder sonst implizit) die TempDB-Objektvariable vernichtet. Das sollte der letzte Verweis auf die Temp gewsen sein, die sich daraufhin selbst entleibt.

    Im Bericht ist das alles nicht so günstig aufgehoben, weil der ja auf einer Tabelle basiert, die erst zu seiner Laufzeit entsteht....

    Wenn du magst, mach ich dir auch eine Demo.
     
    Atrus2711, 19. Oktober 2009
    #55
  11. Guten Morgen,

    das mit dem Formular klingt erst mal gut.
    Das Problem was vieleicht dabei auftaucht ist, das ich ein Menu verwende (Treemenu) in dem die Formulare nicht geschlossen werden,wenn Sie nicht gebraucht werden,sondern nur über Visible= True/False geschaltet werden.
    Würde also wahrscheinlich für mich erst mal heisen das die temp Datenbank immer am Leben ist,weil das Formular ja nie wirklich geschlossen wird.

    Oder kommt es nur darauf an bei welchem Ereigniss(Beim Öffnen,Beim Laden,Bei Focus erhalt) man den Code ablaufen läst?

    Für ein kleine Demo wäre ich Dir natürlich sehr dankbar.
    Für mich ist es immer einfacher an einem Beispiel etwas nach zu vollziehen.

    Gruß
    Moeiro
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Hi,

    das Treemenu hab ich auch *Smilie

    Die tempDB muss ja nicht im Treemenu-Formular deklariert sein. Im Gegenteil: die TempDB wirst du ja immer nur temporär brauchen (daher ja der Name), d.h. sie sollte nur in den Formularen deklariert und erzeugt werden, die befristet leben. Außerde könnte es sein, dass die Zugriffe auf die gleiche temp-Datei sich gegenseitig blockieren.

    Ich habe mal eine Demo beigelegt. Der Obere Knopf erzeugt die tempDB, kopiert da Daten rein und zeigt einen Bericht, der da hin greift. Beim schließen der Berichts bleibt die TempDb zunächst noch erhalten. Wird er aber erneut aufgerufen, "überschreibt" die neue TempDb den Objektverweis auf die alte, was die alte TempDB killt.

    Wenn du die alte TempDb vorher killen willst (warum?), dann brauchst du irgendein Ereignis/Auslöser. Der untere Button demonstriert das. Aber behalte zunächst mal die Lebenszeit der tempDB im AUge, wenn du den Bericht ein paar Mal hintereinander startest.

    Spätestens bei Form_Close wird aufgeräumt, da dann alle Objekt verncihtet werden.
     
    Atrus2711, 19. Oktober 2009
    #57
  13. mehrere Abfragen verschachteln (SQL)?

    Hallo Atrus2711,

    Danke für das Beispiel.
    Ich bekomme beim starten einen Fehler.

    Der Code bleibt an der Stelle:

    rptDemo.RecordSource = "SELECT * FROM [" & dbTemp.Fullname & "].ArtikelPush;"

    mit dem Fehler 2191 hängen.

    Gruß
    Moerio
     
  14. OK, das liegt an Access 2003, habe hier 2007. Da gibts die Layoutansicht noch nicht, in der das geht.

    Gut, dann kommt eine kleine Zwischenschicht ins Spiel: eine ABfrage, auf der der Bericht "immer" fußt, und in der die Datenquelle ausgetauscht wird.

    Anbei.
     
    Atrus2711, 20. Oktober 2009
    #59
  15. *winner Super,jetzt gehts.

    Danke,werd mal rein sehen und schauen ob ich das verstehe.
     
Thema:

mehrere Abfragen verschachteln (SQL)?

Die Seite wird geladen...
  1. mehrere Abfragen verschachteln (SQL)? - Similar Threads - Abfragen verschachteln SQL

  2. Abfrage: Anzahl von Kriterium >0

    in Microsoft Access Hilfe
    Abfrage: Anzahl von Kriterium >0: Hallo, [ATTACH] Ich versuche gerade, die Anzahl der belegten Plätze auf einem LKW per Abfrage zu ermitteln. Dabei wäre dann FSPal > 0. Leider zeigt er mir die Anzahl der Plätze an. [ATTACH]...
  3. Teil des Zellinhaltes abfragen in VBA

    in Microsoft Excel Hilfe
    Teil des Zellinhaltes abfragen in VBA: Guten Tag, ich möchte in Zelle E1 den linken 4-stelligen Teil in Zelle A3 abfragen. Habs versucht mit IF (LEFT(R[2]C[-3],4) = "8396") then ... Else ... End If Wer kann...
  4. Verliert irgendwann die Selektive Abfrage von UFO

    in Microsoft Access Hilfe
    Verliert irgendwann die Selektive Abfrage von UFO: Guten Tag Ich habe ein HF mit darin befindlichem UF. Die Abfrage der Teilnehmer im Uf bezieht sich immer auf den Kurs-Typ im HF Solang ich das Formular neu erstelle, funktioniert das...
  5. automatische Abfrage URL via Artikelnummer

    in Microsoft Access Hilfe
    automatische Abfrage URL via Artikelnummer: Guten Tag Bei der Aktualisierung der Homepage und aufgrund eines Plugin-Wechsels des Üebersetzungstools hat wordpress alle Permalinks der Produkte verändert. Unserem Webmaster war nicht bekannt,...
  6. Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern

    in Microsoft Access Hilfe
    Vorkommen von Kunden in mehreren Tabellen per Abfrage filtern: Hallo Community, ich habe folgendes Problem beim Nutzen einer Access-Datenbank. Zunächst die Datenstruktur: [ATTACH] Dies sind die Tabellen meiner Datenbank. In der Tabelle "Adressliste"...
  7. mit String aus Formular Übereinstimmung in Abfrage prüfen

    in Microsoft Access Hilfe
    mit String aus Formular Übereinstimmung in Abfrage prüfen: Hallo liebe Mitglieder Ich verzweifle wieder einmal fast und wende mich an Euch. Ich möchte gern aus einem Formular heraus (Click) prüfen, ob übereinstimmende Datensätze in einer Abfrage vorhanden...
  8. "And" und "Or" in If-Abfrage verschachteln

    in Microsoft Excel Hilfe
    "And" und "Or" in If-Abfrage verschachteln: Hallo liebe Community, leider komme ich mit der Suchfunktion nicht so wirklich weiter. Ich möchte eine If-Abfrage starten. Bisher musste immer nur ein Feld überprüft werden, wenn die Bedingung...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden