25. april 2001 - 21:47Der er
58 kommentarer og 1 løsning
Få vist data i labels ved valg i komboboks
Hvordan får jeg vist data på personale i labels ved at vælge et emne fra en kombobok?
Når man vælger en bestemt person fra komboboksen, skal den ansattes navn vises i en label, den sammes lokalnummer i en anden label etc. Alle personens data skal vises i labels, vælger man den næste person, skal dennes data vises i de samme labels.
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
PS: De data behøver ikke nødvendigvis blive vist i labels. Har du en smartere metode til at få vist data på en ansat ved klik i komboboks, hilses dette også velkomment
I komboboksens \"rækkekilde\" laver du en forespørgsel, som indeholde de kolonner, som du skal bruge.
Egenskaben \"Antal kolonner\" sættes til det respektive I egenskaben \"Kolonnebredder\" angiver du hvor brede hvert felt skal være, når komboboksen rulled ned. Dvs, hvis nogle af kolonnerne skal være skjult angiver du bredden til nul. Eks: 2;3;0;0;0;0;0 Tallene angiver bredden i cm Egenskaben \"Bundet kolonne er et tal, som angiver hvilket af felterne i \"rækkekilden\", som matcher \"kontrolelementkilden\". Dvs hvis den første kolonne viser Navn og der står Navn i \"kontrolelementkilden\", angiver du \"Bundet kolonne\" til 1 (da det er den første kolonne\"
Alt dette er grundlæggende og det vidste du sikkert i forvejen.
På komboboksens \"Efter opdatering\"-hændelse lægger du følgende kode:
<b>Microsoft Access kan ikke finde makroen \"Me!lblNavn\". Makroen eller makrogruppen findes ikke eller er ny, men er ikke blevet gemt. Bemærk, at når du indtaster syntaksen makrogruppenavn.makronavn i et argument, skal du angive det navn, som makroens makrogruppe sidst blev gemt under.</b>
Som jeg skrev, så skal du selv sørge for at navngive felterne korrekt. Hvis du ikke har en label på skærmen, som hedder LblNavn, skal du oprette det...
I dit eksempel går jeg ud fra at disse linier skal sættes ind i komboboksens \"EfterOpdatering\"? Men her er kun én linie. Skal disse linier semikolon-separeres?
Arh! Når du står i egenskaben \"Efteropdatering\" klikker du på den lille knap med (...) til højre for feltet. Herefter vælger du \"Kodegenerator\" hvorefter du kommer ind i VBA-editoren. Herinde indsætter du de 3 linier (m.m.).
Me referere til den formular, som du befinder dig på. Dette burde altid virke (har i hvert fald aldrig oplevet andet)
Når du står i VBA-editoren, så prøv at gå i menuen Tools->references. I den fremkomne dialogboks har du en række afkrydset elementer. Der burde som standard være disse 4 (hvis du benytter Access 2000): -Visual Basic.... -Microsoft Access 9.0... -OLE Automation -Microsoft ActiveX Data Objects...
Hvis der står \"Missing\" i et af dem, har du en fejl.
Menuen Debug->Compile... kan måske også uddybe fejlen!
Lad mig lige sikre mig: Når du i design på formularen og klikker på din lblNavn, hvad står der så i egenskaben \"Navn\"? lblNavn er ikke blot teksten på etiketten?
okay, så er jeg ved at løbe tør for ideer. Hvis du vil, er du stadig velkommen til at mail\'e databasen til mig. Så vil jeg formentlig kunne se problemet hurtigt.
Jeg har nogle flere udfordringer. Hvis jeg opretter et nyt spørgsmål, vil du så hjælpe? Jeg vil gerne strukturere et smart system, hvori jeg kan se navne og adresser på ansatte, samarbejdspartnere, data på pc\'erne i huset (IP-adresse, installeret RAM etc.). Er det noget du kan/vil hjælpe lidt med?
Hmmm, det lyder som en større opgave...men man kan købe sig til meget for penge :o) Min fritid er lidt for værdifuld til at jeg vil bruge flere timer på det - også selvom jeg er blevet udnævnt til \"din nye bedste ven\" haha :o)
Nej, det var det ikke. Blot en hjælp til at komme igang. Men det er 10-4. Det er blot til en lille hjælp i hverdagen, så jeg undgår at have mine data spredt alt for meget.
MEN ... det er vist rigeligt til at komme videre med. Jeg opretter nok bare nogle menuer, det må række :o)
du kan ikke åbne en ny formular i samme vindue. Vinduet ER formularen, så hvis du åbner en ny formular, får du også et nyt vindue. Du er således nødt til at lukke den gamle formular før eller efter åbningen af den nye formular. Comprende?
Du lukker en formular ved at skrive: Docmd.Close acform, \"Navn på formular\"
Ja, jeg forstår. Men der er et lille problem: Hvordan kender den ene formular navnet på den anden? Åbner jeg ansatte, vil jeg gerne åbne \"data på pc\'ere i huset\". Hvordan skal den nye formular finde ud af, at det er \"Ansatte\", og ikke \"Samarbejdspartnere\"? (Du får flere point)
Jeg har \"Ansatte\" åben Jeg vil gerne åbne \"PC-specifikationer\" Hvordan kan jeg sætte Access til at lukke \"Ansatte\", det kunne lige så godt være \"Samarbejdspartnere\", som jeg havde åben?
Jamen, du placerer jo bare knappen på den formular, som du vil lukke.
Dvs på din \"Ansatte\"-form anbringer du en knap, som åbner \"PC-Specifikationer\" og på \"Samarbejdspartnere\" laver du en knap som åbner ....ja hvad ved jeg?!
Dvs, at du har forskellige knapper til forskellige formularer. eller har jeg misforstået noget?
Ja, jeg har faktisk lavet en sådan knap (exit-skilt). Kan denne proces automatiseres ved et klik i menupunktet? Jeg vælger først \"Ansatte\". Derefter vælger jeg \"PC-specifikationer\", og \"Ansatte\" lukker automatisk, inden \"PC-specifikationer\" bliver åbnet?
Men hvis du vil lave en knap på menulinien eller på værktøjslinien, skal du oprette et nyt modul (eller bruge et eksisterende) og her oprette en ny function - f.eks. kaldet \"ÅbnPCSpec\".
Public Function ÅbnPCSpec() on error resume next docmd.Openform \"PC-Specifikationer\" docmd.Close acform, \"Ansatte\" End Function
Derefter trækker du en ny knap op på værktøjslinien/menulinien. Du skal tage den der hedder Filer->Brugerdefineret. Når den er anbragt det rigtige sted, højreklikker du på den og vælger egenskaber (properties) I egenskaben \"VedHandling\" (OnAction) skriver du: =ÅbnPCSpec()
luk og sluk Herefter skulle det virke...
/Thomas
PS: hvis nogle har lyst til at kommentere brugen af \"On error resume next\", så er jeg villig til at gå ind i en hæftig diskussion om beretigelsen :)
Mjaaaee, jeg åbner \"Ansatte\" fra menuen \"Min menu\" og arbejder i formen. Herefter skal jeg tilføje nogle data fra \"PC\" og vælger den fra menuen. Men samtidig lukkes formen \"Ansatte\" automatisk.
5. Når jeg er færdig med \"PC speficikationer\", kommer jeg i tanke om noget jeg har glemt i \"Ansatte\". I menuen vælger jeg \"Ansatte\" igen og trykker.
6. Nu lukkes \"PC speficikationer\" automatisk, og \"Ansatte\" åbnes.
Ok, vi er enige om at der er 2 formularer at skifte mellem. Hvis du laver 2 forskellige functioner i et modul og derved 2 menupunkter, så skal functionerne se således ud:
Public Function ÅbnPCSpec() on error resume next docmd.Openform \"PC-Specifikationer\" docmd.Close acform, \"Ansatte\" End Function
Public Function ÅbnAnsatte() on error resume next docmd.Openform \"Ansatte\" docmd.Close acform, \"PC-Specifikationer\" End Function
Så laver du bare 2 knapper/menupunkter, som jeg beskrev tidligere, som kalder hver sin function.
Ok, men hvis der er flere formularer at vælge imellem, kan programmet jo ikke vide hvilket der skal lukkes?
Det er en \"event\"-styret handling, der er tale om. Jeg skal, ved valg af en formular, uanset hvilken formular, lukke den åbne og åbne den valgte. Nu begynder jeg på mit mundlort igen, men jeg håber du ved hvad jeg mener.
Har jeg 14 formularer, er det jo ikke til at vide, hvilken jeg vælger næste gang. Jeg har nr. 12 åben, vælger nr. 8 og derefter nr. 14. Den funktion jeg efterlyser, er én, som lukker den åbne formularer, når jeg vælger en ny.
Hvis du laver en generel function som nedenstående, vil den lukke den aktive formular samtidig med at den åbner den formular, som du angiver som parameter
Public Function ÅbnForm(Formnavn as String) on error resume next docmd.Close docmd.Openform Formnavn End Function
Herefter skal du kalde functionen således: =ÅbnForm(\"Ansatte\")
Man kan også lave en løkke, som lukker alle åbne formularer overhovede inden den åbner den valgte. Men det er måske lidt for meget. Docmd.Close lukker altid bare det aktive vindue.
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.