Avatar billede stpa01ad Nybegynder
21. april 2004 - 15:49 Der er 9 kommentarer og
1 løsning

tilføj to elementer til liste

hej,
jeg vil lave en kombo-boks, hvor man kan tilføje et element hvis det ikke er på listen i forvejen. Min kode ser således ud:

Private Sub Subject_NotInList(NewData As String, Response As Integer)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strMsg As String

strMsg = "'" & NewData & "' is not an available subject name " & vbCrLf & vbCrLf
    strMsg = strMsg & "Do you want to associate the new subject to the current list?"
    strMsg = strMsg & vbCrLf & vbCrLf & "Click Yes to link or No to re-type it."
   
    If MsgBox(strMsg, vbQuestion + vbYesNo, "Add new name?") = vbNo Then
        Response = acDataErrContinue
Else
        Set db = CurrentDb
        Set rs = db.OpenRecordset("Subject", dbOpenDynaset)
        On Error Resume Next
        rs.AddNew
            rs!Subject = NewData
        rs.Update
       
        If Err Then
            MsgBox "An error occurred. Please try again."
            Response = acDataErrContinue
        Else
            Response = acDataErrAdded
       
    End If
       
    End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub

Mit spørgsmål er: Hvad gør jeg, hvis jeg har en kombo-boks der er baseret på en tabel med to felter, og jeg skal tilføje nye elementer? Jeg skal jo have mulighed for at tilføje to elementer på een gang?
Min tabel består af en forkortelse samt det fulde navn. Så når jeg skal tilføje en ny forkortelse, skal jeg også have mulighed for at tilføje en nyt navn, der hører sammen med forkortelsen.

tak
s
Avatar billede mugs Novice
21. april 2004 - 15:52 #1
Dim prompt As String
DoCmd.SetWarnings False
Response = acDataErrContinue
prompt = "Denne type findes ikke i listen, ønsker du at oprette den?"
If MsgBox(prompt, vbYesNo, "Typen findes ikke!") = vbYes Then
DoCmd.RunSQL "INSERT into Register (feltnavn) VALUES ('" & NewData & "')"
Response = acDataErrAdded
End If
DoCmd.SetWarnings True
21. april 2004 - 15:53 #2
Private Sub Subject_NotInList(NewData As String, Response As Integer)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strMsg As String
Dim Felt2 as string

strMsg = "'" & NewData & "' is not an available subject name " & vbCrLf & vbCrLf
    strMsg = strMsg & "Do you want to associate the new subject to the current list?"
    strMsg = strMsg & vbCrLf & vbCrLf & "Click Yes to link or No to re-type it."
   
    If MsgBox(strMsg, vbQuestion + vbYesNo, "Add new name?") = vbNo Then
        Response = acDataErrContinue
Else
        Set db = CurrentDb
        Set rs = db.OpenRecordset("Subject", dbOpenDynaset)
        On Error Resume Next
        Felt2 = inputbox("Angiv værdien for Felt2", "Opret ny post")
        rs.AddNew
            rs!Subject = NewData
            rs!Felt2 = Felt2
        rs.Update
       
        If Err Then
            MsgBox "An error occurred. Please try again."
            Response = acDataErrContinue
        Else
            Response = acDataErrAdded
       
    End If
       
    End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
21. april 2004 - 15:55 #3
Bemærkning: Der skal nok tilføjes noget validering efter Inputbox'en i tilfælde af, at brugeren trykker Annuller.

/Thomas
Avatar billede mugs Novice
21. april 2004 - 15:55 #4
Åh ja - Det er jo en fordel at læse HELE spørgsmålet inden man svarer :o)
21. april 2004 - 15:57 #5
ja, jeg kender det godt, Mugs....når man kommer op i årene, så kan det virke helt uoverkommeligt at skulle læse så mange ord ;o)
Avatar billede mugs Novice
21. april 2004 - 15:58 #6
Og så så hurtigt - Det kan jeg slet ikke klare idag.
21. april 2004 - 15:59 #7
Forbedring:

Private Sub Subject_NotInList(NewData As String, Response As Integer)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strMsg As String
Dim Felt2 as string

strMsg = "'" & NewData & "' is not an available subject name " & vbCrLf & vbCrLf
    strMsg = strMsg & "Do you want to associate the new subject to the current list?"
    strMsg = strMsg & vbCrLf & vbCrLf & "Click Yes to link or No to re-type it."
   
    If MsgBox(strMsg, vbQuestion + vbYesNo, "Add new name?") = vbNo Then
        Response = acDataErrContinue
Else
        Felt2 = inputbox("Angiv værdien for Felt2", "Opret ny post")
        If len(Felt2) = 0 then
            msgbox "Oprettelsen af posten afbrydes!", vbexclamation
            exit sub
        endif
        Set db = CurrentDb
        Set rs = db.OpenRecordset("Subject", dbOpenDynaset)
        On Error Resume Next
        rs.AddNew
            rs!Subject = NewData
            rs!Felt2 = Felt2
        rs.Update
       
        If Err Then
            MsgBox "An error occurred. Please try again."
            Response = acDataErrContinue
        Else
            Response = acDataErrAdded
       
    End If
       
    End If
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
21. april 2004 - 15:59 #8
og så er det sikkert en god ide, at oversætte mine tekster til engelsk :o)
Avatar billede stpa01ad Nybegynder
21. april 2004 - 17:41 #9
tak for det hurtige svar.
21. april 2004 - 20:01 #10
selv tak :o)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester