Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Listenfeld & Mehrfachauswahl
zurück: Benutzeroberfläche weiter: Problem bei Dateneintragung in 2 verscheindene Tabellen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
kingmarcus
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Jul 2005, 14:26
Rufname:

Listenfeld & Mehrfachauswahl - Listenfeld & Mehrfachauswahl

Nach oben
       

Hallo,

Ich habe ein Problem mit dem Thema Listenfeld & Mehrfachauswahl.

Ich habe eine Tabelle WC, die die Daten für mein Listenfeld liefert. Funzt auch. Über das Feld Work Center ist diese mit der Tabelle S3 verbunden, wo zu best. Work Centern die kummulierte Menge erfasst werden soll.

Die Tabelle S3 habe ich mit der Beispielabfrage erfasst: testtesttest, welche die Daten über die Ereignisprozedur und das Listenfeld bringen soll. Meine gebundene Spalte ist Work Center, d.h. bei mir ist dies der Schlüssel.

folgende Ereignisprozedur habe ich:
Code:
Private Sub btnOpenQuery_Click()
    Const cstrField = "Work Center"
    Dim strFilter As String, varElement As Variant
    Dim db As Database, qd As QueryDef
   
    If Me!liste.ItemsSelected.Count = 0 Then
        Beep
        Exit Sub
    End If
    strFilter = ""
    For Each varElement In Me!liste.ItemsSelected
        If strFilter <> "" Then '" OR " Anhaengen?
            strFilter = strFilter + " OR "
        End If
        strFilter = strFilter & "[" & cstrField & "] = " & _
                    Me!liste.ItemData(varElement)
    Next
    Set db = CurrentDb()
    Set qd = db.QueryDefs("testtesttest")
    strFilter = "SELECT Work Center, Work Description, Summe von Menge " & _
                "FROM testtesttest " & _
                "WHERE " & strFilter
    qd.sql = strFilter
    DoCmd.OpenQuery "testtesttest"
End Sub
Jetzt erhalte ich die Fehlermeldung:
Zitat:
Fehlender Oparator bei Work Center.
Unter StrFilter ist der doch vorhanden, oder sehe ich das falsch?

Wo liegt mein Fehler? Sad
stpimi
Moderator Access


Verfasst am:
25. Jul 2005, 15:14
Rufname:
Wohnort: Graz


Leerzeichen - Leerzeichen

Nach oben
       

Wenn Du Leerzeichen in Feldnamen hast (davon ist grundsätzlich abzuraten) dann musst Du den Feldnamen in eckiger Klammern setzen.
Code:
    strFilter = "SELECT [Work Center], [Work Description], " & _
                       "[Summe von Menge] " & _
                "FROM testtesttest " & _
                "WHERE " & strFilter

_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
Willi Wipp
Moderator


Verfasst am:
25. Jul 2005, 15:16
Rufname:
Wohnort: Raum Wiesbaden

Re: Listenfeld & Mehrfachauswahl (Dringend Hilfe :(  ) - Re: Listenfeld & Mehrfachauswahl (Dringend Hilfe :( )

Nach oben
       

Hi kingmarcus,

immer diese Leerzeichen in Feldnamen ...
Beim Zusammenbau der WHERE Klausel machst Du es ja schon ganz richtig mit den eckigen Klammern.
Aber beim Zusammenbau des gesamten SQL-Strings dann wieder nicht, versuche es mal so
Code:
    strFilter = "SELECT [Work Center], [Work Description], " & _
                       "[Summe von Menge] " & _
                  "FROM testtesttest " & _
                 "WHERE " & strFilter
Da war stpimi mal wieder schneller Wink
_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

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


Verfasst am:
25. Jul 2005, 19:35
Rufname:

AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

Hallo,

danke für die fixen Antworten Smile

Aber es klappt immer noch nicht. Denn jetzt erhalte ich die Meldung, dass durch testtesttest ein Zirkelbezug verursacht wurde.

Der Debugger springt auf
Code:
    DoCmd.OpenQuery "testtesttest"
Dabei sieht doch meine Abfrage so aus, wie ich es mir vorstellte:
Code:
SELECT [Work Center], [Work Description], [Summe von Menge]
FROM testtesttest
WHERE [Work Center] = 22001
OR [Work Center] = 22002;
Woran kann das denn liegen? Rolling Eyes
jens05
Moderator


Verfasst am:
25. Jul 2005, 19:53
Rufname:
Wohnort: ~~~~~


AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

Hallo,
du erstellst eine Abfrage die als Datenbasis deine Abfrage hat ?!?!?

_________________
mfg jens05 Wink
kingmarcus
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Jul 2005, 20:20
Rufname:

AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

Hallo,

ja und nein.

Bei obigem Beispiel nicht. Das war ja auch mehr oder weniger nur zum probieren.

Letztendlich wird es aber so sein, dass sich meine letzte Abfrage, auf 2 weiteren Abfragen als Datenbasis beruht. Praktisch so:

Tabelle 1 und Tabelle 2 > Abfrage 1

Abfrage 1 > Abfrage 2

Abfrage 1 und Abfrage 2 > Abfrage 3

Aus der Abfrage 3 sollen nun die mehrfachen Einträge herausgesucht werden. Die beinhaltet aber sämtliches Datenmaterial.


Aber erstmal zurück zum obigen Beispiel: Welcher Teil des Codeschnipsels ist nun falsch bzw. wo ist die Abfrage falsch angegeben? Rolling Eyes
jens05
Moderator


Verfasst am:
25. Jul 2005, 20:33
Rufname:
Wohnort: ~~~~~

AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

Code:
    Set qd = db.QueryDefs("testtesttest") 'für Abfrage
    strFilter = "SELECT [Work Center], [Work Description], " & _
                       "[Summe von Menge] " & _
                "FROM testtesttest " & _
                "WHERE " & strFilter           'von Datenbasis
    qd.sql = strFilter
    DoCmd.OpenQuery "testtesttest"
dh. In der Abfrage mit Namen "testtesttest" steht
Code:
SELECT .... FROM testtesttest

_________________
mfg jens05 Wink
kingmarcus
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Jul 2005, 22:58
Rufname:

AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

kingmarcus am 25. Jul 2005 um 21:42 hat folgendes geschrieben:
Also, ich bin des Rätsels Lösung schon etwas näher ...

Jetzt bin ich aber auf dem Weg zur richtigen Abfrage, d.h. nich probieren wie oben.

Ich erhalte jetzt gewünschte Datensätze. Das z.B. sieht so aus:
Code:
Work Center |Work Description        |Summe von Menge
21003       |Enden schweißen         |            231
21021       |Enden schweißen         |             39
22001       |Endenbearbeitung        |           1008
22002       |Endenbearbeitung        |            743
22003       |Erwärmen,Plätten,Lochen |            779

Das Problem ist jedoch, dass ich die Summe von Menge nochmal kummuliert haben möchte bzw. haben muss. D.h. ich müsste anstatt der Abfrage für obige Datensätze, nochmal eine Abfrage machen, die diese Abfrage dann auswertet, richtig?!

Momentan sieht es so aus:
Code:
Private Sub btnOpenQuery_Click()
    Const cstrField = "Work Center"
    Dim strFilter As String, varElement As Variant
    Dim db As Database, qd As QueryDef
   
    If Me!liste.ItemsSelected.Count = 0 Then
        Beep
        Exit Sub
    End If
    strFilter = ""
    For Each varElement In Me!liste.ItemsSelected
        If strFilter <> "" Then '" OR " Anhaengen?
            strFilter = strFilter & " OR "
        End If
        strFilter = strFilter & "[" & cstrField & "] = " & _
                    Me!liste.ItemData(varElement)
    Next
    Set db = CurrentDb()
    Set qd = db.QueryDefs("test_4")
    strFilter = "SELECT [Work Center], [Work Description], " & _
                       "[Summe von Menge] " & _
                "FROM test_3 " & _
                "WHERE " & strFilter
    qd.sql = strFilter
    DoCmd.OpenQuery "test_4"
End Sub
Zur Erklärung:

Die Abfrage test_1 bezieht sich auf 2 Tabellen, wobei von der ersten die summierten Mengen jedes einzelnen Work Centers eines bestimmten Tages herausgelesen werden.

Die Abfrage test_2 beruht auf test_1 und summiert nochmals diese Menge, d.h. unabhängig vom Work Center.

Die Abfrage test_3 beruht auf test_1 und test_2 wobei mir alle gewünschten Datensätze angezeigt werden und daneben die kummulierte Menge DIESER Datensätze, spricher der gewünschten Work Center.

Das Problem ist jedoch, dass von allen allen Work Center die Menge kummuliert wird, ich aber nur die ausgewählten brauche.

Wie löse ich das?

Muss ich dann anstatt der Datenbasis test_3, die Datenbasis test_1 angeben, was auch zu oben genanntem Ergebnis führt bzw. wie verknüpfe ich denn hier in dem VBA-Schnippsel die beiden Abfragen test_1 und test_2, wobei ja test_1 die Datenbasis für test_2 ist.

Noch ein kleines Problem, wie bringe ich das alles in ein Formular hinein, was beim anclicken erscheint?

himmelhochjauchzend ....

ich habs. Es sieht zwar sicher nicht elegant aus und für Profis kein Problem, aber ich steh ja bei VBA erstmal an Anfang. Also:
Code:
Private Sub btnOpenQuery_Click()
    Const cstrField = "Work Center"
    Dim strFilter As String, varElement As Variant
    Dim db As Database, qd As QueryDef
   
    If Me!liste.ItemsSelected.Count = 0 Then
        Beep
        Exit Sub
    End If
    strFilter = ""
    strFilter1 = ""
    strFilter2 = ""
    For Each varElement In Me!liste.ItemsSelected
        If strFilter <> "" Then '" OR " Anhaengen?
            strFilter = strFilter & " OR "
        End If
        strFilter = strFilter & "[" & cstrField & "] = " & _
                    Me!liste.ItemData(varElement)
    Next
    Set db = CurrentDb()
    Set qd = db.QueryDefs("test_4")
    strFilter = "SELECT [Work Center], [Work Description], " & _
                       "[Summe von Menge] " & _
                "FROM test_1 " & _
                "WHERE " & strFilter
    qd.sql = strFilter
    Set qd = db.QueryDefs("test_5")
    strFilter1 = "SELECT Sum([Summe von Menge]) AS " & _
                                            "[Summe von Summe von Menge] " & _
                 "FROM test_4 "
    qd.sql = strFilter1
    Set qd = db.QueryDefs("test_6")
    strFilter2 = "SELECT test_4.[Work Center], test_4.[Work Description], " & _
                        "test_4.[Summe von Menge], " & _
                        "test_5.[Summe von Summe von Menge] " & _
                "FROM test_4, test_5 "
    qd.sql = strFilter2
    DoCmd.OpenQuery "test_6"
End Sub

Es liefert mir zuverlässig mein gewünschtes Ergebnis, jedoch steht meine Frage noch im Raum: Wie übergebe ich die Sache elegant an ein Formular?

Will heißen, bei
Code:
    DoCmd.OpenQuery "test_6"
muss doch nun sicher das Formular angegeben werden, aber wie? Rolling Eyes

Trotzdem, ich dank euch schonmal für euere Hilfe Smile Wink
stpimi
Moderator Access


Verfasst am:
25. Jul 2005, 23:04
Rufname:
Wohnort: Graz

AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

Weise dem Formular deine Abfrage als Datenherkunft zu und öffne statt der Abfrage direkt das Formular:
Code:
    DoCmd.OpenForm "Formularname"
Die Abfrage wird dabei im Hintergrund durchgeführt.
_________________
Lg, Michael

Dein Feedback hilft auch anderen - vergiß es nicht!
kingmarcus
Im Profil kannst Du frei den Rang ändern


Verfasst am:
26. Jul 2005, 12:28
Rufname:


AW: Listenfeld & Mehrfachauswahl - AW: Listenfeld & Mehrfachauswahl

Nach oben
       

merci Smile klappt alles prima, danke Wink
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
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: Listenfeld nach SQL-Abfrage befüllen 4 Badfunk 3277 24. März 2008, 22:05
Badfunk Listenfeld nach SQL-Abfrage befüllen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in einer Liste & Daten aus einer anderen 2 tobe2k 581 22. Jan 2008, 15:50
tobe2k Abfrage in einer Liste & Daten aus einer anderen
Keine neuen Beiträge Access Tabellen & Abfragen: Summe von den Optionen im Listenfeld 4 Disastro 491 22. Jan 2008, 08:08
jens05 Summe von den Optionen im Listenfeld
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragen von 2 Spalten & ergebniss in der 3ten wiedergeb 1 Ray-82 497 10. Dez 2007, 12:12
JörgG Abfragen von 2 Spalten & ergebniss in der 3ten wiedergeb
Keine neuen Beiträge Access Tabellen & Abfragen: requery listenfeld 6 max112 1228 02. Dez 2007, 22:46
KlausMz requery listenfeld
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage in einem Listenfeld ausgeben! 3 Kyale 514 21. Aug 2007, 17:30
rita2008 Abfrage in einem Listenfeld ausgeben!
Keine neuen Beiträge Access Tabellen & Abfragen: Datenzugriffseite & Co 0 Scarface1102 400 02. Aug 2007, 13:51
Scarface1102 Datenzugriffseite & Co
Keine neuen Beiträge Access Tabellen & Abfragen: Inhalt von Listenfeld in Bericht übergeben 3 Sandnet 1126 12. Jul 2007, 09:36
KlausMz Inhalt von Listenfeld in Bericht übergeben
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mehrerer Checkboxen & eines Textfeldes 4 typh00n 509 25. Apr 2007, 08:58
KlausMz Abfrage mehrerer Checkboxen & eines Textfeldes
Keine neuen Beiträge Access Tabellen & Abfragen: Inhalt von Listenfeld als Filter verwenden 11 GregorJ 1126 20. März 2007, 18:17
GregorJ Inhalt von Listenfeld als Filter verwenden
Keine neuen Beiträge Access Tabellen & Abfragen: Verknüfpftes Excel Arbeitsblatt & Access Anfügeabfrage 0 Highnz 996 02. März 2007, 10:59
Highnz Verknüfpftes Excel Arbeitsblatt & Access Anfügeabfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Eintrag in Listenfeld bei klick an abfrage übergeben? 5 Zamp 1013 07. Dez 2006, 07:58
derArb Eintrag in Listenfeld bei klick an abfrage übergeben?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Macromedia Dreamweaver