Avatar billede tville Juniormester
18. maj 2001 - 14:55 Der er 10 kommentarer og
1 løsning

Opdatering af poster i en formular

I et listefelt i en formular skal jeg indtaste leverandørnavn. Hvis leverandøren ikke findes i forvejen åbnes en anden formular som pop-up og her indtaster jeg så oplysningerne om den nye leverandør. Når jeg så returnerer til det oprindelige billede står det nye navn stadig i feltet, men det accepteres ikke fordi det ikke er på listen. Jeg bliver derfor nødt til at slette det jeg har skevet i feltet, opdatere formularen hvorefter den nye leverandør er med på listen. Hvordan kan jeg få det opdateret automatisk, så jeg ikke skal slette og skrive leverandørnavnet igen?
Avatar billede kaffe Nybegynder
18. maj 2001 - 15:03 #1
I din forms GotFocus event skriver du

  docmd.requery \"NavnPåFelt\"
Avatar billede tville Juniormester
21. maj 2001 - 09:08 #2
Det virker næsten. Det ser ud til at mit problem er, at den pop-up formular jeg får frem kommer på baggrund af en makro der aktiveres ved hændelsen \"Ikke på liste\" i feltet. Denne hændelse udføres før hændelsen \"GotFocus\". Kan du hjælpe med det?
Avatar billede terry Ekspert
22. maj 2001 - 15:08 #3
Hi tville!
As you can see from the following example, it simportant that response gets set correctly.
In thhe example I check to make sure that I actually added the record.

Private Sub Your_NotInList(NewData As String, response As Integer)
    Dim strMsg As String
   
    strMsg = \"The item isn\'t in the list. \" & vbCrLf
    strMsg = strMsg + \"Do you want to add it?\" & vbCrLf
           
    response = msgBox(strMsg, vbYesNo + vbQuestion, \"Not in list ...\")
   
    If response = vbYes Then
        DoCmd.OpenForm _
        FormName:=\"YourAddForm\", _
        DataMode:=acFormAdd, _
        WindowMode:=acDialog, _
        OpenArgs:=NewData
       

        If IsNull(DLookup(\"Leverandørnavn\", \"Tableleverandør\", \"Leverandørnavn=\'\" & NewData & \"\'\")) Then
            response = acDataErrContinue
        Else
            response = acDataErrAdded
        End If
        Exit Sub
    End If
    response = acDataErrContinue

End Sub
Avatar billede terry Ekspert
22. maj 2001 - 15:11 #4
If response = acDataErrAdded then Access refreshes the combo so no need to docmd.requery in the gotfocus event.

Avatar billede tville Juniormester
30. maj 2001 - 09:48 #5
Det virker ikke helt endnu. Jeg får en fejl i dlookup der siger:
Run-time error \'2471\':
Udtrykket, du har indtastet som en forespørgslesparameter, gav fejlen Obejektet indeholder ikke automation-objektet \"(det navn jeg har indtastet i levnavn\")

Koden:
Private Sub lev_id_NotInList(NewData As String, Response As Integer)
    Dim strmsg As String
       
    strmsg = \"Leverandøren er ikke på listen. \" & vbCrLf
    strmsg = strmsg + \"Ønsker du at oprette leverandøren?\" & vbCrLf
   
    Response = MsgBox(strmsg, vbYesNo + vbQuestion, \"Ikke på listen\")
       
    If Response = vbYes Then
        DoCmd.OpenForm \"leverandør_popup\", acNormal, , , acFormAdd, acDialog, NewData
        If IsNull(DLookup(\"levnavn\", \"leverandør\", \"levnavn = \" & NewData)) Then Response = acDataErrContinue
        Else
            Response = acDataErrAdded
        End If
    Exit Sub
    Response = acDataErrContinue
    End Sub
Avatar billede terry Ekspert
30. maj 2001 - 10:14 #6
tville, I think you may have to alter your Dlookup
to If IsNull(DLookup(\"levnavn\", \"leverandør\", \"levnavn = \'\" & NewData & \"\'\"))
and you must ensure that levnavn is a field in the table leverandør..

Otherwise you cansend me your dB and I will take a look

dktebrsa@europe.lego.com

Avatar billede terry Ekspert
30. maj 2001 - 10:15 #7
levnavn is a string so must be enclosed in \' \'
Avatar billede tville Juniormester
30. maj 2001 - 10:32 #8
Det hjalp. Der er dog stadig et lille problem.

Jeg indtaster et navn i feltet \"levnavn\"
Hvis det ikke findes får jeg en meddelelsesboks hvor jeg kan vælge ja eller nej til at oprette leverandøren. Svarer jeg ja, kommer formularen frem hvor jeg kan oprettet leverandøren.
Når jeg lukker denne formular, returnerer jeg til feltet levnavn. Det navn jeg indtastede står stadig i feltet, men når jeg vil til næste felt får jeg igen meddelelsesboksen hvor jeg kan vælge ja eller nej til at oprette leverandøren. D.v.s. at leverandøren endnu ikke er på listen. Svarer jeg nej kan jeg gå videre og går jeg så tilbage til feltet levnavn kan jeg nu se at det nye navn er på listen. (Håber du forstår ovenstående.)
Avatar billede terry Ekspert
30. maj 2001 - 11:00 #9
yes I think I understand you, but I am not sure as to why your getting the problem!

If you add the new leverandør then Response = acDataErrAdded. This should update the combo automatically, which seems to be getting done but a little too late. Are you sure that your Dlookup doesnt retun Null which sets Response to acDataErrContinue?

Avatar billede tville Juniormester
30. maj 2001 - 11:14 #10
Nej - hvordan kontrollerer jeg det?
Avatar billede terry Ekspert
30. maj 2001 - 11:22 #11
In the lev_id_NotInList event you can set a breakpoint along side the If IsNull(DLookup... line. Then run the pragram until you meet this breakpoint. Pressing F8 will step one line of code at a time.
If you have probelms with this teh I can still take a look for you!
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