Avatar billede jensen363 Forsker
18. marts 2009 - 15:45 Der er 25 kommentarer og
1 løsning

Hvordan er det lige med AfterUpdate i et ikke aktivt felt

En stump modulkode skal afvikles når et felt i en formular opdateres til et eller andet, altså event AfterUpdate.

Dette felt fødes med data fra en listbox, så bruger aktiverer altså ikke feltet direkte, så AfterUpdate event træder ikke i kraft !!!
Avatar billede jesperfjoelner Nybegynder
18. marts 2009 - 16:52 #1
Du kan selv aktivere afterupdate-eventen:

her indlæses data i din listbox

'kalder afterupdate
minlistbox_afterupdate()
Avatar billede jensen363 Forsker
19. marts 2009 - 08:45 #2
Ikke helt forstået

Det eneste brugeren aktiverer er listboxen vha. dobbeltklik på een af posterne heri ... herefter indsættes en værdi i et andet felt, og det er dette andet felt, som afhængig af indhold skal aktivere en stump modulkode.

Private Sub ListID_DblClick(Cancel As Integer)

    Me.ID.Value = ListID.Column(0)
   
End Sub
Avatar billede jesperfjoelner Nybegynder
19. marts 2009 - 08:51 #3
aha ja ok. Kan du bruge

Private Sub ListID_DblClick(Cancel As Integer)

    Me.ID.Value = ListID.Column(0)
    ID_afterupdate()
 
End Sub
Avatar billede jesperfjoelner Nybegynder
19. marts 2009 - 08:53 #4
hvis koden altid kører når der dobbeltklikkes i listen kan koden som kører i ID_AfterUpdate måske også bare indsættes direkte i

Private Sub ListID_DblClick(Cancel As Integer)

    Me.ID.Value = ListID.Column(0)
    'modulkører der skal køre

End Sub

eller er det kun hvis og kun hvis ID-feltet ændres?
kan man dobbeltklikke på listen uden af ID-feltet ændres?
Avatar billede jensen363 Forsker
19. marts 2009 - 09:01 #5
ID_afterupdate() forstår den ikke en ski.. af
Avatar billede jensen363 Forsker
19. marts 2009 - 09:08 #6
Det andet forslag virker oplagt, men jeg kan ikke få den til at reagerer på værdien i Column(0)

Listboxen består af i alt 4 værdier, hvoraf det udelukkende er den sidste der vises i listboxen, altså Column(3).

Min Bound Column er ligeledes sat til 0, men intet sker
Avatar billede jensen363 Forsker
19. marts 2009 - 09:22 #7
Kan jeg sende databasen til dig ?
Avatar billede jesperfjoelner Nybegynder
19. marts 2009 - 09:44 #8
Er det en enkeltselect eller multiselect listbox?

kan man bare bruge:

Me.ID.Value = me.ListID

Du måtte gerne sende, den men jeg sidder på arbejdet nu og har ikke Access på maskinen her (utroligt nok ja).

Jeg vil gerne se på den senere, hvis det skal være, hvis ikke andre kan hjælpe i løbet af dagen.
Avatar billede jensen363 Forsker
19. marts 2009 - 10:38 #9
Der er tale om enkelt select ...

Jeg prøver lige lidt mere selv
Avatar billede jesperfjoelner Nybegynder
19. marts 2009 - 10:43 #10
helt ok
Avatar billede jensen363 Forsker
19. marts 2009 - 10:47 #11
For øvrigt en god informativ hjemmeside du har :-)
Avatar billede jesperfjoelner Nybegynder
19. marts 2009 - 11:32 #12
Tak for det, jeg ved ikke helt hvad jeg vil med den, men det er fint at have et sted at henvise til, hvis folk høre, hvad det er for noget man laver :-)
Avatar billede jensen363 Forsker
20. marts 2009 - 13:53 #13
Fandt problemet .. manglede en Tag - markering i feltet ... så nu virker det ... næsten ...

Min programkode aktiveres nu som forventet ved dobbeliklik i listboxen, eksempelvis en nummerisk værdi 002, men programkoden som er en søgefunktion, returnerer posten umiddelbart før, altså nr 001 ????

Jeg er lost !!!!
Avatar billede jesperfjoelner Nybegynder
20. marts 2009 - 14:07 #14
er der noget med et 0-baseret i stedet 1-baseret index et sted?

kan du evt vise noget mere af koden?
Avatar billede jensen363 Forsker
20. marts 2009 - 14:21 #15
Selve koden der aktiveres( Thomas Jepsen - Dynamisk søgestreng ) fungerer upåklageligt hvis jeg eksempelvis opretter er tekstfelt og indtaster direkte heri / aktiverer hans kode i AfterUpdate(), men ikke hvis jeg vælger den samme værdi i en listbox ... her vælger den at returnere den forrige post
Avatar billede jesperfjoelner Nybegynder
20. marts 2009 - 14:39 #16
hvor er de poster der returneres - er det et tabeludtræk fundet med SQL?
må jeg se din SQL? tager du et ID fra listboxen og bruger det i SQLen?
Det lyder mystisk med den forrige post.
Bruger du noget med Me.listbox.column(x,y)?
Avatar billede jensen363 Forsker
20. marts 2009 - 14:50 #17
SQL i søgID ( listbox )

SELECT [StmData-001].ID, [StmData-001].Absence, [StmData-001].[Abbreviation A], [StmData-001]!Absence & " (" & [StmData-001]![Abbreviation A] & ")" AS [View]
FROM [StmData-001]
ORDER BY [StmData-001].ID;

Bound Column = 0

Hvor jeg før benyttede

Private Sub ListID_DblClick(Cancel As Integer)

    Me.søgID.Value = ListID.Column(0)
   
End Sub

som korrekt returnerede værdien fra min listbox, men hvor jeg ikke efterfølgende kunne benytte AfterUpdate i forbindelse med søgID, så har jeg nu valgt at benytte min listbox ( omdøbt til søgID ) ... fortsat med Bound Column = 0, så reagerer søgefunktionen, men altså ved at fremfinde posten før.

Thomas kode er her :

Public Function GetFilter() As String
   
    Dim SQLStr As String
    Dim ctrl As Control
   
    For Each ctrl In Screen.ActiveForm
        Select Case ctrl.Tag
            Case "Tekst"
                If ctrl <> "" Then
                    SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = '" & ctrl & "' And "
                End If
            Case "Fritekst"
                If ctrl <> "" Then
                    SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] Like '*" & Replace(ctrl, "'", "?") & "*' And "
                End If
            Case "Tal"
                If ctrl <> "" Or Not IsNull(ctrl) Then
                    SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = " & ctrl & " And "
                End If
            Case "Dato"
                If ctrl <> "" Or Not IsNull(ctrl) Then
                    SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = #" & Format(ctrl, "yyyy-mm-dd") & "# And "
                End If
        End Select
    Next ctrl
    If SQLStr <> "" Then
        SQLStr = Left(SQLStr, Len(SQLStr) - 5)
    End If
    GetFilter = SQLStr
End Function

Public Function AktiverFilter(F As Form)

    Dim SQLStr As String
    SQLStr = GetFilter
    If Len(SQLStr) = 0 Then
        F.FilterOn = False
    Else
        F.Filter = SQLStr
        F.FilterOn = True
    End If
End Function

Det er AktiverFilter() der skal afvikles i forbindelse med AfterUpdate
Avatar billede jesperfjoelner Nybegynder
20. marts 2009 - 15:19 #18
jeg skal lige hjem fra jobbet, så skal jeg kigge på det
Avatar billede jensen363 Forsker
20. marts 2009 - 15:20 #19
Jeg kan sende databasen til dig ...
Avatar billede jesperfjoelner Nybegynder
20. marts 2009 - 15:29 #20
ja gerne, jeg har jesperfjoelner AT hotmail PUNKTUM com
Avatar billede jensen363 Forsker
20. marts 2009 - 15:31 #21
Sendt
Avatar billede jesperfjoelner Nybegynder
20. marts 2009 - 18:56 #22
Jeg er ikke helt sikker på at Jepsens kode altid virker i alle sammenhænge
men denne linje

Case "Tal"
  If ctrl <> "" Or Not IsNull(ctrl) Then
      SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = " & ctrl & " And "

i koden finder indexværdien for den linje, der klikkes på. Dvs. når man klikkerp å nr. 1 finder den tallet 0. Når man klikker på 5 finder den 4. Altså numrene på rækkerne med start ved tallet 0.

Det forvirrer ekstra fordi
din ID-kolonne netop hedder 001, 002, 003 osv. men hvis det kom i en anden rækkefølge eller hede 55,645,6734 ville du stadig får 0,1,2 når man klikker på rækkerne.

Så jeg har rettet ovenstående linje til:
Case "Tal"
  If ctrl <> "" Or Not IsNull(ctrl) Then
      SQLStr = SQLStr & "[" & Mid(ctrl.Name, 4) & "] = " & ctrl.Column(0, ctrl) & " And "

og så virker det. Derved filtrerer den efter ID-kolonnen og ikke et det valgte index i listboxen. Jeg har sendt db´en den til dig.
Avatar billede jensen363 Forsker
23. marts 2009 - 08:58 #23
Takker for hjælpen
Avatar billede jesperfjoelner Nybegynder
23. marts 2009 - 09:26 #24
Det så lidt, selv tak.
Avatar billede jensen363 Forsker
23. marts 2009 - 09:32 #25
På ingen måde så lidt ... det er lige det der gør en del af forskellen i den applikation jeg er i gang med :-)
Avatar billede jesperfjoelner Nybegynder
23. marts 2009 - 09:53 #26
Alle tiders, lykke til :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Cognizant Technology Solutions Denmark ApS

Test Manager

ALD Automotive Danmark A/S

Senior Software Engineer