10. juni 2003 - 12:54Der er
22 kommentarer og 1 løsning
Opdatering af en listboks skal starte en ny funktion uden click
Heysan
Jeg har en form med en lang raekke listboxes. Disse er del af et kaskade-system, men en enkelt af disse listboxe har ALTID en vaerdi som aendrer sig naar man vaelger en vaerdi fra en af de andre listboxes. Denne listbox hedder lstTSN. Som regel er der kun en enkelt vaerdi i lstTSN, og i tilfaelde hvor der er flere vaerdier skal jeg kun bruge den oeverste alligevel. Nu er sagen saa at nar vaerdien i lstTSN opdateres (ved et klik paa en af de 12 andre listboxes) vil jeg gerne koere et query uden at skulle klikke paa lstTSN. Saa jeg lagde koden i AfterUpdate - men det virker ikke foer jeg klikker paa lstTSN. Naar man klikker paa en af de andre listboxes bliver der bygget og destrueret en query i runtime, men jeg ville gerne undgaa at skulle begynde at laesse koden ind i samtlige listboxes.
Koden ser saadan her ud, men er i princippet ikke saa vigtig igen: Private Sub LstTSN_AfterUpdate() Dim qdf As QueryDef Dim strsql As String Dim intCatCount As Integer Dim lngTsn As Long lngTsn = Me.LstTSN.ItemData(0)
If intCatCount >= 1 Then Me.btnDescription.Visible = True Else Me.btnDescription.Visible = False End If
End Sub
Hovedspoergsmaalet er hvordan faar jeg denne kode eksekveret naar jeg klikker paa en anden listbox som opdaterer lstTSN?? Jeg vil helst undgaa at begynde at laegge for mange timer-funktioner ind.
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 ikke. Som sagt bliver den query der giver resultaterne til en listbox destrueret med det samme. lstTSN vaerdien bliver aendret ved hvert klik paa en anden listbox, men After Update virker stadig ikke. Kun naar jeg klikker paa lstTSN.
Changing data in a control by using Visual Basic or a macro containing the SetValue action doesn't trigger these events for the control. However, if you then move to another record or save the record, the form's BeforeUpdate and AfterUpdate events do occur.
Problemet er at jeg ikke skifter record paa noget tidspunkt i denne form, samt at alle disse midlertidige resultater ikke skal gemmes.
Naar man klikker paa en af de 12 andre listsboxes i formen. Som kodeeksemplet viser bygger jeg en specifik query ved klik paa en af de andre listboxs. Denne click event opdaerer baade lstTSN og andre listboxes som ligger lavere i "hierakiet" af listboxes. Humeln er at dette er det eneste sted hvor jeg har brug for en reel opdatering af info uden et click. Resten er en slags kaskade-system som kraever valg fra brugeren.
Me.Kombinationsboks2.RowSourceType = "table/query" Me.Kombinationsboks2.RowSource = "table1" Else Me.Kombinationsboks2.RowSourceType = "table/query" Me.Kombinationsboks2.RowSource = "table2" End If
jeg har prøvet denne kode og det virker fint både i exit og afterupdate hvis du evt kan kopier din database over i en ny database (med kun de nødvendigeste data) så kan jeg kigge på det. eller ved jeg ikke hvad jeg skal sige. jhc-it@mail.dk kan det have noget at gøre med at nogle af listerne er disabled
ok. Jeg ved ikke hvad det er der goer at afterupdate'n ikke vil virke. Jewg sletter normalt rowsourcen igen naar mna klikker paa en af de adnre listboxes. Dette goeres fordi den query som er rowsource bliver slettet - saa det er for at undgaa fejlmeddelelser. Men vaerdien ligger stadig i listboxen, og det er kun vaerdien jeg bruger til at lave dcount paa en anden tabel. Det eneste jeg kan se som problem er hvad jeg fandt i hjaelp, at opdaterede felter via VBA ikke trigger Afterupdate og on_Exit naar man bruger setValue. Selvom jeg ikke bruger SetValue er det maaske samme problem alligevel.... Jeg proever lige selv at lave et mindre eksempel hvor jeg bruger dit kodeforslag, og ser om det virker.
ja men der er jo derfor jeg ligger koden i AfterUpdate! Men jeg har proevet at laegge koden i AfterUpdate paa en af de andre listboxes som man klikker paa, og det virker fint. Saa det lader til at jeg bliver noedt til at laegge koden ind under hver listbox's on_Exit eller AfterUpdate fremfor bare paa lstTSN.
nih -> Jeg har bare brugt itemdata(0) istedet, men det var ikke der problemet laa. Jeg ville have en enkelt central kode der kunne haandtere opdateret indhold i lstTSN naar man klikkede paa en af 12 listboxe. Loesningen blev at lave et centralt modul, som kaldes i hver af de 12 listboxes afterupdate (kunne ogsaa placeret i on_exit istedet).
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.