Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Abfrage auf Basis von Kombinationsfeld: Alle auswählen!
Gehe zu Seite 1, 2  Weiter
zurück: mehrfach m:n zu Formular. Verzweifle langsam weiter: Fehlermeldung beim Speichern programmieren Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Jun 2010, 15:36
Rufname:

Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Hallo zusammen,

ich suche momentan vergeblich nach einer Lösung, um eine Umsatzabfrage auf Basis mehrerer Kombinationsfelder zu generieren. Auch durch die Beiträge hier im Forum bin ich leider nicht weiter gekommen. Wenn ich bei jedem Kombifeld eine Auswahl treffe, funktioniert das auch soweit. Allerdings möchte ich bei der Auswahl <Alle> (über UNION erzeugt) keine Einschränkung vornehmen.

In der Abfrage habe ich nach dem Muster
Code:
Formulare!frm_Umsatz!Kombo_Jahr AS Jahr
die Inhalte der Kombinationsfelder übergeben.

Der Code der Ereignisprozedur sieht so aus:
Code:
Private Sub Kombo_Jahr_AfterUpdate()
    If Me!Kombo_Jahr = "<Alle>" Then
        '???
      Else
        Me.RecordSource = "SELECT *" _
                         & " FROM abf_Umsatz" _
                        & " WHERE Jahr = '" & Me.Kombo_Jahr & "';"
    End If
    Me.Requery
End Sub
Wäre echt super, wenn mir da jemand weiterhelfen könnte.

Gruß
MissPh!
Office-VBA-Programmiererin


Verfasst am:
29. Jun 2010, 16:19
Rufname:
Wohnort: NRW


AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Hallo,

wenn du alles sehen willst, lässt du das Kriterium (Where-KLausel) einfach weg!

_________________
Gruß MissPh!
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Jun 2010, 16:30
Rufname:

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

vielen Dank für die schnelle Antwort.

Das Weglassen der WHERE-Klausel hatte ich auch schon probiert. Allerdings erhalte ich mit
Code:
Private Sub Kombo_Jahr_AfterUpdate()
    If Me!Kombo_Jahr = "<Alle>" Then
        Me.RecordSource = "SELECT * FROM abf_Umsatz"
      Else
        Me.RecordSource = "SELECT *" _
                         & " FROM abf_Umsatz" _
                        & " WHERE Jahr = '" & Me.Kombo_Jahr & "';"
    End If
    Me.Requery
End Sub
bei der Auswahl von <Alle> immer die Fehlermeldung:
Zitat:
Laufzeitfehler 2001: Sie haben die vorherige Operation abgebrochen.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
29. Jun 2010, 16:34
Rufname:
Wohnort: NRW

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Ich sehe nicht, was der Grund dafür sein könnte, da wird man wohl das gesamte Formular mal unter die Lupe nehmen müssen.

Welche Ereignisse treten noch ein, welcher Code wird ausgeführt? Wie lautet der Abfrage-Code? ...?

_________________
Gruß MissPh!
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
01. Jul 2010, 15:11
Rufname:


AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

hab es anders gelöst.

Trotzdem danke für die Hilfe.
Willi Wipp
Moderator


Verfasst am:
02. Jul 2010, 07:06
Rufname:
Wohnort: Raum Wiesbaden

Re: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - Re: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Hi 12345,

waere schoen wenn Du uns nicht nur an Deinen Problemen,
sondern auch an Deinen Loesungen teilhaben lassen wuerdest Wink

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Jul 2010, 14:22
Rufname:

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Hallo,

Gerne. Am Ziel bin ich zwar noch nicht ganz, aber dazu gleich Cool

Mein ursprünglicher Gedanke wurde inzwischen verworfen und ich rufe in der Ereignisprozedur nur noch folgende Funktion auf:
Code:
Public Function Filter()
On Error GoTo Err_Befehl22_Click
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim SR1 As String
    Dim SR2 As String
    Dim letztesFeldFeld
   
    Application.Echo False
    DoCmd.Hourglass True
    letztesFeldFeld = True
    SR1 = "SELECT * FROM abf_Umsatz WHERE ("
    'Jahr
    SR1 = SR1 & IIf(IstLeer(Forms![frm_Umsatz].Jahr), "" _
                  , "[xJahr]='" & Forms![frm_Umsatz].Jahr & "'")
    'Monat
    If (Not (istleer(Forms![frm_Umsatz].Jahr))) Then letztesFeld = False
    If (Not (letztesFeld Or istleer(Forms![frm_Umsatz].Monat))) Then
        SR1 = SR1 & " AND "
    End If
    SR1 = SR1 & IIf(istleer(Forms![frm_Umsatz].Monat), "" _
                  , "[xMonat]='" & Forms![frm_Umsatz].Monat & "'")
    SR1 = SR1 & ")"
    If letztesFeld Then SR1 = "SELECT * FROM abf_Umsatz"
    SR2 = ";"
    Set db = DBEngine.Workspaces(0)(0)
    Set rs = db.OpenRecordset(SR1 & SR2)
    Forms![frm_Umsatz]![ufo_Umsatz].Form.RecordSource = SR1 & SR2
    Forms![frm_Umsatz]![ufo_Umsatz].Form.Requery
    Application.Echo True
    DoCmd.Hourglass False
Exit_Befehl22_Click:
    Exit Function
Err_Befehl22_Click:
    MsgBox Err.Description
    Resume Exit_Befehl22_Click
End Function
IstLeer ist eine weitere Funktion, die nur prüft, ob meine Übergabe NULL ist.

Durch das RecordSource meiner Funktion wird ja nun die Abfrage des UFOs gefüttert.

Hier ist aber auch gleich mein Problem. Ich möchte meinen Umsatz nun gruppieren, beispielsweise nach der Kundennummer. Da aber die Abfrage abf_Umsatz noch weitere Spalten enthält, die nun mit gruppiert werden, bekomme ich nicht das Ergebnis angezeigt, das ich gerne hätte. Wie bekomme ich das nun hin? Dadurch, dass RecordSource die Abfrage des UFOs bedient, kann ich ja nicht einfach eine weitere Abfrage erzeugen, die nur noch den Umsatz gruppiert nach der Kundennummer enthält...
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Jul 2010, 14:40
Rufname:
Wohnort: NRW

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Zitat:
Istleer ist eine weitere Funktion, die nur prüft, ob meine Übergabe NULL ist.
Und wozu soll das gut sein, warum setzt du nicht die Funktion IstNull() ein?

BTW: Sorry, aber ich habe selten so ein konfuses, mit überflüssigem Ballast angefülltes Coding gesehen. Rolling Eyes
Wozu dienen z.B. das Database- und Recordset-Objekt, die beide außerdem am Ende offen bleiben?! Confused

Zitat:
Durch das RecordSource meiner Funktion wird ja nun die Abfrage des UFOs gefüttert.
Die Datenherkunft des Ufos wird mit einem SQL-String belegt:
Code:
    Forms![frm_Umsatz]![ufo_Umsatz].Form.RecordSource = SR1 & SR2
Ein anschließendes Requery erübrigt sich durch diese Zuweisung.

Was die Gruppierung betrifft, so kannst du das in einem Formular nicht umsetzen. Hier wäre es wohl sinnvoll, den Kunden im Hauptformular zu wählen und Haupt- und Unterformular über die Kundennummer zu verknüpfen.

_________________
Gruß MissPh!
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Jul 2010, 15:47
Rufname:

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

@ MissPH: an dieser Stelle muss ich wohl zugeben, dass der Code nicht auf meinem Mist gewachsen ist. Leider fehlt mir (noch) das Hintergrundwissen, um solche Fehler/Unschöheiten selbst zu erkennen bzw. es selbst besser zu gestalten. Allerdings war für mich auch in erster Linie wichtig, dass der Code funktioniert, sodass ich nicht weiter auf die Feinheiten geachtet habe... *hust*

Jetzt wo du es sagst, merke ich natürlich, dass das Ein oder Andere überflüssig ist und bin gerade dabei, es zu korrigieren. Insofern schon mal vielen Dank für die Hilfestellung.

Wie meinst du das genau mit der Verknüpfung? Ich möchte ja nicht nur einen bestimmten Kunden wählen, sondern den kompletten (bzw. den gefilterten) Umsatz nach den verschiedenen Kundennummern aufschlüsseln. Oder habe ich dich jetzt falsch verstanden?

Schönes Wochenende!
MissPh!
Office-VBA-Programmiererin


Verfasst am:
02. Jul 2010, 16:06
Rufname:
Wohnort: NRW

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Vermutlich habe ich dich falsch verstanden...

Ich sehe da keine Möglichkeit im Ufo nach Kunden zu gruppieren. Wie (genau) hast du dir das vorgestellt?

Was den Code betrifft, vergleiche ihn mal mit meiner Version:
Code:
Public Function Filter()
On Error GoTo Err_Befehl22_Click
    Dim strSQL As String, strKrit As String
   
    'Jahr
    If Not IsNull(Me!Jahr) Then strKrit = " AND xJahr='" & Me!Jahr & "'"
    'Monat
    If Not IsNull(Me!monat) Then
        strKrit = strKrit & " AND xMonat='" & Me!monat & "'"
    End If
    strSQL = "SELECT * FROM abf_Umsatz "
    If Len(strKrit) > 0 Then
        strKrit = Mid(strKrit, 6)
        strSQL = strSQL & " WHERE " & strKrit
    End If
    Me![ufo_Umsatz].Form.RecordSource = strSQL
Exit_Befehl22_Click:
    Exit Function
Err_Befehl22_Click:
    MsgBox Err.Description
    Resume Exit_Befehl22_Click
End Function

_________________
Gruß MissPh!
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2010, 09:08
Rufname:

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Guten Morgen,

dein Code sieht auf jeden Fall um Einiges übersichtlicher aus. Danke für deine Mühen.

Allerdings ist die Gruppierung für mich ein absolutes Muss-Kriterium. Bei meinem ersten Ansatz (Übergabe der Inhalte der Kombinationsfelder an die Abfrage) hatte ich es einfach durch eine weitere Abfrage gelöst, die nur den Umsatz nach den Kundennummern gruppiert. Diese hatte ich dann als Herkunftsobjekt für mein UFO gewählt.

Gibt es denn keine Möglichkeit, etwas Ähnliches - evtl. auch über Umwege - auch in diesem Ansatz zu realisieren? Question
MissPh!
Office-VBA-Programmiererin


Verfasst am:
05. Jul 2010, 09:46
Rufname:
Wohnort: NRW

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Leider ist mir immer noch nicht klar, was du mit der Gruppierung meinst. Confused
Wenn du die Kundendetails plus Summe der Umsätze sehen willst, so musst du halt den Umsatz pro Kunde bspw. mit der DSum-Funktion berechnen.

Zitat:
Bei meinem ersten Ansatz (Übergabe der Inhalte der Kombinationsfelder an die Abfrage) hatte ich es einfach durch eine weitere Abfrage gelöst, die nur den Umsatz nach den Kundennummern gruppiert.
Zeige bitte wie du das gelöst hast und/oder erkläre warum du davon Abstand genommen hast.
_________________
Gruß MissPh!
Gast



Verfasst am:
05. Jul 2010, 11:32
Rufname:

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Meine Abfrage Umsatz liefert momentan folgendes Ergebnis:
Zitat:
Jahr Monat Kunde Umsatz
2008 | 1 | A | xxxx
2008 | 2 | A | xxxx
2008 | 3 | A | xxxx
...
2009 | 1 | A | xxxx

Ich möchte aber, dass ich im UFO nur eine Gruppierung nach Kunde angezeigt bekomme
Zitat:
Kunde Umsatz
A | xxxx
B | xxxx
...

Im vorherigen Ansatz sah es so aus: Ich hatte eine Abfrage mit den Spalten "Jahr", "Monat", "Kunde und "Umsatz vor Bonus". Jahr und Monat habe ich mit der Aufbauen-Funktion durch
Code:
Formulare!frm_Umsatz!Kombo_Jahr AS Jahr
die Inhalte der Kombifelder zugewiesen.

Das Ergebnis habe ich in einer weiteren Abfrage verwendet und nach Kunde gruppiert:
Code:
SELECT abf_Umsatz.Kunde, Sum([Umsatz vor Bonus])
FROM abf_Umsatz
GROUP BY abf_Umsatz.Kunde
ORDER BY abf_Umsatz.Kunde;

Da ich es hierbei nicht hinbekommen habe, die Filter "Jahr" und "Monat" auszuschalten, bzw. nach allem zu filtern, bin ich auf die Filterfunktion umgestiegen. Auch hier hatte ich erst vor, mit einer weiteren Abfrage für das UFO zu arbeiten, jedoch funktioniert das nicht so ohne Weiteres. Beim ersten Aufruf stimmen die Ergebnisse zwar, jedoch stimmt beim aktualisieren der Filter die Gruppierung nach Kunde nicht mehr und in Umsatz steht nur noch #Name?

PS: Ich hoffe, ich strapaziere deine Nerven nicht zu sehr Confused
MissPh!
Office-VBA-Programmiererin


Verfasst am:
05. Jul 2010, 11:44
Rufname:
Wohnort: NRW

AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen! - AW: Abfrage auf Basis von Kombinationsfeld: Alle auswählen!

Nach oben
       Version: Office 2003

Du möchtest also nach Monat und Jahr auswählen, aber nur die Gesamtsumme pro Kunde sehen?
Zitat:
Da aber die Abfrage abf_Umsatz noch weitere Spalten enthält, die nun mit gruppiert werden
Warum nimmst du die Felder dann nicht einfach aus der Feldliste raus? Oder erstellst eine neue Abfrage, die nur die benötigten Felder enthält?!
Zitat:
Da ich es hierbei nicht hinbekommen habe, die Filter "Jahr" und "Monat" auszuschalten, bzw. nach allem zu filtern,
Irgendwie fehlt mir der Gesamtüberblick, um zu sehen woran es bei dir scheitert. Kannst du nicht mal eine Demo-DB hochladen?
_________________
Gruß MissPh!
12345
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Jul 2010, 13:46
Rufname:


Re: AW: Abfrage auf Basis von Kombinationsfeld: Alle auswähl - Re: AW: Abfrage auf Basis von Kombinationsfeld: Alle auswähl

Nach oben
       Version: Office 2003

Zitat:
Du möchtest also nach Monat und Jahr auswählen, aber nur die Gesamtsumme pro Kunde sehen?

Genau richtig!
Zitat:
Warum nimmst du die Felder dann nicht einfach aus der Feldliste raus?

Weil ich auf die Spalten xJahr und xMonat der Afrage in der Filterfunktion zugreife
Zitat:
Oder erstellst eine neue Abfrage, die nur die benötigten Felder enthält?!

Habe ich probiert. Erbrachte mir wie bereits erwähnt folgendes Problem:
Zitat:
Beim ersten Aufruf stimmen die Ergebnisse zwar, jedoch stimmt beim aktualisieren der Filter die Gruppierung nach Kunde nicht mehr und in Umsatz steht nur noch #Name?

Ich denke, der Grund wieso es so nicht funktionieren kann liegt daran, dass die neue Abfrage kein xJahr und xMonat mehr hat, die aber im RecordSource enthalten sind.
Code:
Forms![frm_Umsatz]![Eingebettet65].Form.RecordSource = sql_select & sql_order

Eine Demo-DB hochladen wäre sicherlich die beste Möglichkeit, um mir helfen zu lassen. Allerdings ist mir das aus Datenschutzgründen nicht gestattet...
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Filter bei Abfrage 3 tivi 701 03. März 2004, 15:06
tivi Filter bei Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: [DANKE-ERLEDIGT] Join in einer Abfrage 2 Gast 803 01. März 2004, 08:36
ppc [DANKE-ERLEDIGT] Join in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage aus Formular erstellen 2 frkrone 3248 12. Feb 2004, 14:22
frkrone Abfrage aus Formular erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage verlinken 4 dfo 1326 10. Feb 2004, 22:17
Willi Wipp Abfrage verlinken
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht 1 caro456 1832 27. Jan 2004, 20:03
Willi Wipp Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Access abfrage nach 2 parametern 1 Weedy 3466 13. Jan 2004, 00:21
reke Access abfrage nach 2 parametern
Keine neuen Beiträge Access Tabellen & Abfragen: Bestimmte Abfrage erstellen ... nur wie ? 1 studi 2219 22. Dez 2003, 20:51
reke Bestimmte Abfrage erstellen ... nur wie ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, ob eine Abfrage ein Ergebnis hat 3 Esdo 3934 09. Dez 2003, 15:53
Fedaykin Abfrage, ob eine Abfrage ein Ergebnis hat
Keine neuen Beiträge Access Tabellen & Abfragen: Access 97 Abfrage Duplikate 9 gast 2419 02. Dez 2003, 14:39
Kay Access 97 Abfrage Duplikate
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Expression Web