Neuigkeiten:

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

Mobiles Hauptmenü

Adhoc Aktualisierung - möglich?

Begonnen von derilzemer, November 12, 2017, 21:00:25

⏪ vorheriges - nächstes ⏩

derilzemer

Hallo,
ich habe hier ein kleines Feature in meiner DB, welches mir Klaus Dankenswerterweise gebaut hat. Das Ding funktioniert sehr gut. Einzig wenn man an einem Datensatz was ändert, ist das Aktualisierungsverhalten aus meiner Sicht etwas nachteilig. Geht das nicht adhoc, also sofort nach Auswahl? Es geht bei dem Feature um Ein bzw. Umlagern von Spielen. Es sind 3 Tabellen involviert (siehe Beziehung bild1). Wenn ich nun im Datensatz im Formular etwas ändere, dann aktualisiert sich das ganze erst, wenn ich in das 3 Feld Schubl.- Nr. komme und eine Auswahl treffe (bild2).
Der VBA Code für das kleine Feature ist folgender:
Option Compare Database
Option Explicit

Private Sub cboReihe_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboReihe.Requery
    Me.cboSchublade.Requery
End Sub

Private Sub cboReihe_GotFocus()
    Me.cboReihe.RowSource = "SELECT SchraReiheID, Reihe, Schrank FROM tblSchraReihen WHERE Schrank = " & Me.cboSchrank & " ORDER BY Reihe"
    Me.cboSchrank.Requery
    Me.cboSchublade.Requery
End Sub

Private Sub cboSchrank_AfterUpdate()
    Me.cboReihe.Requery
    Me.cboSchublade.Requery
    Me.Requery
End Sub

Private Sub cboSchublade_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboReihe.Requery
    Me.cboSchublade.Requery
    Me.SchraReiheSchubID_F = Me.cboSchublade
    Me.Requery
End Sub

Private Sub cboSchublade_GotFocus()
    Me.cboSchrank.Requery
    Me.cboReihe.Requery
    Me.cboSchublade.RowSource = "SELECT SchraReiheSchubID, SchubladeNr, SchraReiheID_F FROM tblSchraReiheSchub WHERE SchraReiheID_F = " & _
                                Me.cboReihe & " ORDER BY SchubladeNr"
End Sub


Ist das technisch möglich, dass wenn man die Zahl auswählt das Feld darunter gleich aktualisiert wird?
Gruß und Danke
Andreas

Grüße und Dank im voraus
Andreas

Frithjiof

Hallo derilzemer,
fast alles ist möglich.

Welche Bedeutung hat das Feld unter der Zahl (=Kombinationsfeld)?

Ingesamt sehen mir alle Prozeduren etwas merkwürdig aus.
z.B.
Private Sub cboReihe_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboReihe.Requery
    Me.cboSchublade.Requery
End Sub


Warum wird hier Me.cboReihe.Requery ausgeführt?

Beaker s.a.

Hallo Andreas,
ZitatIst das technisch möglich, dass wenn man die Zahl auswählt das Feld darunter gleich aktualisiert wird?
Private Sub cbo_X_AfterUpdate()
    .
    .
    Me.DeinFeldDarunter = DeinWert
End Sub

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)

derilzemer

Hi, Ekkehard,
Zitat von: Beaker s.a. am November 13, 2017, 14:23:50
ZitatIst das technisch möglich, dass wenn man die Zahl auswählt das Feld darunter gleich aktualisiert wird?
Private Sub cbo_X_AfterUpdate()
    .
    .
    Me.DeinFeldDarunter = DeinWert
End Sub

Ich hab es wahrscheinlich nicht ganz verstanden. Ich habe jetzt als Beispiel im VBA für cboSchrank folgendes gemacht:
Private Sub cboSchrank_AfterUpdate()
    Me.Schrank.Requery
'    Me.cboReihe.Requery
'    Me.cboSchublade.Requery
'    Me.Requery
End Sub

Also alles andere auskommentiert, für das Feld darunter einen Requery gesetzt, weiss jedoch nicht, was ich mit der Angabe = DeinWert machen soll da der Wert ja dynamisch zugewiesen wird oder soll das ein Hinweis sein, dass ich eben lediglich einen requery für das Feld darunter machen soll? Aber das habe ich wie du siehst gemacht, ändert aber nichts am Verhalten.

Sorry und Gruß
Andreas
Grüße und Dank im voraus
Andreas

derilzemer

Hi,
Zitat von: Frithjiof am November 13, 2017, 13:22:53
fast alles ist möglich.
Welche Bedeutung hat das Feld unter der Zahl (=Kombinationsfeld)?
Ja dann, wenn alles möglich ist :). Das Feld unterhalb des Kombi, da steht dann die Angabe drin, welche man in den Kombis auswählt. Das ist ja zum einen genau das Thema, dass es erst nach dem 3. Kombi auch aktualisiert.
ZitatInsgesamt sehen mir alle Prozeduren etwas merkwürdig aus. z.B.
Private Sub cboReihe_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboReihe.Requery
    Me.cboSchublade.Requery
End Sub

Warum wird hier Me.cboReihe.Requery ausgeführt?
Ich hatte ja zu Anfang gesagt, dass mir dieses Feature Kollege Klaus vom Forum erstellt hat und ich nicht alle Einrichtungen "verstehe". Sprich, es mag durchaus sein, dass die eine oder andere Zeile Code eventuell nicht nötig wäre.

Gruß Andreas
Grüße und Dank im voraus
Andreas

Beaker s.a.

Hallo Andreas,
Wo kommt denn die "1" her, die da jetzt unter dem Kombi steht?
Das ist "DeinWert"!
Private Sub cboReihe_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboSchublade.Requery
    Me.DeinFeldDarunter = DeinWert
End Sub

bei den anderen Kombis entsprechend.
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)

Beaker s.a.

Obwohl das auch nicht ganz korrekt ist.
Beim cboSchrank sollte ein Requery auf das cboReihe reichen, und beim
Kombi cboReihe eins auf das cboSchublade.
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)

derilzemer

Hi,
Zitat von: Beaker s.a. am November 13, 2017, 17:06:02
Wo kommt denn die "1" her, die da jetzt unter dem Kombi steht?
Das ist "DeinWert"!
Private Sub cboReihe_AfterUpdate()
    Me.cboSchrank.Requery
    Me.cboSchublade.Requery
    Me.DeinFeldDarunter = DeinWert
End Sub

bei den anderen Kombis entsprechend.
Ähmmm, ich habe 3 Schränke insgesamt. 2 Schränke mit je 4 Schubladenreihen und pro Schubladenreihe hat es 3 Schubladen und einen Schrank mit 6 Schubladenreihen und pro Schubladenreihe mit 5 Schubladen.
Ergo kann/ist dieser Wert dynamisch, oder verstehe ich hier was nicht? Das ist also nicht immer die gleiche Zahl. Versteh ich mal wieder was nicht??

Gruß Andreas
Grüße und Dank im voraus
Andreas

Lachtaube

Ich vermute, dass das Me.Requery schuld ist und die anderen Anweisungen nur der Beschäftigung des Rechners dienen. Im Beim Anzeigen Ereignis des Formulars musst Du die beiden anderen Kombifelder zurückspulen - sonst nirgends.
Grüße von der (⌒▽⌒)

derilzemer

Hi,
Zitat von: Lachtaube am November 13, 2017, 20:00:24
Ich vermute, dass das Me.Requery schuld ist und die anderen Anweisungen nur der Beschäftigung des Rechners dienen. Im Beim Anzeigen Ereignis des Formulars musst Du die beiden anderen Kombifelder zurückspulen - sonst nirgends.
Das klingt für mich leider wie verschlüsselt ....... die beiden anderen Kombifelder zurückspulen...... über das Ereignis Beim Anzeigen
Also der ganze VBA Code, zumindest die Me.cboxxxx.Requerys sind generell PC Beschäftiger (unnötig), der Me.Requery bringt das Fass dann zum überlaufen.
Aber was genau meinst du mit "Kombifelder zurückspulen", sorry :-[

Gruß Andreas
Grüße und Dank im voraus
Andreas

Frithjiof

Hallo Andreas,
Wenn die Felder unter den Kombinationasfeldern den Wert des Kombinationafeldes wiedergeben, verstehe ich deren Sinn überhaupt nicht.

Dem ungeachtet kann der Wert des Kombinationsfeld einfach in das untere Feld geschrieben werden.

Private Sub cboSchrank_AfterUpdate()
    me.feld_X=me.cboSchrank '.Column(n) )=> wenn eine andere Spalte des Kombinationsfeldes den Wert enthält
    Me.cboReihe.Requery       
    Me.cboSchublade.Requery
End Sub


Frithjof


Beaker s.a.

Hallo Andreas,
ZitatErgo kann/ist dieser Wert dynamisch,
Schon klar, - einen festen Wert könntest du ja auch direkt eintragen.
Dynamisch heisst für mich aber, dass der berechnet oder aus einer Tabelle
geholt wird. Also z.B., wie von Frithjof vermutet, der Wert aus einer der
Kombifeldspalten.
Du musst doch jetzt auch schon irgendeine Form der Wertzuweisung haben,
sonst würde ja nichts drinstehen. Und diese Zuweisung musst du in das/die
Kombi_AfterUpdate-Ereignis(se) verlegen. Evtl. auch noch in Form_Current.
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)