25. september 2001 - 16:31Der er
10 kommentarer og 3 løsninger
Combobox - når navnet ikke er der, skal den pænt spørge om man vil oprette
Hej.
Jeg har en combobox hvori der er nogle navne. Hvis jeg nu skriver FastWrite, og dette navn ikke findes i min combobox (!) - så skal den komme med en formular, hvor jeg kan indskrive navnet. Denne formular kan vi give navnet F-01. Combobox\'en kan vi kalde cbo-01, som henter sine oplysninger fra tabellen T-01
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
he... Ser du - jeg har en formular F-01 - i den kan jeg indskrive alle de navne jeg har lyst til. Når jeg så kigger i min combobox, står der alle de nye navne jeg har skrevet.
MEN! Hvis jeg nu har skrevet et navn i min combo som IKKE findes, så skriver den nu at \"BUU - findes ikke i min liste\" - uden at gøre mere. Der vil jeg have VB\'en til at sende mig over i min navne-formular f01..
Private Sub KmbBoxNglOrd_NotInList(NewData As String, Response As Integer) Response = acDataErrAdded DoCmd.OpenForm \"F-01\", acNormal, , , acAdd, acDialog, Me!Combobox.Text End Sub
Hvor værdien fra combobox\'en overføres til formularen F-01. Denne formular skal så tage hånd om disse data.
Det er selvfølgelig lidt forskellig hvordan databasen er bygget op - og hvordan man vil have det til at virke.
Jeg har løst et tilsvarende problem hvor comboboksen slår op i en tabel og indsætter det valgte i en anden tabel. Fidusen er at sætte relationen mellem tabellerne til IKKE \'gennemtving referentiel integritet\'. Derved tjekker Access ikke om værdien i comboboksen findes i opslagstabellen.
Here is an example. In the combo boxes NOT IN LIST EVENT you add a procedure that looks like this.
Private Sub cboGade_NotInList(NewData As String, Response As Integer) Dim prompt As String
Response = acDataErrContinue
prompt = \"Denne gade findes ikke i listen, ønsker du at oprette den?\" If MsgBox(prompt, vbYesNo, \"Gade findes ikke!\") = vbYes Then
DoCmd.OpenForm \"frmStreetMaintenance\", , , , acFormAdd, acDialog, NewData If DLookup(\"StreetID\", \"tblStreet\", \"StreetName = \'\" & NewData & \"\'\") Then
Response = acDataErrAdded
End If
End If End Sub
Then in the form you use to enter the new data add this to the ON LOAD EVENT.
Private Sub Form_Load() If Not IsNull(Me.OpenArgs) Then Me.StreetName = Me.OpenArgs End Sub
An explanation: In the example the user enters a strret name in the combo. If the name is NOT found then the user is asked if they want to create a new one. If they answer yes then the form for doing this gets opened, where they can create it. NOTE that the entered value gets passed to the form and is displayed in the field named Me.StreetName. When the form is closed I make a dlookup to make sure they actually did add a new record. If they did then I set Response = acDataErrAdded which tells Access to refresh the combo.
Good idea fastwriter:) I am sure I had answerd a similar question but just couldnt find it, so your suggestion may help!
Oh, and thank!
mvh Terry
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.