Hi an alle bin wieder mal hier :)
Schönes neues Jahr wünsch ich Euch noch!!
Zu meinen kleinen Problem das ich nicht beheben kann.
Ich habe in einem formular eine optionsgruppe erstellt.
Diese gruppe enthält 1. dienstlich, 2. privat, 3. alle
Eine tblNutzungsart, hat dienstlich und privat als daten enthalten.
Wenn ich nun die Abfrage per button am formular laufen lasse bekomme ich dienstlich und privat ohne probleme angezeigt.
Nun zu meiner Frage wie muss ich denn die Abfrage oder die tabelle ändern sodas ich auch alle angezeigt bekommen kann.
Hoffe ich habe mich deutlich genug ausgedrückt und würde mich sehr über Eure Hilfe bedanken!
Lg
Silentwolf
Du must die where-klausel deiner abfrage anpassen, wenn dienstl /private zahlen sind dann müsste sie in etwa so ausschauen: ... where [DeinDienstl/priv-Feld]<=dieGößteZahlDieDudafürFestgelegtHast.
Hallo,
Die Abfrage könnte so aussehen:
Select * from tblTabelle where IIf([FormS]![frmDeinFormular]![Optionsgruppe1]=3,1=1,[NutzungsartID]=[FormS]![frmDeinFormular]![Optionsgruppe1]=True)
falls "Alle" den Optionswert 3 besitzt
Hi Franz,
Danke für Deine Hilfe!
Weis grad nicht in welche Abfrage Spalte es eingefügt werden muss :(, Ich bekomme auch eine Fehlermeldung "die unterabfrage in diesem ausdruck hat eine fehlerhafte syntax"
Habe natürlich die abfrage mit meinen forms und optionsgruppe abgeändert.
Muss es in der Kriterienspalte von der ID oder von der Nutzungsart eingefügt werden?
Vielen Dank
Albert
Hallo nochmals,
hab mal den Code für meine SQL Abfrage kopiert vielleicht hilft das um den Code etwas abzuändern.
Kenne mich bei SQL leider gar nicht aus :(
SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id
WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And [Forms]![frmFahrtenbuch]![txtEnddatum]) AND ((tblNutzArt.NutzArt_ID)=[Forms]![frmFahrtenbuch]![fraNutzung]));
Vielen Dank
Albert
Hallo Albert,
Zitat...die Abfrage oder die tabelle ändern sodas ich auch alle angezeigt bekommen kann
Versuch mal:
SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id
WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And
[Forms]![frmFahrtenbuch]![txtEnddatum]) AND ((tblNutzArt.NutzArt_ID>0));
bzw. du schränkst die Nutzungsart gar nicht ein.
SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id
WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And
[Forms]![frmFahrtenbuch]![txtEnddatum]);
HTH
Hallo Peter,
schön das Du mir wieder etwas unter meine Arme greifst :) !
Leider funktioniert es noch nicht so richtig. Der erste Code zeigt mir "alle Daten" also dienstlich und privat egal welche Auswahl ich treffe.
Der zweiter Code zeigt mir die richtigen Daten bei Auswahl von dienstlich oder privat an aber keine Daten wenn ich alle Daten auswähle.
Leider :(
Dankeschön :)
Hallo,
wenn bei Optionswert 3 ALLE DS angezeigt werden sollen, dann muss der gesamte Where-Ausdruck TRUE ergeben oder er muss ganz fehlen.
Insofern muss die Where Bedingung so aussehen:
SELECT tblKfz.Kfz_Id,
tblKfz.Kfz_Marke,
tblKfz.Kfz_Kennzeichen,
tblFahrtenbuch.FB_Id,
tblFahrtenbuch.FB_Datum,
tblNutzArt.NutzArt_ID,
tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id
WHERE IIf (
[Forms]![frmFahrtenbuch]![OptNutzArt]=3,
1=1 ,
tblKfz.Kfz_Id=[Forms]![frmFahrtenbuch]![cboFahrzeug]
And
(tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And [Forms]![frmFahrtenbuch]![txtEnddatum])
And
tblNutzArt.NutzArt_ID =[Forms]![frmFahrtenbuch]![OptNutzArt]
)
(OptNutzArt =^= Name der Optionsgruppe)
Hi Franz,
danke für Deine Antwort! Leider bekomme ich es immer noch nicht hin :(
Hab Deinen Code ausprobiert und auch schon mehrere Optionen durchprobiert aber funktioniert leider immer noch nicht.
Meine Optionsgruppe hab ich fraNutzung benannt. Und in Deinen Code auch abgeändert.
Irgendwas ist da noch nicht ganz in Ordnung. Kann ja nicht so ein großes Problem sein oder??
Vielen Dank
Albert
Hallo,
WAS funktioniert denn nicht??
Was genau hast Du gemacht?
Poste mal DEINEN angepassten SQL-String...
Hallo,
es funktioniert die Alle Option nicht :(
SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID=tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id=tblFahrtenbuch.FB_Kfz_Id
WHERE (((tblNutzArt.NutzArt_ID)=Forms!frmFahrtenbuch!fraNutzung) And ((IIf(Forms!frmFahrtenbuch!fraNutzung=3,1=1,tblKfz.Kfz_Id=Forms!frmFahrtenbuch!cboFahrzeug And (tblFahrtenbuch.FB_Datum) Between Forms!frmFahrtenbuch!txtStartdatum And Forms!frmFahrtenbuch!txtEnddatum))<>False));
Das <> False wurde von SQL angefügt ??
Danke
Albert
Hallo,
so hab ich das nicht geschrieben....
WHERE (((tblNutzArt.NutzArt_ID)=Forms!frmFahrtenbuch!fraNutzung) And ((IIf(Forms!frmFahrtenbuch!fraNutzung=3,1=1,tblKfz.Kfz_Id=Forms!frmFahrtenbuch!cboFahrzeug And (tblFahrtenbuch.FB_Datum) Between Forms!frmFahrtenbuch!txtStartdatum And Forms!frmFahrtenbuch!txtEnddatum))<>False));
Das rot Markierte muss IN den 2. If-Zweig...
Hallo,
Hmmm .... irgendwie verstehe ich das G'schichtl nicht ganz.
ZitatDer erste Code zeigt mir "alle Daten" also dienstlich und privat egal welche Auswahl ich treffe
Da gehe ich davon aus, dass die Variante dann für die Auswahl 'ALLE' geeignet sein wird.
Nun sollte eine Änderung für Opt. 1 und Opt. 2 die Sache doch ordentlich zum Laufen bringen können...
Private Sub DeinButton_Click()
Dim strSQL as String
Dim strSQLTeil as String
Select Case Me.fraNutzung
Case 1
strSQLTeil = "tblNutzArt.NutzArt_ID=1"
Case 2
strSQLTeil = "tblNutzArt.NutzArt_ID=2"
Case Else
strSQLTeil = "tblNutzArt.NutzArt_ID>0"
End Select
strSQL = "SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id
WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And
[Forms]![frmFahrtenbuch]![txtEnddatum]) AND " & strSQLTeil
...... Weiterer Code ....
Das sollte doch funktionieren oder?
Hallo,
der Knackpunkt ist: bei Optgr = 3 ALLE Datensätze ohne irgendwelche Kriterien zu filtern...
deswegen (bei mir und weil das Ganze in der Abfrage geschehen soll (?) gibt es da die "True-Bedingung" 1=1, was genauso gut mit True zu machen wäre) muss mit der IIF-Bedingung ein ähnliche Case-Konstruktion nachempfunden werden:
(Syntaktisch nicht getestet!)
Private Sub DeinButton_Click()
Dim strSQL as String
Dim strSQLTeil as String
Select Case Me!fraNutzung
Case 1
strSQLTeil = " WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And [Forms]![frmFahrtenbuch]![txtEnddatum]) And tblNutzArt.NutzArt_ID=1"
Case 2
strSQLTeil = " WHERE (((tblKfz.Kfz_Id)=[Forms]![frmFahrtenbuch]![cboFahrzeug]) AND ((tblFahrtenbuch.FB_Datum) Between [Forms]![frmFahrtenbuch]![txtStartdatum] And [Forms]![frmFahrtenbuch]![txtEnddatum]) And tblNutzArt.NutzArt_ID=2"
Case 3
strSQLTeil = ""
Case Else
strSQLTeil = ""
End Select
strSQL = "SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id " & strSQLTeil
natürlich ist die Ereignisprozedur am Sichersten und Saubersten , wenn man denn nun noch auch die unglücklichen Forms-Verweise aus dem String herauswirft und den String mit den Formular-Steuerelementen zusammenbaut.
Private Sub DeinButton_Click()
Dim strSQL as String
Dim strSQLTeil as String
Select Case Me!fraNutzung
Case 1,2
strSQLTeil = " WHERE Kfz_Id=" & Me![cboFahrzeug] & " AND FB_Datum Between " & Format( Me![txtStartdatum] ,"\#yyyy-mm-dd\#") & " And " & Format(Me![txtEnddatum],"\#yyyy-mm-dd\#") & " And tblNutzArt.NutzArt_ID= " & Me!fraNutzung
Case 3
strSQLTeil = ""
Case Else
strSQLTeil = ""
End Select
strSQL = "SELECT tblKfz.Kfz_Id, tblKfz.Kfz_Marke, tblKfz.Kfz_Kennzeichen, tblFahrtenbuch.FB_Id, tblFahrtenbuch.FB_Datum, tblNutzArt.NutzArt_ID, tblNutzArt.Nutzungsart
FROM tblKfz INNER JOIN (tblNutzArt INNER JOIN tblFahrtenbuch ON tblNutzArt.NutzArt_ID = tblFahrtenbuch.FB_NutzArt_Id) ON tblKfz.Kfz_Id = tblFahrtenbuch.FB_Kfz_Id " & strSQLTeil
Hallo Franz,
Zitat...bei Optgr = 3 ALLE Datensätze ohne irgendwelche Kriterien zu filtern...
Ich bin bei meiner Variante davon ausgegangen dass in der Anfrage gemeint war 'ALLE Nutzungsarten' jedoch mit Einschränkung auf ein bestimmtes Fahrzeug in einem bestimmten Zeitraum.
Die Aufdröselung mit dem 'Select Case' - Konstrukt habe ich gewählt um Albert ein leichteres Verständnis zu ermöglichen.
Wenn das Erfordernis auf ALLES ohne jegliche Begrenzung zum Tragen kommen soll, trifft deine Variante klarerweise den Nagel auf den Kopf
@Albert
Ich habe in meiner ersten Antwort nur die Auswahl der Opt. 3 dargestellt, Opt. 1 und 2 waren dabei,
in der Annahme, daß du die Anpassung selbst realisieren wirst, NICHT berücksichtigt.
Hallo Peter & Franz,
Vielen Dank für Eure Mühe und Hilfe!!!
Irgendetwas mache ich aber trotzdem noch falsch und ich komme nicht darauf.
Hab jetzt Euro Codes in meine in die Ereignis Prozedur eingefügt aber auch Fehler im kompelieren erhalten.
Ja es sollte ja schon auch das Fahrzeug gefiltert werden.
Also welches Fahrzeug und ist es Privat oder Dienstlich oder eben beides genutzt worden zu einer bestimmten Zeit oder Zeitraum.
Ich hatte es mit eine Abfrage versucht da ich es mir leichter vorstellen kann wie mit einer Ereignis Prozedur hab aber sicherlich nichts gegen einer :)
Nur verstehe ich es leider noch nicht so gut :(
Tut mir leid das es doch kompliziert wird :/
Lg
Albert
Hallo Albert,
Zeig mal den ganzen Code, den du da im Klick-Ereignis stehen hast.
oder besser - erstell eine neue, leere DB und importiere in diese das betreffende Formular sowie die beteiligten Tabellen mit ein paar Spieldaten.
Komprimieren und reparieren, zippen und hochladen.
Hallo Peter,
ich werde Dir die Datenbank gleich reinstellen vielleicht bist ja dann noch hier :)
Lg
Albert
Jou!
EDIT:
Na, ich denke da werden wir heute nix mehr reißen ... ;D
Hallo Peter,
ja kann ich mir gut vorstellen das da Heute nichts mehr geht :)
Wie geht denn das Hochladen nochmals?? :(
Lange schon nicht mehr bemacht :)
Lg
Albert
Hallo Albert,
gehst auf 'Antworten' und dann unter dem Textbereich auf 'Erweiterte Optionen...'
Hier findest dann 'Datei anhängen'
DB komprimieren und reparieren danach zippen und anhängen ;)
Hallo Peter,
hier wäre die Datenbank wie besprochen.
Vielen Dank
Albert
[Anhang gelöscht durch Administrator]
Hallo Albert,
habe die Zusammensetzung des SQL-String korrigiert (da fehlten die Fortführungszeichen zum zusammenbauen), die nicht benötigten Klammern entfernt,
und eine Kopie der qyrFahrtenbuch angelegt um das Original nicht zu verändern.
Dieser Abfrage wird beim Klicken auf 'Fahrtenbuch drucken' der aktualisierte SQL-String zugewiesen und die Abfrage geöffnet.
Schaust dir das mal an, ich denke dass die Daten so in der Form kommen wie du das angefragt hast.
[Anhang gelöscht durch Administrator]
Hallo Peter,
vielen Dank werd ich mir gleich ansehen!!
Sag Du hast ja nun die Datenbank gesehen.
Kannst Du mir bitte nur kurz zu meiner Frage im Forum Daten kopieren die Struktur anschauen?
Bin mir nicht sicher ob das so hinhaut :(
Ich weis nicht genau wie ich es realisieren soll mit den Daten so das ich nicht immer mehrfach das Datum und Uhrzeit in Objekte oder Fahrtenbuch anlegen muss.
Vielen lieben Dank
Mfg
Albert
Hallo Peter,
hast Du die Datenbank probiert?
Also ich bekomme immer noch einen Syntaxfehler wenn ich die frmFahrtenbuch öffne und auf Fahrtenbuch drucken gehe :(
Verstehe ich nicht war es nicht funktioniert??
Hallo,
vielleicht hast was überschrieben/verwechselt ... ?
Ich häng dir das Viech nochmal umbenannt an.
EDIT:
Upppssss... nein, halt Kommando zurück - die Verwechslung ist bei mir passiert *schäm*
[Anhang gelöscht durch Administrator]
Hallo Albert,
die andere Sache schaue ich mir gerne an, wenn ich wieder daheim bin - also am späteren Nachmittag.
Habe mir etwas Zeit von meinem Arbeitgeber 'geliehen' um dir gleich zu antworten ... ::)
Jetzt muss ich mich leider wieder den 'angenhemen' Dingen des Lebens widmen und zur Vermehrung meines Mammons beitragen 8)
;D Alles klar :)
Vielen Dank erstmal für alles!
Schönen Tag noch
Albert
Hallo Albert,
schau dir den Anahng in #25 bitte an ob das so entspricht.
Hallo Peter,
wo meinst Du mit der #25??
Bei diesen Antworten?
Danke
Albert
Antwort Nummer 25 ... steht gleich unter dem Fragetext in jedem Beitrag
... dort habe ich einen Anhang 'Datenbank2.zip' für dich hinterlassen ...
;)
Hallo Peter,
vielen Dank für Deine Nachricht ja jetzt funktioniert es!!
Super :)
Bist ja genial ;)
Schöne Grüße
Albert