Guten Morgen,
leider muss ich wieder Eure Hilfe erbitten, da ich den Fehler nicht finden kann. Ich habe zwei Formulare. Im ersten wird automatisch ein Datum erzeugt sobald ich eine Nummer in ein Feld eintrage. Läuft über:
Private Sub LieferscheinNr_AfterUpdate()
If Me!LieferscheinNr > 0 Then
Me!verladen = Date
Else
Me!verladen = ""
End If
End Sub
Dieses Datum wird auch in meinem zweiten Formular eingetragen, da beide über eine Tabelle laufen.
Funktioniert alles super.
Jetzt wollte ich aber gern noch in einem weiteren Feld im zweiten Formular das Wort "verladen" automatisch einfügen, wenn obige Bedingung erfüllt ist. Habe dies über folgenden Code ausgegeben:
Private Sub verladen_AfterUpdate()
If Me![verladen] = Date Then
Me![Status] = "verladen"
End If
End Sub
Doch leider passiert gar nichts. Es gibt auch keine Fehlermeldung. Was mache ich falsch? Der Code sollte doch stimmen.
Ich meine man könnte den Code aus dem ersten Formular auch erweitern, um das Feld mit "verladen" zu füllen, aber ich weiß nicht wie. Wichtig vieleicht noch, daß feld in dem das Wort "verladen" erscheinen soll, ist ein Kombifeld mit verschiedenen hinterlegten Werten, welche man auch manuell auswählen kann.
Wäre für einen Tipp sehr dankbar.
Rene
Das Nach Aktualisierung Ereignis eines Steuerelements wird nur ausgelöst, wenn Du manuell etwas darin änderst, was anscheinend nicht der Fall ist. In einem ungebundenen Textfeldsteuerelement kannst Du den Text jedoch zum Vorschein bringen.
Steuerelementinhalt: =Wenn(IstDatum([verladen]);"verladen")
... und speichern muss man jederzeit wiederholend zu berechnende Werte nicht.
PS: Feldwerte setzt man auf Null und nicht auf "" (auch wenn Access gnädig ist und keine Fehlermeldung ausspuckt), wenn kein Inhalt vorliegt.
PPS: die Berechnung funktioniert auch in einer Abfrage - es muss im Feld nur das führende = entfernt werden.
Hallo Rene,
per Code müsste es so funktionieren:
If IsNull(Me!LieferscheinNr) Then
Me!verladen = Null
Me!Status = Null
Else
Me!verladen = Date
Me!Status = "verladen"
End If
Wobei "verladen" in der ersten angezeigten Spalte des Kombifeldes "Status" stehen muss.
Noch besser wäre es allerdings, statt dem Wort "verladen" den Wert der gebundenen Spalte des Kombifeldes (ist vermutlich eine Zahl?) anzusprechen.
Gruß
Josef
Hallo,
Also ich verstehe es so:
If Me!LieferscheinNr > 0 Then
Me!verladen = Date
Forms!ZweitesForm![Status] = "verladen"
Else
Me!verladen = ""
End If
End Sub
"Zweites Form" muss dazu allerdings geöffnet sein.
gruss ekkehard
Hast recht, Ekkehard,
ich habe diesen Satz übersehen:
ZitatJetzt wollte ich aber gern noch in einem weiteren Feld im zweiten Formular das Wort "verladen" automatisch einfügen
Gruß
Josef
Hallöchen,
danke für die Hilfe oder den Versuch. Das Steuerelement wäre in diesem Fall wohl "Status" und dieses ist leider gebunden. Es ist eine Kombobox, welches einer Tabelle zugeordnet ist und wo auch manuell Werte ausgewählt werden können. Wäre es aber ungebunden, wo müsste die Anweisung denn eingetragen werden?
Dein zweiter Vorschlag mit der Abfrage habe ich so nicht in Betracht gezogen. Die Formulare sind an keine Abfrage gebunden und ich wollte es auch gern so lassen. Gibt es denn keine Alternativen direkt im Formular?
Danke für Deinen Support
Rene
Hallöchen
und danke schon mal. Es passiert etwas aber leider nicht korrekt. Habe den Code abgeändert und das Wort "verladen" steht ganz oben in der Kombobox.
Wenn ich jetzt eine Nummer eintrage, wird das Datum ergänzt, funktionierte ja bereits, auch schreibt er unter (Status) das Wort "verladen" allerdings kommt es zu einem Schreibkonflikt zwischen den beiden Formularen und ich muss entscheiden ob ich das Datum oder den Status geändert haben will. Geht das noch irgendwie anders?
Danke schonmal
Rene
Zitat von: Beaker s.a. am Januar 02, 2017, 14:14:13
Hallo,
Also ich verstehe es so:
If Me!LieferscheinNr > 0 Then
Me!verladen = Date
Forms!ZweitesForm![Status] = "verladen"
Else
Me!verladen = ""
End If
End Sub
"Zweites Form" muss dazu allerdings geöffnet sein.
gruss ekkehard
Hallo Rene,
Wenn das ein Kombi ist, musst du die ID des Eintrags "verladen" übergeben statt
dem String(besser); - oder die gebundene Spalte auf die Spalte mit dem String
festlegen (schlechter).
gruss ekkehard
Hallo Ekkehard,
Ok habe das mal versucht und die ID der Kombobox angesprochen, allerdings passiert dann nix im Feld Status. Habe auch mal im Code von "verladen" auf die ID umgestellt, aber kein Erfolg. Auch habe ich das Problem mit dem zweiten Formular, welches immer geöffnet sein muss. Das ist nicht unbedingt gegeben. Habe jetzt folgendes gemacht. Habe ein verstecktes Textfeld gebunden auf Status im ersten Formular (Fussbereich)erstellt und in den Code mit eingebunden Me!Status. Damit sind alle Felder die ich ansprechen will, in einem Formular. Funktioniert jetzt tadellos, soweit ich das beurteilen kann.
Wenn du weisst warum dein Vorschlag bein mir nicht funktioniert, melde dich nochmal, ansonsten recht vielen Dank für die Mühen.
Rene
Hallo Rene,
Zitat aus der Anfangsfrage:
ZitatDieses Datum wird auch in meinem zweiten Formular eingetragen, da beide über eine Tabelle laufen.
Zitatkommt es zu einem Schreibkonflikt zwischen den beiden Formularen und ich muss entscheiden ob ich das Datum oder den Status geändert haben will
wenn ich das richtig deute, willst du einen Datensatz an zwei Stellen gleichzeitig ändern. Und das bringt einen Schreibkonflikt.
Daher stellt sich die Frage, wieso 2 Formulare mit der gleichen Datenquelle zugleich geöffnet sind, und mit den gleichen Daten (2 mal Datum) gefüllt werden?
Gruß
Josef
Hallo Rene,
ZitatWenn du weisst warum dein Vorschlag bein mir nicht funktioniert, melde dich nochmal
Schwer zu sagen, wenn man deinen geänderten Code und das Kombi nicht kennt.
Ansonsten schliesse ich mich Josefs Frage an.
Um einen Wert von einem Formular in eine anderes zu übertragen gibt es ja einige
Möglichkeiten.
gruss ekkehard
Hallo nochmal,
Nun es gibt eine zentrale Tabelle in der alle Daten zusammengefasst sind. Wir haben zwei Abteilungen, Logistik und Produktion, welches jeweils über ein Formular auf diese Tabelle zugreifen. Die notwendigen Daten sind zu 80% bei beiden identisch. Wenn ich also im Formular Logistik einen Auftrag abfertige, erscheint das Datum unter verladen, dieses soll aber ebenfalls im Formular Produktion im Feld verladen erscheinen, um den Kollegen anzuzeigen, das dieser Auftrag erledigt ist. Weiterhin gibt es im Formular Produktion noch die Kombibox Status, welche ebenfalls parallel mit angesprochen werden soll und nach Verladung halt "verladen" anzeigen soll.
Die Datenbank ist ziemlich einfach aufgebaut. Bin halt kein Profi und versuche es deshalb so einfach als möglich zu halten.
Bis dahin.
Rene
Hallo Rene,
ZitatNun es gibt eine zentrale Tabelle in der alle Daten zusammengefasst sind. Wir haben zwei Abteilungen, Logistik und Produktion, welches jeweils über ein Formular auf diese Tabelle zugreifen.
Wenn das so ist, und ich es recht verstehe, sollten dann ja auch in jedem Formular
die Steuerelemente bzw. die gleichen Tabellenfelder vorhanden sein. Dann brauchst
du aber nicht extra von einem Formular in das andere schreiben, sondern nur das
andere Formular, evtl. Timer gesteuert, zu aktualisieren (.Requery).
gruss ekkehard
Hallo,
Ist mir gerade noch eingefallen, evtl. hilft dann auch dieses
http://www.donkarl.com?FAQ4.3 (http://www.donkarl.com?FAQ4.3)
http://www.donkarl.com?FAQ4.5 (http://www.donkarl.com?FAQ4.5)
gruss
Guten Abend,
Nun jedes Formular greift nur auf einen Teil der Tabelle zu, aber grundsätzlich hast du recht. Habe es ja auch so gelöst und das Feld Status in beiden Formularen verfügbar gemacht, in einem aber unsichtbar und so das Problem gelöst.
Ich danke allen für die Bemühungen und wünsche einen entspannten Abend.
Grüsse Rene
Hallo,
bitte unterlasse das überflüssige Zitieren ganze Beiträge. Es werden nur die Themen unnötig verlängert ohne Nutzen. Zitat oben habe ich gelöscht. Was ich (scheinbar ohne dass Du es gemerkt hast) schon öfter gemacht habe.