18. maj 2001 - 14:55Der 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?
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.
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?
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
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
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
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.)
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?
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!
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.