2017-01-10 1 views
0

Ich habe eine Access-Datenbank, die ein Patientenaufnahmeformular mit einer Listbox enthält, die alle Prozeduren auflistet, die der Patient hatte. Die Listbox enthält ProcedureID, ProcedureDate und ProcedureTitle. Die Listbox ist an 1 oder procedureID gebunden.Doppelklick auf MS Access ListBox öffnet das Formular für einen bestimmten Datensatz, kann aber nicht bearbeiten

Ich habe ein Doppelklickereignis für das Listenfeld, das das Prozedurformular öffnet. Das Formular enthält Registerkarten-Unterformulare mit verschiedenen Datensätzen, die sich auf die Prozedur beziehen.

Das Formular wird für den richtigen Datensatz geöffnet und zeigt die zugehörigen Daten in den Formularen und Unterformularen an. Das Problem ist, wenn ich versuche, um die Daten zu bearbeiten, die auf der Prozedur Form ich die folgende Fehlermeldung erhalten ..

you can't assign a value to this object 

Die Fehlerpunkte auf den auf schmutziges Ereignisse auf meinem Verfahren Form. Dies ist nur ein Problem, wenn ich versuche, die Daten im übergeordneten Formular zu bearbeiten, die Unterformulare funktionieren gut und alle Änderungen werden akzeptiert.

Ich habe diesen Code in das Doppelklickereignis in der Liste-Box

Private Sub lst_Procedure_DblClick(Cancel As Integer) 

    'double click to open procedure form to the selected record 

    Dim ProcID As Long 

    ProcID = Me!lst_Procedure 

    DoCmd.Close acForm, "frm_Admission" 
    DoCmd.OpenForm "frm_Procedure", , , "[ProcedureID] = " & ProcID 

End Sub 

und diesen Code auf der Prozedur Form auf den richtigen Datensatz zu öffnen

Private Sub Form_Dirty(Cancel As Integer) 

    'open Procedure form to record selected in procedure list 
    Me.ProcedureID = Me.OpenArgs 

End Sub 

Irgendwelche Vorschläge stark sein würde, geschätzt. Ich habe versucht, die Openargs in onLoad anstatt onDirty zu erhalten, aber ohne Erfolg.

Antwort

0
DoCmd.OpenForm "frm_Procedure", , , "[ProcedureID] = " & ProcID 

öffnet das Formular mit einem vorhandenen Datensatz. Sie verwenden den Parameter WhereCondition von OpenForm. https://msdn.microsoft.com/en-us/library/office/ff820845.aspx

Es ist also nicht notwendig, Me.ProcedureID in der geöffneten Form zu setzen. Entfernen Sie einfach die Dirty Ereignisprozedur.

Ich denke, dass ProcedureID der Primärschlüssel und eine AutoNummer ist?
AutoNumber-Werte können nicht geändert werden.

Verwandte Themen