01. oktober 2002 - 21:32Der er
14 kommentarer og 1 løsning
Ved ikke på liste i en combobox
Hej eksperter Jeg ved at nedenstående senarie før har været rejst i dette forum, jeg har søgt og fundet flere ting, men det virker ikke for mig, så mit spørgsmål er:
Jeg har en tabel "tbl_genre", i denne tabel er der to felter "GenreID" som er primær nøgle med datatypen autonumering, samt "Genre" som er af datatypen tekst. Så har jeg en en tabel til "tbl_data" her er der oprettet et felt, hvor jeg har lavet et opslag som slår op i tabellen "tbl_genre". Relationen er af typen en til mange, hvor primærnøglen fra "tbl_genre" er skjult. alt dette virker uden problemer.
Så har jeg lavet en form som har "tbl_data" som postkilde, i denne form oprettes der nye poster. Her kan brugeren så vælge en genre fra listen.
Hvis nu brugeren taster en genre som ikke findes på listen vil jeg gerne have at den automatisk bliver tilføjet til "tbl_genre" og comboen i formen skal så opdatere således at den nye indtastede genre nu kan vælges fremover. Det skulle gerne virke uden at brugeren for en massse popup om dit og dat. Jeg ved at det er noget med at gå ind på comboen og skrive en eller anden kode under hændelsen "ved ikke på liste". Jeg arbejder pt. i access 2000. Er der nogen der kan hjælpe?
Hvis du dætter egenskaben "BegrænsTilListe" til Nej, vil de nye data blive oprettet i tabellen uden popup, og formularens kombinationsboks opdateres.
Det er dog lidt farligt at gøre, idet der ikke tages højde for stavefejl. Hvis du f.eks. indtaster "kal" i stedet for "kalv", vil du ikke opdage det, og dine data bliver dermed ikke korrekte.
Jeg er nu heller ikke ung længere :( Det 'sjove' var at jeg havde fundet det samme link som dig, og inden jeg ville sende det her - opdaterede jeg browseren - og vupti, du var først.
Private Sub Postnr_NotInList(NewData As String, Response As Integer) Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim NyGenre As String If MsgBox("Genren findes ikke i forvejen!" & vbNewLine & "Ønsker du ar oprette den ny genre?", vbQuestion + vbOKCancel, "Opret ny genre?") = vbOK Then Set rs = New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "tbl_Genre", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs!Genre= NewData rs.Update Response = acDataErrAdded rs.Close Set rs = Nothing cn.Close Set cn = Nothing Else Response = acDataErrContinue End If
Private Sub Postnr_NotInList(NewData As String, Response As Integer) Dim cn As ADODB.Connection Dim rs As ADODB.Recordset If MsgBox("Genren findes ikke i forvejen!" & vbNewLine & "Ønsker du ar oprette den ny genre?", vbQuestion + vbOKCancel, "Opret ny genre?") = vbOK Then Set rs = New ADODB.Recordset Set cn = CurrentProject.Connection rs.Open "tbl_Genre", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs!Genre= NewData rs.Update Response = acDataErrAdded rs.Close Set rs = Nothing cn.Close Set cn = Nothing Else Response = acDataErrContinue End If
Hej er nu tilbage, en meget travl formiddag. Jeg har prøvet de forskelige indlæg i praksis, indlægget fra Terry virkede med det samme uden problemer. Indlægget fra Thomas kørte også, men her var der lidt med nogle referancer, men elles godt nok. Alle indlægende har være meget lærerige, men jeg har valgt at bruge Terry's løsning, så derfor points til ham. Til alle jer andre tusind tak for indlægende. Terry>>, her er dine points. *SS* Anders.
Jeg har lavet en db, hvor jeg grundlæggende har samme problem som ovenstående. Jeg har tænkt det løst ved hjælp af en sub med tre argumenter, nemlig sub(hvilken tabel, hvilket felt og hvilket datum). Men når jeg på forskellige måder prøver at skrive til tabellen, ender jeg altid ned i autonummeringsfeltet, og ikke det tekstfelt jeg ønsker at skrive i. Jeg har prøvet ovenstående løsningsforslag, men intet af det virker... Hvad gør jeg??
Lav en formular, der åbnes hvis du vælger at tilføje data til tabellen. derefter kan du bruge kommandoen:
Docmd.GoToControl "Feltnavn"
Så vil markøren gå til kontrolelementet med det angivne navn. Du kan også markere kontrolelementerne og i fanen data, markere felterne som aktiverede eller låste. Eller ændre tabulatorrækkefølgen. Det er kun et spørgsmål om temperament.
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.