19. august 2001 - 12:17Der er
6 kommentarer og 1 løsning
Kontrolelementer vises ikke på formular
Jeg har en database over abonnenter, hvor man fra en hovedmenu bl.a. har mulighed for at vælge en abonnent fra en liste (AbonnentSearchAbonnent) og trykke på en knap for at slette denne. Det er så meningen, at der skal komme en ny formular (Abonnent) frem med abonnentens navn, hvor man så har mulighed for at bekræfte sit valg eller annullere. Til knappen er knyttet følgende kode...
Dim strNewRecord As String strNewRecord = \"SELECT * FROM Abonnent \" _ & \" WHERE Abonnent = \'\" _ & AbonnentSearchAbonnent.Value & \"\'\" Form_Abonnent.RecordSource = strNewRecord
Form_Abonnent.Visible = True
Problemet er, at når formularen kommer frem er den tom - dvs. at der ikke er nogen kontrolelementer af nogen art! Tilfældigvis har jeg fundet ud af, at hvis jeg højreklikker inden for formularen og vælger \"fjern filter/sortering\", kommer samtlige kontrolelementer frem!
Hvorfor???? Og hvad skal jeg gøre for at få det til at virke uden sådan et mærkeligt krumspring?
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Hvis du mener, at jeg skal udskifte linien, strNewRecord, i min kode oven for med
strNewRecord = \"SELECT * FROM Abonnent WHERE Abonnent =\" strNewRecord = strNewRecord & \"\'\" & AbonnentSearchAbonnent.Value & \"\'\"
så giver det nøjagtig samme resultat. Problemet er stadig det samme - kontrolelementerne er der ikke! Men de kommer frem hvis jeg højreklikker og vælger \"fjern filter/sortering\"...
Det har jeg prøvet, men det virker ikke... Det underlige er, at jeg ikke tror, at det har noget med et filter at gøre, da jeg ikke har lavet noget filter. Men jeg har en mistanke om, at der er en event ved \"fjern filter/sortering\", som opdaterer skærmen. Desværre virker følgende heller ikke:
Det er en lidt \'sjov\' måde, du åbner din \"Abonnent\"-formular på. I stedet for at ændre formularens Recordsource, så kan du jo bare åbne den med en Where-klausul: Docmd.Openform \"Abonnent\",,,\"Abonnent = \'\" & Me!AbonnentSearchAbonnent & \"\'\"
Du har sikkert en grund til at gøre det på din egen måde - jeg kan f.eks. ikke se at du rent faktisk åbner formularen, så måske ligger du bare og ændre formularens .visible-egenskab? Derved vil mit forslag ikke virke. Hvad er grunden til dette?
Om alle omstændigheder vil det nok være en god idé at udskrive strNewRecord i debug-vindue eller i msgbox.
Den lidt \"sjove\" måde, jeg har forsøgt at åbne vinduet på, skyldes at jeg først for nyligt, er begyndt at arbejde med Access\' GUI... Da jeg fra starten sikrede mig via en msgbox, at jeg havde fat i de rigtige data, tænkte jeg, at problemet var andetsteds...
Din metode virker, men kan du ikke lige fortælle mig, hvad forskellen er i, at man blot piller ved formularens .visible egenskab?
Når du bare sætter .Visible=False forbliver formularen loaded i hukommelsen i modsætning til at benytte docmd.Close. Dette kan være en fordel, hvis man har en meget stor og \'tung\' formular, som tager lang tid at indlæse. Omvendt bliver kode, som ligger i formularens OnOpen- og OnLoad-hændelser ikke aktiveret, når du benytter .visible = true istedet for docmd.Openform.
hvis du ønskede at bibehold din metode, kunne du formentlig har skrevet: Form_Abonnent.Filter = strNewRecord Form_Abonnent.FilterOn = True
Derved ville der ske det samme, som når du bneytter docmd.openform med Where-klausulen.
/Thomas
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.