20. februar 2002 - 10:27Der er
41 kommentarer og 2 løsninger
Standse udførelse af kode til formular lukkes - hvordan
Jeg har et meget alvorligt problem i Access. Jeg beskriver :
Fra noget kode åbner jeg en formuar i acDialogmode - det gør at udførelse af koden stopper indtil formularen lukkes igen. Dette er fordi at jeg skal bruge nogle data, som enten oprettes eller findes frem via den åbnede formular. Problemet er bare at når formularen åbnes på denne måde, så virker DoCmd.RunCommand acCmdFind ikke. Det kan jeg få det til at gøre hvis jeg åbner formularen acNormal men så stopper udførelsen af min kode ikke.
What I want to do is that from a form where I have a combobox to select some drivernames, I want to be able to open the driver form and add/search drivers and then when the for is closed to be asked if I want to use this data.
Was just testing if it could have something to do with the fact that the code it called from a shortcut menu ( I use that a lot ) but even if the code is put on a button on my pay slip form the result is the same.
Not quite sure I understand! In one form you have a combo containing drivers. Do you want to be able to ADD a driver to this IF it doesnt exist? So you opne the driver form and add/search and thencome back to the first form? Why do you need to search in this form?
I want the user to be able to open the driver form and add a new driver if needed, but I also want the user to be able to search the available drivers.
I use the same function on my invoice form to find/add customers.
Well a VERY simple, and easy way is to place a combo box on the from using th wizard. Here you can choose to Find A Record on your form. This will add a combo and the code to find a specific record from your selection in the combo box. You could then change the combo to a text field if you want and then alter the code accordingly!
Følgende kode checker om en formular er lukket. Derved kan du åbne den normalt som Modal og popup og benytte accmdFind m.m.:
Do While CurrentProject.AllForms("DinFormular").IsLoaded 'Vent til dialogbox er lukket If Forms!DinFormular.Visible = True Then DoEvents 'Frigør processortid til dialogbox Else Exit Do End If Loop
Hi Thomas! I concidered the same solution, but didnt think it was such a good idea. Do you have an explanation as to why code keeps executing when you the form is opened modal?
Terry (og Hugo)-> når mit eksempel benyttes skal man IKKE bruge acDialogmode-parameteren til at åbne formularen. Man skal blot åbne den normalt. Når jeg skriver at man skal åbne den modalt og som popup, så mener jeg at egenskaberne Modal og Popup på formen kan sættes til True.
Thomas - når jeg gør som følgende, så åbnes formen conDriverForm godt nok og jeg kan også godt trykke på min søgeknap og få søgebilledet frem, men så springer kæden af. Jeg kan ikke vælge noget i comboboxene eller trykke på knapperne. Jeg har sat Modal og Popup til True.
DoCmd.OpenForm conDriverForm, , , , , , "Slip" Do While CurrentProject.AllForms(conDriverForm).IsLoaded If Forms(conDriverForm).Visible = True Then DoEvents Else Exit Do End If Loop
Terry> that would have been nice, but as it is a commercial application that I am making a bit of money developing for some cab companies, I hope you understand why I hesitate.
I have decided to try and create some sort of search routine. I have one I use in a SQL server / Access application that I might give a go at converting a bit.
Hugo-> Hmm, det lyder underligt, at du ikke kan benytte kombobokse eller knapper på formularen - jeg bruger selv metoden til at lave min egen inputbox (derved kan jeg netop bruge kombobokse og andre smarte opslagsmuligheder, som man ikke har i en inputboks). Derfor er det min fulde overbevisning at du må have sat nogle egenskaber forkert på formularen - har du kontrolleret at du f.eks. ikke har sat AllowEdit til false??
Thomas -> Det er på Access' searchformular at jeg ikke kan få lov til at bruge comboboxe - ikke på min egen formular. Når jeg trykker på min search knap, kommer Access fint med sit søgevindue, men her kan jeg kun taste i søgelinien. Jeg kan hverken vælge søgemåde eller trykke på Search knappen.
Thomas -> jeg kommer til at kigge nærmere på dine svar og bliver lige pludselig i tvivl om vi måske snakker lidt forbi hinanden. Lidt mere specifikt så er det jeg gør : Jeg har en formular åben hvor jeg kan taste løndata ind - kald den lønform På denne formular har jeg en comboboks hvor jeg kan vælge en chauffør. Her vil jeg så gerne have mulighed for at åbne min formular til vedligehold af chauffør data - kald den chaufførform Fra chaufførform vil jeg så have mulighed for at søge efter en bestemt chauffør, som skal føres tilbage til lønform når chaufførform lukkes.
Jeg kan godt se, at søgboksen bliver lidt 'uduelig', når man bruger den på denne måde - det har jeg faktisk ikke haft prøvet før (jeg bruger aldrig søgboks, da den er for langsom på større datamængder - istedet bruger jeg filter).
Men jeg ville så bare flytte noget af koden til din chaufførform. Nemlig den kode, som lægger chaufføren tilbage på lønformen.
Dvs at du på din [Vælg]-knap på Chaufførformen skriver: Forms!Lønform!ChaufførID = Me!ChaufførID docmd.Close acform, me.name
Hvis du bruger Chaufførformen andre steder, skal du selvfølgelig sikre dig, at denne kode kun udføres i denne situation.
/Thomas
PS: du behøver ikke at afvise svarene hver gang - det giver sig selv, når du tildelere point til sidst. Derved behøver folk ikke at skulle klikke "Svar" hver gang og det virker heller ikke så uhøfligt :o)
Jeg har hermed droppet ideen om at bruge den indbyggede søgefunktion! Jeg kunne selvfølgelig godt lave noget med et filter på formularen, men det er jeg bange for at den / de 'kontormus' der skal bruge min applikation går vildt i. Og så ved jeg godt hvad der sker med min telefon :-)
Jeg har i stedet gjort det at jeg har lavet en ekstra query på tabellen med de tekstfelter jeg ønsker at der skal kunne søges i og har så lavet en lille funktion der looper alle records + felter og returnerer et nummer på den første record der indeholder teksten. Dette tal bruger jeg så til at jumpe til en record på formularen. Jeg ved godt det ikke er en optimal løsning rent teknisk, men menneskeligt er det nemt at forklare folk at hvis de taster noget i et felt og trykker enter, så får de vist den første record hvor det indgår ( eller besked på at det ikke findes)
Personaly I like it too but if there is a lot of records and fields to be searched, then ..................
I use the same way in some SQL Server / Access applications and that is no problem.
The issue in this method is to remember that the sorting of both recordsources has to be the same. I use two recordsourcen to be able to control the number of fields the search is done on.
hugopedersen> If you use the SAME code as the cobobox wizard generates the you dont need another query!
Place a combo on the form using the wizard and get it to find a record on your form based on the value selected. Then change the combo to a text field and then MODIFY the code to use the value you enter in the text box (see my comment 20/02-2002 12:30:43)
Was just away for a minut checking my backup ( can't figure out why backup is done at 1300 MB/min and verify only at 1050 MB/min :-) )
I have tried that, but for some reason the wizard isn't working neither here at work or at home ( gets a weird errormessage ) and on my other computer here at work I run Office XP and the search option of the combobox doesn't exist on that.
I think the problem is that th ewizard creates code for DAO and if your using ADO then it doesnt work! IF you are NOT using ADO then remove it from your references and choose DAO.
I actually found that sometimes the option for Finding a record on your form isnt even there, but I never did fathom out why!
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.