ich habe wieder ein Problem. Ich habe ein Formular mit einem Registersteuerelement (ca. 15 Reiter). Jeder Reiter enthält ein Unterformular. So weit so gut. In dem Hauptformular habe ich ein Listenfeld mit folgendem Code:
Private Sub Liste71_DblClick(Cancel As Integer)
With Me(Amb.Column(3))
.Form!Diagnose = Me!Liste71.Column(0)
.Form!DiagnoseBeschr = Me!Liste71.Column(1)
.Requery
End With
End Sub
Per Doppelklick wird der Inhalt des Listenfeldes in die Felder Form!Diagnose und Form!DiagnoseBeschr übertragen. Das war die Vorgeschichte Mein Problem ist: Jedes UFO in dem jeweiligen Reiter hat diverse zu füllende Felder und ein ID Feld. Ich trage bspw. die ID 1.1 ein und führe ein Doppelklick in der Liste71 durch. Dann trage ich eine ID 3.1 ein und führe einen Doppelklick durch. Jetzt trage ich eine ID 2.1 NACH und führe einen Doppelklick durch --> dann springt das UFO auf den letzten Datensatz 3.1 um. Wie kann ich es vermeiden? Das ist lästig wenn man noch andere Eintragungen vornehmen muss. Ich hoffe ich konnte es erklären.
ich habe wieder ein Problem. Ich habe ein Formular mit einem
Registersteuerelement (ca. 15 Reiter). Jeder Reiter enthält
ein Unterformular. So weit so gut.
nö nicht so gut! bitte ausfüllen:
das Hauptformular hat den Namen:________________
das Registersteuerelement hat den Namen:________________
das Ufo Nr. ___ den Namen:________________
ggf. für weiter UFOs kopieren…
In dem Hauptformular habe
ich ein Listenfeld (Liste71) mit folgendem Code:
Private Sub Liste71_DblClick(Cancel As Integer)
With Me(Amb.Column(3))
.Form!Diagnose = Me!Liste71.Column(0)
.Form!DiagnoseBeschr = Me!Liste71.Column(1)
.Requery
End With
End Sub
Vorschlag das ganze kürzer zu machen:
Keine Ahnung was Amb ist!?
Private Sub Liste71_DblClick(Cancel As Integer)
me.Form!Diagnose = Me.Liste71.Column(0)
me.Form!DiagnoseBeschr = Me.Liste71.Column(1)
End Sub
Mein Problem ist: Jedes UFO in dem jeweiligen
Reiter hat diverse zu füllende Felder und ein ID Feld.
ID-Felder sollten IMMER automatisch gefüllt werden. Das erreicht man durch z.B. die Definition des Feldtypes als Autowert.
Ich trage bspw. die ID 1.1 ein
wo? warum? was? Eine ID besteht idR. aus einem einzigen mathematischen Wert und nicht mit Dezimalwerten!
und führe ein Doppelklick in der Liste71 durch.
warum?
Dann trage ich eine ID 3.1 ein
wo? warum? was?
und führe einen Doppelklick durch.
wo? warum?
Jetzt trage ich eine ID 2.1 NACH
wo? warum? was?
und führe einen Doppelklick durch
wo? warum?
–> dann springt das UFO auf den
welches der 15 UFOs?
letzten Datensatz 3.1 um.
?? WAS ist der Datensatz 3.1?
Wie kann ich es vermeiden?
konsistentes Datenmanagement
Das ist lästig wenn man noch andere Eintragungen vornehmen muss. Ich
hoffe ich konnte es erklären.
sorry, du hast meine Fragen gelesen. Anhand deiner Beschreibung habe ich leider nichts verstanden
vielleicht versuchst du einfach noch mal dein Problem etwas ausführlicher zu beschreiben?
neben dem, was Netwolf gesagt hat, wird durch .Requery das Form halt neu geladen und die DS entspr. sortiert.
Lt. Code haben alle UFOs dieselben (beiden) Textfelder und greifen vermutlich auf diesselbe(n) Tabelle(n) zu. Das wird Sperr-/Speicherprobleme aufwerfen und deutet auf die genannte Daten-Inkonsistenz (nicht normalisierter Tabellenaufbau) hin.
Private Sub Liste71_DblClick(Cancel As Integer)
me.Form!Diagnose = Me.Liste71.Column(0)
me.Form!DiagnoseBeschr = Me.Liste71.Column(1)
End Sub
dann bekomme ich beim Klick eine Meldung, dass das Feld „Diagnoe“ nicht gefunden werden konnte.
zu3)
Mit ist bewusst, dass es einen AutoWert gibt, doch es war in dem vorliegenden Fall leider nicht möglich. Die ID muss mind. zweistellig (1.1) und maximal siebenstellig (1111.111) sein. Wenn der Besucher das erste Mal kommt, dann bekommt er stets eine „.1“ nach der fortlaufenden Nummer. Es kann auch passieren, dass der Besucher zum zweiten Mal kommt. Wenn dies der Fall ist, dass muss er die gleiche Nummer bekommen aber mit der „.2“ und beim dritten Besuch mit einer „.3“ am Ende usw.
Wenn der Anwender bspw. bereits eine 5.1 eingetragen hat und der Besucher mit der Nummer 3.1 noch ein Mal kommt, dann trägt der Anwender eine 3.2 in das ID Feld ein. Wenn dies der Fall ist und folgende Aktion ausgeführt wird:
Private Sub Liste71_DblClick(Cancel As Integer)
With Me(Amb.Column(3))
.Form!Diagnose = Me!Liste71.Column(0)
.Form!DiagnoseBeschr = Me!Liste71.Column(1)
.Requery
End With
End Sub
… dann springt das jeweilige UFO nach dem Doppelklick auf den letzten Datensatz. Wenn der Anwender dann noch weitere Eintragungen vornehmen muss, dann muss er händisch zu der ID 3.2 scrollen und dann die Änderungen vorzunehmen. Lästig! Daher meine Frage wie man es unterbinden kann.
zu4)
Per Doppelklick im Listenfeld des Hauptformulares wird dessen Inhalt in die zewei textfelder des jeweiligen UFOs eingetragen.
eigentlich supi Ansatz. Requery ist schon sinnvol, da i ch sonst nicht sehe wasn und ob ich in das UFO was einfüge. Wie kann ich denn den DS den ich zuletzt bearbeitet habe ansteuern?
ich habe bei Donkarl einen FAQ 4.5 gefunden, der gleiches Problem beschreibt. Nun stehe ich vor dem Problem meinen Code anzupassen. Ich bräuchte etwas Hilfe. Mein Code:
Private Sub Liste71_DblClick(Cancel As Integer)
On Error GoTo myError
Dim lngStore As Long
With Me(Amb.Column(3))
.Form!Diagnose = Me!Liste71.Column(0)
.Form!DiagnoseBeschr = Me!Liste71.Column(1)
.Requery
End With
myError:
Select Case Err.Number
Case 3159
'not a valid bookmark
Resume myExit
Case Else
MsgBox "Exception Nr. " & Err.Number & " " & Err.Description
Resume myExit
End Select
End Sub
Ich bekomme einen Fehler 7951 --> unzulässiger Verweis auf RecordsetClone-Eigenschaft.
ich muss Me(Amb.Column(3)).Form benutzen, da es soc gedacht ist, dass der UFO Name flexibel gehandhabt wird. Das heisst je nach dem was im Column (3) drin steht --> um diese Form handelt es sich dann.
myError:
Select Case Err.Number
Case 3159
'not a valid bookmark
Resume myExit
Case Else
MsgBox "Exception Nr. " & Err.Number & " " & Err.Description
Resume myExit
End Select
End Sub
das Problem und steh aufm Schlauch. Ich versteh momentan nicht worauf das „sag ich doch !?“ sich bezieht.
myExit:
Me(Amb.Column(3)).Form.Painting = True
Exit Sub
myError:
Select Case Err.Number
Case 3159
'not a valid bookmark
Resume myExit
Case Else
MsgBox "Exception Nr. " & Err.Number & " " & Err.Description
Resume myExit
End Select
End Sub
und bekomme folgende Meldung Nr 3464: Data type mismatch in criteria expression.
das Registersteuerelement hat den Namen: RegisterStr15
Reiterindex: 0 enthält UFO: IM-CIO
ich beschreibe mal, wie man es normaler Weise macht:
Das Hauptformular basiert auf einer Tabelle/Abfrage.
Die UFOs basieren jeweils auf eigenen Tabellen/Abfragen.
Der jeder Kunde bekommt eine eigene ID (Autowert)
Nun hat man noch eine „Bewegungs“ - Tabelle in der ich die Besuche speichere. D.h. aus deiner ID mit dem Wert 1.1 / 1.2 ergibt sich folgende Lösung:
ich habe es jetzt so gelöst. Ich habe die Requery Funktion aus dem Hauptformular entfernt und folgenden Code in die jeweiligen UFOs integriert:
Private Sub Form_AfterUpdate()
Dim rst As DAO.Recordset
With Me
Set rst = .RecordsetClone
rst.FindFirst „ID = '“ & Me!ID & „’“
.Bookmark = rst.Bookmark
'mögliche Alternative zur Bookmark-Variante:
'.Recordset.FindFirst "Id = " & lngID
End With
End Sub