 |
Access 7.0: Kombinationsfelder automatisch ergΣnzen
Kombinationsfelder haben den Vorteil, da▀ man oft ben÷tigte EintrΣge nicht jedesmal neu eingeben mu▀, sondern bequem aus einer Liste auswΣhlen kann. Oft ist es jedoch erforderlich, diese Liste zu erweitern. Dies lΣ▀t sich mit einer Ereignisprozedur erledigen. Um den Tip nachzuvollziehen, ben÷tigen Sie eine Tabelle »Kategorie«, die nur das Feld »Name_Kategorie« enthΣlt. Ein PrimΣrschlⁿssel ist nicht erforderlich. Die aus dieser Liste ⁿbernommenen Werte werden in der dem Formular zugrundeliegenden Tabelle im Feld »Kategorie« abgelegt. Anschlie▀end erstellen Sie im gewⁿnschten Formular ein Kombinationsfeld, das seine Werte aus der Tabelle »Kategorie« bezieht; dabei hilft Ihnen der Steuerelement-Assistent. Mit einem rechten Klick auf das neue Feld gelangen Sie zu dessen »Eigenschaften«. Legen Sie unter »Daten« fest, da▀ »Nur ListeneintrΣge« auf »Ja« steht. Im Register »Ereignis« wΣhlen Sie »Ereignisprozedur« und weisen ihr die abgedruckte Prozedur zu. Wenn Sie jetzt einen neuen Wert in das Kombinationsfeld eintragen, erscheint eine Dialogbox, die nachfragt, ob die Kategorie hinzugefⁿgt werden soll. Mit »Ja« ⁿbernimmt die Prozedur den Eintrag in die Liste der Kategorien. In einigen Punkten mⁿssen Sie das Listing Ihren Formular- und Feldnamen anpassen. In der Zeile »Set ct = Forms!Eingabemaske!Kategorie« wird etwa davon ausgegangen, da▀ der Name des Formulars »Eingabemaske« und der des Feldes »Kategorie« lautet. Ereignisprozedur fⁿr Kombinationsfelder: Private Sub Kategorie_NotInList(neuer_wert As String, intResponse As Integer) Dim x As Integer, db As DATABASE, rs As Recordset, ct As Control 'Frage, ob eine neue Kategorie erstellt werden soll x = MsgBox("Soll eine neue Kategorie hinzugefⁿgt --> werden?", 36, "Kategorie nicht in Liste") If x = 6 Then 'Wenn JA... Set db = CurrentDb() Set rs = db.OpenRecordset("Kategorie", dbOpenTable) Set ct = Forms!Eingabemaske!Kategorie 'das Listenfeld rs.AddNew rs!Name_Kategorie = neuer_wert rs.UPDATE rs.Close DoCmd.DoMenuItem acFormBar, acEdit, acUndo intResponse = acDataErrAdded Else 'Wenn NEIN... DoCmd.DoMenuItem acFormBar, acEdit, acUndo intResponse = acDataErrContinue End If End Sub ["-->" bedeutet, da▀ diese Befehlszeile hier nicht endet, sondern in der nΣchsten Druckzeile fortgesetzt wird.]
|
 |