Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Paule am Juni 11, 2016, 11:25:38

Titel: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 11, 2016, 11:25:38
Hallo,

ich habe seit geraumer Zeit folgendes Problem.

Wenn ich in meinem Navigationsformular zu einem bestimmten Formular springe und dort Eintragungen durchführe, anschließend den Datensatz mit Klick auf die Schaltfläche abspeichere und schließlich in ein anderes Formular wechsle, wird mir immer die Frage angezeigt, ob ich die Änderungen an dem Formular speichern will.

Öffne ich das Formular allein (und nicht aus der Navigationsansicht raus), gebe Daten ein, speichere diese und schließe das Formular, wird diese Meldung nicht angezeigt.

Es tritt also nur im Navigationsfenster auf.

Wisst ihr, woran das liegen könnte bzw. braucht ihr mehr Infos (zum Formular).

Ich wäre euch sehr dankbar für eure Hilfe, das ist nämlich ein wenig nervig.

Viele Grüße und ein schönes Wochenende,
Marcus
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 11, 2016, 12:32:44
Hallo,


Zitatanschließend den Datensatz mit Klick auf die Schaltfläche abspeichere

Wie lautet die dazugehörende Ereignisprozedur und gibt es weiteren Code beim Form-Ereignis "Beim Schließen"?
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 11, 2016, 13:12:59
Hallo,

der Code lautet:

Private Sub Befehl52_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
    Me!listType = ""
    Me!txtItem = ""
    Me!txtDeparture = ""
    Me!txtDestination = ""
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT"
    Me!lstDeparture.RowSource = "SELECT WarehouseID, WarehouseName FROM WH_Warehouses"
    Me!lstDestination.RowSource = "SELECT WarehouseID, WarehouseName FROM WH_Warehouses"
   
End Sub


Eine weitere Ereignisprozedur gibt es bezüglich der Schaltfläche nicht.

In dem Formular gibt es drei Listenfelder.
Für diese Listenfelder habe ich ein Such-Textfeld erstellt. Damit kann dann die Anzeige im Listenfeld wie gewünscht gefiltert werden.
Bei dem dritten Listenfeld ist davor noch ein Kombinationsfeld davorgestellt. Da kann ich dann erstmal auswählen "Set", "Spare Part"; "Single Part" und im Listenfeld danach werden dann die Teile/Produkte angezeigt, je nachdem, was man in dem Kombinationsfeld angegeben hat. Zusätzlich kann man dann das Such-Textfeld noch benutzen um weiter zu filtern.

Die Suchtextfelder haben als Ereignis "Bei Änderung" und folgenden Code:
Private Sub txtDeparture_Change()
    Me!lstDeparture.RowSource = "SELECT WarehouseID, WarehouseName FROM WH_Warehouses WHERE WarehouseName Like '*" & Me!txtDeparture.Text & "*'"
End Sub


Private Sub txtDestination_Change()
    Me!lstDestination.RowSource = "SELECT WarehouseID, WarehouseName FROM WH_Warehouses WHERE WarehouseName Like '*" & Me!txtDestination.Text & "*'"
End Sub


Private Sub txtItem_Change()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE (((WH_ItemsT.ItemType)=[listType])) and ItemName Like '*" & Me!txtItem.Text & "*'"
End Sub

([listType] ist dabei das besagte Kombinationsfeld

Mit Klick möchte ich, dass er die Suchfelder zurücksetzt, damit in den Listenfeldern wieder die komplette Auswahl angezeigt wird anstatt noch die Kriterien vom vorherigen Datensatz.

PS: Es besteht noch ein Makro beim Ereignis "Beim Laden" des Formuars: Gehe zu neuen Datensatz.
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 12, 2016, 08:50:25
Hallo,

sind die Felder etwa gebunden?


diese Sachen fallen mir auf:


Zitat
    Me!listType = Null   
    Me!txtItem = Null
    Me!txtDeparture = Null    
    Me!txtDestination = Null
 

ZitatPrivate Sub txtItem_Change()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE WH_ItemsT.ItemType=  " & Me!listType  & " and ItemName Like '*" & Me!txtItem.Text & "*'"
End Sub


Sofern "ItemType" vom Datentyp "Zahl, Long" ist. Bei Text sind Hochkommata erforderlich.
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 12, 2016, 17:05:51
Hallo,

folgende Felder sind gebunden:

- listItem
- lstDeparture
- lstDestination

Ich habe wie von dir beschrieben folgenden Code probiert:
   Me!listType = Null   
    Me!txtItem = Null
    Me!txtDeparture = Null   
    Me!txtDestination = Null


Dann setzt er aber mit Klick auf die Schaltfläche die Listenfelder zurück, da die Suchtextfelder mit dem Inhalt der vorherigen Suche verbleiben.

Außerdem habe ich folgenden Code probiert:
Private Sub txtItem_Change()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE WH_ItemsT.ItemType=  [b]'[/b] & Me!listType  & [b]'[/b] and ItemName Like '*" & Me!txtItem.Text & "*'"
End Sub

(Meintest du das so mit Hochkommata?

Dann hat das Listenfeld listItem allerdings gar nichts mehr angezeigt.
"ItemType" ist vom Typ her Text.

Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 13, 2016, 12:23:58
Hallo,

keines der Felder darf gebunden sein.

Die Anzeige in den Listenfeldern erfolgt allein durch die Zuweisung des SQL-Strings an deren RowSource-Eigenschaft.

Wenn die Listenfelder (wieder) alle DS nach den "Reset" der Suchfelder (welche sind das?) anzeigen sollen, so ist beim "resetten" (auf NULL setzen) der Suchfelder erneut ein entspr. SQL-String (d. h. ohne Where-Condition-Teil)zuzuweisen.

Sub btnReset_Click()
Me!listType = Null   'das ist ein Suchfeld
Me!listItem.RowSource = "SELECT ItemID, ItemName, ItemType FROM WH_ItemsT "
End Sub


Die Hochkommata wären richtig, sofern die Formatierungs-Tags nur hier im Code-Block  vorhanden sind.


Private Sub txtItem_Change()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE WH_ItemsT.ItemType =  ' & Me!listType  & ' and ItemName Like '*" & Me!txtItem.Text & "*'"
End Sub

Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 14, 2016, 07:02:14
Hallo,

keines der Such-Textfelder ist gebunden. Einzig die dazugehörigen Listenfelder.
Die Such-Textfelder sind:
-txtDeparture
-txtDestination
-txtItem

Die Listenfelder (gebunden), sind:
-lstDeparture
-lstDestination
-lstItem

"listType" ist streng genommen weder ein Suchtextfeld noch ein gebundenes Listenfeld. Es soll lediglich die Auswahl im Listenfed "lstItem" etwas überschaubarer machen.

Ich habe den Code allerdings da nochmal ein klein wenig angepasst:
Für nach Auswahl aus listType (sowas wie "Set", "Spare Part"...)
Private Sub listType_AfterUpdate()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE (WH_ItemsT.ItemType=[listType])"
End Sub


Folgt dann danach normal wie schon gehabt bei Änderung des Textfeldes:
Private Sub txtItem_Change()
    Me!listItem.RowSource = "SELECT WH_ItemsT.ItemID, WH_ItemsT.ItemName, WH_ItemsT.ItemType FROM WH_ItemsT WHERE (WH_ItemsT.ItemType=[listType]) and ItemName Like '*" & Me!txtItem.Text & "*'"
End Sub


Und irgendwie klappt es jetzt auch ohne diese Speichern-Meldung....  ::) :o
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 14, 2016, 08:01:29
Hallo,


Warum und zu welchem Zweck sind die Listenfelder gebunden?


Zitat"listType" ist streng genommen weder ein Suchtextfeld noch ein gebundenes Listenfeld.

Was ist es dann "streng genommen"?  Ein Textfeld, ein Kombinationsfeld oder ein Listenfeld?

ZitatEs soll lediglich die Auswahl im Listenfed "lstItem" etwas überschaubarer machen

??  Ist lstItem (ein gebundenes! Listenfeld)  auf MehrfachAuswahl eingestellt?  Oder meinst Du anstelle "Auswahl" die "Anzeige" von Datensatzfeldern?
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 14, 2016, 08:34:21
Weil diese Listenfelder in der Tabelle WH_MovingsT gespeichert werden.
Dort gibt es folgende Felder:
-MovingID (AutoWert)
-MovingDate (Datum/Uhrzeit)
-ItemID (kurzer Text)
-Amount (Zahl)
-Departure (Kurzer Text)
-Destination (Kurzer Text)

Das Formular, über das wir reden, beschreibt, welche Warenbewegungen stattgefunden haben. Daher ist es wichtig, dass die Listenfelder gebunden sind.
Über die Tabelle und Abfragen (siehe anderer Post) ist es mir möglich, den Warenhausbestand zu berechnen.

"listType" ist ein ungebundenes Kombinationsfeld. Dort kann man lediglich zwischen "Set", "Single Part" und "Spare Part" auswählen.
Alle Items aus der Tabelle WH_ItemsT haben nicht nur eine ItemID (kurzer Text, ein AUtowert) und einen ItemNamen, sondern auch einen ItemType.
Nach Aktualisierung des Kombinationsfeldes werden dann im Listenfeld, wo ich das Produkt/Teil auswähle, welches bewegt wurde, werden mir dann eben nur noch alle Items angezeigt, die als ItemType dem Kombinationsfeld listType entsprechen. Und danach kann ich noch im Anschluss das Suchtextfeld txtItem verwenden um die Auswahl noch genauer einzugrenzen.
Anschließend wähle ich das bewegte Produkt/Teil aus und der Datensatz wird mit Klick auf den Button gespeichert.

Nein, das Listenfeld lstItem hat keine Mehrfachauswahl. Ja, ich meinte Anzeige statt Auswahl. Entschuldigung für die Verwirrung.
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 14, 2016, 12:49:56
Hallo,


ZitatWeil diese Listenfelder in der Tabelle WH_MovingsT gespeichert werden.

Sorry, aber Listenfelder werden nicht in Tabellen gespeichert.
Wenn ein Listenfeld an ein Tabellenfeld (eigentlich Feld in der Datenherkunft des Formulars) gebunden ist, dann wird der im Listenfeld markierte Wert gespeichert (entspr. der gebunden Spalte) . Das bedeutet auch, dass der Wert des akt. Datensatz-Feldes (an den das LF gebunden ist) durch Markieren eines anderen Listenfeld-Eintrages modifiziert wird. d. h., die Datensätze in der Tabelle können beim entspr. Feld "gepflegt" werden.

(Dabei ist auch die passenden Datensatzherkunft des Listenfeldes zu beachten, die mit der Datenherkunft des Formulars konform gehen muss).

Falls das auch so gewünscht ist, wäre m. E. die Darstellung/Behandlung mit einem Endlosform anstelle des Listenfeldes vorzuziehen.
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: Paule am Juni 14, 2016, 14:44:39
Naturgemäß werden nicht alle Einträge, die im Listenfeld zu finden sind, gespeichert. Sondern nur das, welches ich auswähle. Ich möchte die beiden Lagerhäuser, sowie das entsprechende Produkt/Teil auswählen, welches von A nach B bewegt wird. Heißt, in den drei Listenfeldern wird dann jeweils nur 1 Eintrag markiert, der dann gespeichert wird.
Und ich möchte nicht aus einer extrem langen Liste auswählen, sondern "Filter" davor setzen. Daher das Kombinationsfeld sowie das Suchtextfeld.
Titel: Re: Pop-Up-Frage "Änderungen am Formular...speichern" bei Wechsel in anderes
Beitrag von: DF6GL am Juni 15, 2016, 08:05:17
Hallo,

na gut , wenn es denn funktioniert.  Ich frage mich nur, auf welchem Ds das Formular steht....