Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datensatz aus Endlosformular abhängig in andere Tabelle verschieben

Begonnen von Samurai2_de, September 12, 2016, 15:05:28

⏪ vorheriges - nächstes ⏩

Samurai2_de

Hallo ihr Wissenden!

Wie ich in hier bereits geschrieben hatte, habe ich ein Endlosformular erzeugt, in dem ich mir zuvor per E-Mail gesammelte Daten anzeigen lassen. Der Nutzer entscheidet nun über eine Optionsgruppe kurz gesagt ob
- die Daten angenommen werden soll (Optionswert 1)
- die Daten nicht angenommen werden sollen (Optionswert 2)
- eine Korrektur der Daten vom Absender der E-Mail angefordert werden soll (Optionswert 3)
Die Entscheidung des Nutzers zu den einzelnen Datensätzen (also die Optionswerte) werden in der zum Endlosformular gehörenden Tabelle "tbl_inbox" in dem Feld "Entscheidung" gespeichert.
Nachdem der Nutzer nun mit der Bearbeitung der eingegangenen Daten fertig ist, soll mit einem Knopfdruck per VBA die Tabelle, in der die Daten zwischengespeichert waren, bereinigt werden und die einzelnen Datensätze je nach der Entscheidung des Nutzers in unterschiedliche Tabellen (tbl_accepted, tbl_not_accepted, tbl_correction) verschoben werden. Dies realisiere ich über je eine Anfüge- und Löschabfrage für jede der drei Entscheidungsmöglichkeiten, d.h. im SQL-Code der Abfrage beziehe ich mich über eine WHERE-Klausel auf das Tabellenfeld "Entscheidung": "WHERE [tbl_inbox].[inbox_Entscheidung] = 1" usw.
Wie realisiere ich jetzt aber, dass diese Abfragen korrekt für jeden Datensatz des Endlosformulars ausgeführt werden?
Ich würde es über die "Select Case"-Methode versuchen wollen:
Select Case Rahmen 30
Case 1
docmd.openquery qry_add_case1
docmd.openquery qry_delete_case1
Case 2
docmd.openquery qry_add_case2
docmd.openquery qry_delete_case2
Case 3
docmd.openquery qry_add_case3
docmd.openquery qry_delete_case3
Case Else
docmd.openquery qry_add_case_else
docmd.openquery qry_delete_case_else
End Select

Wie bekomme ich es nun aber hin, dass diese Select Case für jeden Datensatz des Endlosformulars durchgeführt wird?
Muss ich hier doch wieder, wie in meinem Ursprungsthread beschrieben, über "movefirst - movenext - loop" ein fröhliches Datensatzhüpfspiel starten oder gibt es da eine bessere Lösung? Hat jemand einen Tipp für mich, wie der VBA-Code für meinen Button zur Datenübernahme aussehen müsste?
Wenn nötig poste ich auch gerne noch den SQL-Code meiner Anfüge- und Löschabfrage.

Manchmal sieht man wahrscheinlich den Hafen vor lauter Schiffen nicht...
Ich danke daher schon mal Jedem, der sich mit meinem Problem gedanklich auseinandersetzt!

Mit Gruß von der Küste

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

Beaker s.a.

Hallo,
ZitatManchmal sieht man wahrscheinlich den Hafen vor lauter Schiffen nicht...
Genau, die drei Schiffe, äh Tabellen (tbl_accepted, tbl_not_accepted, tbl_correction)
brauchst Du nämlich gar nicht, - eine genügt völlig. In dieser gibt es ein Feld für die
gewählte Option.
Die drei Tabellen sind dann nur noch eine Abfrage mit dem Kriterium "Feld = Option".
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
ich habe im oben verlinkten Thema auch nicht geschrieben, dass Du hier 3 Tabellen anlegen sollst.
Es wird eine Tabelle benötigt in der die 4 möglichen Zustände als 4 Datensätze abgelegt sind.
0 = Keine Entscheidung
1 = Annahme
2 = Rueckweisung
3 = Korrektur

Die Programmierung mit Case wird dann ersatzlos überflüssig.
Gruß Klaus

Samurai2_de

Hallo ihr zwei Antwortgeber!

Recht herzlichen Dank für eure schnellen Antworten!

Zur Antwort von Beaker s.a.:
Du hast natürlich vollkommen Recht, es ist tatsächlich nur eine Tabelle notwendig, das kann ich ja noch zusammenfassen. Mache ich auf jeden Fall gleich.

Zur Antwort von MzKlMu:
Das hatte ich auch so nicht verstanden, dass ich drei Tabellen anlegen muss. Die drei Tabellen sind durch einen Denkfehler meinerseits entstanden.  :-[
Ich muss aber trotzdem noch was bei dir nachfragen: Warum soll ich eine Extratabelle anlegen, in der die vier Bearbeitungszustände hinterlegt sind? Ich habe doch jeder Auswahlmöglichkeit des ungebundenen Optionsfelds einen Optionswert zugewiesen (wie du es beschrieben hast) und lasse die Entscheidung des Benutzers (also den Optionswert) in dem Feld "Entscheidung" meiner tbl_inbox abspeichern. Ist da diese Extratabelle nicht entbehrlich?

Ich werde nun die Tabelle/n meiner Datenbank umstellen und mich dann wieder melden, ob alles geklappt hat.

Mit Gruß aus der dunklen Nacht

Samurai2_de
"Vegetarier" ist das indianische Wort für "zu doof zum jagen"!

Ein Tag ohne Lachen ist ein verschenkter Tag!

MzKlMu

Hallo,
ZitatIst da diese Extratabelle nicht entbehrlich?
imPrinzip ja, aber was machst Du wenn Du mal die Klartexte benötigtst ? Z.B. einen Bericht mit den Bearbeitungszuständen als Überschrift.
Mit
=Wenn(Zahl=1;"Annahme";Wenn(Zahl=2;"Rückweisung";.........))
den passenden Text ermitteln?
Das ist keine gute Idee.
Wenn Du eine Tabelle für Bearbeitungszustände anlegst hast Du alle Optionen auch als Klartext. Du verwendest eine Abfrage mit dieser Tabelle und einer Verknüpfung über die Zahl und schon hast Du ohne einen Buchstaben zu programmieren auch die Klartexte zur Anzeige.
Diese Tabelle kann so aufgebaut werden, dass man zu der Zahl auch verschiedene Texte hat (andere Sprache z.B.).
Daher rate ich aus Gründen der Flexibilität zu dieser Tabelle, die dann auch im Beziehungsfenster in die Beziehungen einzubinden ist.
Gruß Klaus