collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 89
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14132
  • stats Beiträge insgesamt: 68386
  • stats Themen insgesamt: 9210
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben  (Gelesen 1095 mal)

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23512
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #15 am: Oktober 09, 2018, 11:26:44 »
Hallo,

Deine Erklärung ist nicht brauchbar..

Ich interpretiere das so, als dass in einem Listenfeld mit Mehrfachauswahl mehrere Einträge markiert (ausgewählt) werden , die anschließend das Filter-Kriterium für ein Kombifeld bilden.  Mit dem Kombifeld wird letztendlich der interessierende Datensatz bestimmt und z. B. mit dem Formular angezeigt.

Stimmt das so oder meinst Du es anders?


Das Buch kenne ich nicht, aber es ist sicher besser als Nichts   ;)

Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #16 am: Oktober 09, 2018, 12:06:12 »
Also von vorne  :)
Ich habe eine Abfrage (abf_Lieferliste) in der auch die WorkshopID vorhanden ist. Über die WorkshopID möchte ich selektieren welche Workshops in der Abfrage angezeigt werden sollen. Dies ist über die Kriterien "zu Fuss" machbar aber nicht praktikabel.
In dem Formular habe ich ein Listenfeld erstellt, in dem die tblWorkshops zur Auswahl bereitsteht und mit deiner Hilfe auch die richtige ID überträgt.
Diese ID soll jetzt nicht nur in das Text34 Feld sondern auch in die Kriterien der Abfrage eingefügt werden. Wenn das nicht beides geht, egal Textfeld war nur zum schauen ob da überhaupt was passiert.
Eine besondere Schwierigkeit wird noch, das die Workshops mehrfach vorhanden sein können (zB 3 Klassenräume) aber da kümmere ich mich danach drum.
Ich hoffe jetzt ist die Erklärung besser.

Cord
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23512
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #17 am: Oktober 09, 2018, 16:05:53 »
Hallo,

und weiter:

WAS soll mit der Abfrage (abf_Lieferliste) gemacht werden, nachdem die Filterung passiert ist?

Bloßes Angucken hilft nicht weiter....


Vergiss doch mal das Textfeld.


Zitat
Eine besondere Schwierigkeit wird noch, das die Workshops mehrfach vorhanden sein können

Dann zeigt die Abfrage nicht nur die Workshops als solche an, sondern auch deren "Details"..

Das hätte für eine Filterung nach der WS_ID eher weniger Bedeutung.  Es wäre sowieso, dann nach dem WSID-Fremdschlüssel zu filtern, wenn die dahinterliegende Db normalisiert ist (wäre).

Lad mal die DB hier hoch; datenreduziert, komprimiert/repariert und gezippt.


Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #18 am: Oktober 09, 2018, 16:37:46 »
Habe die Hochgeladen mit allem, aber reduzierten Daten.
Die Formulare und Berichte sind teilweise nur Platzhalter also nicht wundern.
Das Formular um das es hier geht ist frm_Angebotsliste die anderen ergeben sich daraus.

Aus der Abfrage soll ein Bericht erstellt werden und später auch in Excel oder PDF exportiert werden. Ist in der DB hinterlegt.
Ok Verständnis denke ich: Nicht die Workshops werden selektiert sondern die Teile nach Workshop mein Fehler falsch Beschrieben.


Cord
« Letzte Änderung: Oktober 11, 2018, 16:50:04 von DF6GL »
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23512
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #19 am: Oktober 09, 2018, 19:15:25 »
Hallo,

Beispiel(!) anbei.


Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #20 am: Oktober 11, 2018, 15:26:32 »
Hallo
einiges habe ich glaube ich verstanden zB ich kann eine Datenbank komplett ohne Beziehungen erstellen und die dann über INNER JOIN in den Abfragen erzeugen.
Die Befehlsschaltflächen muss ich umbenennen habe ich auch rausgefunden :) (cmdOK_frm.....)
Was ich nicht verstehe ist die Beziehung zwischen abf_Lieferliste und abf_Lieferliste_Templ. In dem VBA sind beide vorhanden und im SQL ist der einzige Unterschied der WHERE muss das immer so sein ? oder hast du das gemacht, das ich beides sehe ?

Habe mir auch das Makro umwandeln lassen und festgestellt, das die SQL Anweisungen dann drin stehen.
Was für mich heißt, die IF THEN Schleifen kann ich mir zum großen Teil sparen ?
Und über DoCmd.     Und den Befehl der nötig ist kürzt das ganze und ist auch schneller ?
(zB:        DoCmd.OpenReport "ber_Lieferliste", acViewReport, "", "", acNormal)
Habe jetzt auch das Buch bekommen werde wohl Spass haben :P

Danke für das Beispiel und tut mir leid, das ich dich weiter nerfe.

Cord

PS schaue doch bitte die PN

PPS:
Hab noch was gefunden
was macht
Dim strSQL As String im 2ten SUB finde das nicht wieder ?




« Letzte Änderung: Oktober 11, 2018, 15:36:01 von MrB »
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23512
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #21 am: Oktober 11, 2018, 16:46:31 »
Hallo,

eine Db ohne Beziehungen (und diese mit ref. Integrität) zu erstellen , ist immer ein Drahtseilakt, der in den meisten Fällen zum Absturz (des Autors) führt und der die Db frustriert in den Bach wirft..  ;)

Das A und O einer Db ist nun mal die korrekte Abbildung der realen Datenverhältnisse und der Abhängigkeiten voneinander  (Tabellen und Beziehungen mit ref. Integr.) .

Alles weitere (Forms, Abfragen, Berichte )  bauen auf diesen Beziehungsgrundlagen auf und können auch nur dann richtige Ergebnisse liefern, bzw. funktionieren, wenn die "Basis" (Tabellendaten)  in sich stimmig sind.


Die Methode mit den zwei Abfragen  habe ich nur zur  "Demonstration" gewählt.

"abf_Lieferliste_Templ" ist eine "Vorlage"- (Template-) Abfrage, die nur eine "Dummy"-Where-Condition besitzt ("((1()=1)").  Die Klammern sind an sich nicht nötig, Access macht die selber aufgrund seiner "Klammerwut".  Die WC liefert insgesamt "True", so das die Abfrage ansonsten beliebig gestaltet werden kann, was die Select-Liste und die Tabelle(n) betrifft, solange das Ziel (Bericht mit den Daten) damit erreicht werden kann.

Soll nun eine Abfrage nach bestimmten Kriterien gefiltert werden, stellt man den Kriterien-String mit VBA zusammen und ersetzt (mit Replace) die Dummy-Bedingung durch den akt. Kriterien-String. Der so generierte SQL-String wird lediglich einer anderen Abfrage ("abf_Lieferliste") zugewiesen, die dann beliebig weiterverarbeitet werden kann.  Im Beispiel habe ich lediglich die Abfrage geöffnet und angezeigt.  Genauso gut kann diese Abfrage in der Datenherkunft eines Berichtes stehen, der dann die entspr. gefilterten Datensätze anzeigt.  Oder die Abfrage kann mit OutputTo in ein Excel-Sheet exportiert werden, oder..., oder...

"Dim strSQL As String"  steht im Modulkopf und gilt deshalb in allen Funktionen/Subs in diesem Modul. Ein der Variablen  zugewiesener Werte steht in allen Funkt. /Subs in diesem Modul zur Weiterverarbeitung zur Verfügung.


DoCmd.OpenReport "ber_Lieferliste", acViewReport    ', "", "", acNormal


öffnet den Bericht in der Berichtsansicht mit den Daten, die von der Abfrage geliefert werden, die in dessen Datenherkunft steht.



Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #22 am: Oktober 12, 2018, 09:47:14 »
Guten Morgen und TGIF

Ich versuche mal zusammenzufassen.
Das Template kann ich weglassen und direkt in die Abfrage abf_Lieferliste die ID_WS über die WHERE einfügen.
strSQL = CurrentDb.QueryDefs("abf_Lieferliste_Templ").SQL  'SQL-String der Abfrage-Vorlage
Wobei Lieferliste immer nur ein Beispiel bleibt.
Private Sub Befehl10_Click()
    Dim var As Variant, strSQL As String


 strSQL = CurrentDb.QueryDefs("abf_Lieferliste").SQL  'SQL-String der Abfrage

strKrit = " ID_WS in (" & strKrit & ")"
strSQL = Replace(strSQL, "((1)=1)", strKrit)
Debug.Print strSQL

CurrentDb.QueryDefs("abf_Lieferliste").SQL = strSQL

'DoCmd.OpenQuery "abf_Lieferliste"
        DoCmd.OpenReport "ber_Lieferliste", acViewReport ' , "", "", acNormal

End Sub
Dann kann ich das Template komplett weglassen.
Warum kann ich nicht die Gleiche Abfrage für verschiedene Berichte nutzen ? und mir dort nur einblenden, was ich brauche ?
Oder ist das zur Übersichtlichkeit ?
Zitat
eine Db ohne Beziehungen (und diese mit ref. Integrität) zu erstellen , ist immer ein Drahtseilakt, der in den meisten Fällen zum Absturz (des Autors) führt und der die Db frustriert in den Bach wirft..  ;)

Das A und O einer Db ist nun mal die korrekte Abbildung der realen Datenverhältnisse und der Abhängigkeiten voneinander  (Tabellen und Beziehungen mit ref. Integr.) .

Alles weitere (Forms, Abfragen, Berichte )  bauen auf diesen Beziehungsgrundlagen auf und können auch nur dann richtige Ergebnisse liefern, bzw. funktionieren, wenn die "Basis" (Tabellendaten)  in sich stimmig sind.
Ok habe mich eh schon gefragt wie man das verwalten soll.

Zitat
"Dim strSQL As String"  steht im Modulkopf und gilt deshalb in allen Funktionen/Subs in diesem Modul. Ein der Variablen  zugewiesener Werte steht in allen Funkt. /Subs in diesem Modul zur Weiterverarbeitung zur Verfügung.
Steht in der zweiten SUB auch wird dort aber doch nicht verarbeitet oder irre ich mich da ?

Habe die , "", "", acNormal gelöscht und sehe keine Veränderung im Bericht in der Hilfe steht was da reingehört ist wohl bei der Umwandlung von Makro in SQL unsinnigerweise eingefügt.

Danke für deine Gedult

Cord

 

Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #23 am: Oktober 12, 2018, 09:58:07 »
Mein Fehler
geänderte Version funktioniert nicht
Holt sich nicht die Liste aus dem Listenfeld aber warum ?
Im Grunde bleibt doch alles gleich oder sehe ich das falsch ?

Cord
« Letzte Änderung: Oktober 12, 2018, 10:31:55 von MrB »
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23512
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #24 am: Oktober 12, 2018, 12:30:13 »
Hallo,

die xxxx_Temp  kannst Du (hier in diesem Beispiel) nicht weglassen. Wozu wohl hab ich die verwendet?

Wenn Du die 1=1 - Condition in der Abfrage durch das akt. Kriterium ersetzt, ist eine weitere, bzw. andere Filterung auf diese Art und Weise nicht mehr möglich,  das "1=1" ist ja ersetzt und wird nicht mehr gefunden.



Zitat
Warum kann ich nicht die Gleiche Abfrage für verschiedene Berichte nutzen ? und mir dort nur einblenden, was ich brauche ?

Die Ausgangsfrage bezog sich doch auf verschiedene Anwendungen der Abfrage, also für  Berichte und z. B. für Export nach Excel oder auch für ein Listenfeld...


Wenn Du nur einen Bericht damit anzeigen willst, dann brauchst Du das gaze Getöns nicht, sondern öffnest den Bericht, dessen Abfrage (Datenherkunft) keine Filterung, bzw. Where-Condition besitzt, lediglich mit Docmd.OpenReport und hierbei mit Übergabe des vorher erzeugten Kriterienstrings an dessen Where-Condition-Parameter.

Offline MrB

  • Newbie
  • Beiträge: 49
Re: Bei Kombinationsfeld nicht die Textauswahl sonder ID weitergeben
« Antwort #25 am: Oktober 12, 2018, 13:16:55 »
Zitat
das "1=1" ist ja ersetzt und wird nicht mehr gefunden.

Klar ich Dussel

Also kann ich die Kriterien auch an den Bericht geben und sozusagen eine Abfrage generieren, die alle Möglichkeiten (Workshops) enthält und erst im Bericht oder Export filtern.
Gut ich mach mich wieder ans lesen.
Ich wünsche allen und insbesondere dir ein schönes goldenes Oktober WE und setze das hier auf erledigt.

Cord
 

 

Kann aktuellen DS nicht drucken

Begonnen von cyco7Board Formular

Antworten: 8
Aufrufe: 3868
Letzter Beitrag Juli 17, 2011, 16:49:03
von TMC
Objekterstellung durch ActivX-Komponente nicht möglich

Begonnen von -Tom-Board Access Programmierung

Antworten: 6
Aufrufe: 6307
Letzter Beitrag März 04, 2011, 19:29:49
von database
Kombinationsfeld mit Zahlen und Text Sortieren

Begonnen von -Tom-Board Formular

Antworten: 4
Aufrufe: 4958
Letzter Beitrag Mai 14, 2010, 10:04:42
von MzKlMu
DB Absichern klappt nicht richtig

Begonnen von ThomMBoard Access-Hilfe

Antworten: 4
Aufrufe: 4061
Letzter Beitrag Mai 06, 2010, 10:24:07
von ThomM
Kunden auslesen, welche nicht ware von einem Lieferanten bekommen haben.

Begonnen von GuidoBoard Tabelle/Abfrage

Antworten: 9
Aufrufe: 6606
Letzter Beitrag Mai 11, 2010, 10:35:10
von Guido