Avatar billede xzaboo Praktikant
15. februar 2005 - 18:28 Der er 12 kommentarer og
1 løsning

Sætte Afkrydsningsfelt til True ved filtrede poster..

Hej alle sammen..
JEg har i en formular et afkrydsningfelt. Når jeg nu søger i mine poster inde i formularen, så kunne jeg godt tænke mig at få lavet det således at jeg har en knap, som kan sætte afkrydsningsfeltet til 'True' ved de poster jeg har søgt/filtreret frem. Den må ikke sætte et kryds i alle posterne. Jeg har indtil videre lavet følgende:

Private Sub Kredit_Click()
    If Me.FilterOn = True Then
        Me.OKKredit.Value = True
    End If
End Sub

Denne mangler nu bare at sætte 'True' ved alle dem jeg har filtreret frem. HVordan gør jeg dette/Hvad mangler der i ovenstående?

Mvh. STeffen..
15. februar 2005 - 18:56 #1
Private Sub Kredit_Click()
    If Me.FilterOn = True Then

        Docmd.Setwarnings false
        Docmd.RunSQL "Update [Din tabel] Set OKKredit Where " & Me.Filter
        Docmd.Setwarnings true
        me.requery
    endif
end sub
Avatar billede mugs Novice
15. februar 2005 - 20:01 #2
Hvad skal OKKredit opdateres til - True?

DoCmd.RunSQL "Update [Din tabel] Set OKKredit = true Where " & Me.filter

:o)
15. februar 2005 - 20:02 #3
nå ja...mindre detalje ;o)
Avatar billede mugs Novice
15. februar 2005 - 20:05 #4
Ja - man skal sgu ikke hænge sig i detaljer, når der er Randers Reb ved hånden ;o)
Avatar billede xzaboo Praktikant
16. februar 2005 - 18:48 #5
Hej igen..
Jeg tror der går et eller andet helt galt. Den sætter ikke kun flueben/= True i de poster jeg har filteret frem, men i samtlige poster der findes. Hvad kan dette skyldes ?

Koden ser nu således ud:
Private Sub Faktureret_Click()
    If Me.FilterOn = True Then
       
        prompt = "Vil du sætte de fundne transporter til 'er faktureret' ?"
        If MsgBox(prompt, vbYesNo, "Afkrydse faktureret?") = vbYes Then
           
            DoCmd.SetWarnings False
            DoCmd.RunSQL "Update Læs Set OKFak = True Where " & Me.Filter
            DoCmd.SetWarnings True
            Me.Requery
           
        End If
    End If
End Sub
Avatar billede mugs Novice
16. februar 2005 - 18:56 #6
thomasjepsen's SQL er afprøvet og fungerer perfekt.

Jeg kan ikke se nogen egentlig fejl i din kode. Prøv indledningsvis at køre denne kode:

DoCmd.RunSQL "Update Læs Set OKFak = True Where " & Me.Filter
Me.Requery

Og fortæl hvad der sker.
Avatar billede xzaboo Praktikant
16. februar 2005 - 19:20 #7
Jeg har nu forsøgt med dit forslag. Der er i alt 160 poster i min db. Når jeg så først søger nogle bestemte poster frem, og vil køre kommandoen på disse, så kommer den op og spørger om jeg vil opdatere alle 160 poster. Hvad går galt ?
Avatar billede mugs Novice
16. februar 2005 - 19:23 #8
Det kan jeg ikke sige. som sagt har jeg afprøvet thomasjepsen's kode, og den fungerer upåklageligt, idet den kun afkrydset de filtrerede poster.

Kan du prøve at sende din db til:

mugs@mail.dk

så vil jeg prøve. Husk at zippe den.
Avatar billede xzaboo Praktikant
16. februar 2005 - 19:35 #9
Det har vel ikke nogen betydning, at måden jeg søger på er "Filtrer efter Formular" ?
Avatar billede mugs Novice
16. februar 2005 - 19:39 #10
Hvis jeg filtrerer efter formular, er min kommandoknap ikke tilgængelig. Prøv at filtrere efter markering.
Avatar billede xzaboo Praktikant
16. februar 2005 - 19:59 #11
JEg bruger først min kommandoknap efter jeg har slået filteret til, fordi så er kommando knapperne ikke nedtonede.

Jeg prøver lige at sende dB'en til dig.
Det er 'Afregnings' formularen du skal kigge i.
Avatar billede xzaboo Praktikant
20. februar 2005 - 14:44 #12
Idet jeg har fået sagen ordnet af mugs over e-mail, så vil jeg lige indsætte den samtale vi har haft for komme frem til en løsning:

Nu har jeg bøvlet lidt med din db både iaftes og her til morgen, og kommer til samme resultat som dig: Den opdaterer alle poster. Når jeg skrev tidligere på eksperten, at Thomas' kode fungerer, havde jeg afprøvet den i en db med unikt felt. Jeg tror det har noget at gøre med, at opdateringen ikke kan finde ud af, hvilket felt du filtrerer efter.
Jeg har rodet lidt med dine tabeller , og ser at dette felt er ens i begge tabeller:

LæsSagsID

Er de poster du opdaterer, hvor dette felt i formularen er = Tabellen Læs. Så er det ikke noget problem. Prøv at åbne min formular der hedder "test". Jeg har lagt en ny kommendoknap nederst.


Hej igen..

Lige en lille tilføjelse. Jeg har afprøvet om det virker med RmTrNo, men når jeg ændre det til denne, så opdatere den kun den aktuelle post man står i, og ikke dem der er filtreret frem. Det samme sker egentlig hvis jeg benytter mig af LæsSagsID som du havde valgt, fordi når jeg fx søger nogle sager/poster frem på KundeID, så vil der fremkomme flere forskellige LæsSagsID, og så vil den kun opdatere lige netop den post man er på.

Du kna ikke bruge RmTrNo, da det jo er en unik værdi for posten. Hvis jeg søger på LæsSagsID og trykker på min kommandoknap, bliver der kun opdateret de felter med det fundne LæsSagsID. Du kan se alle poster i formularen, men det er jo ligegyldigt.


Hej igen

Jeg skal ikke kun søge på LæsSagsID, men skal faktisk kunne søge på alle felter i hele formularen (Stort set), og når jeg søger efter Kundenr = 101, så kommer der 5 poster frem. Derefter kører jeg din kommandoknap, og så vil den kun opdatere den første af de poster jeg står på, men det er vel fordi at der i blandt de 5 fremfiltrerede poster befinder sig 5 forskellige LæsSagsID.



Det er fuldstændig korrekt, at du kun opdaterer de poster, hvis LæsSagsID matcher formularen.

Når jeg bruger filtreringsfunktionen og opdaterer filtrerede poster i en lille testdb, fungerer det perfekt. Jeg har ikke tid mere lige nu, men vil gerne se på det senere.



Men sådan en tidlig SØN morgen over den sidste kop kaffe, er det lige sagen. Jeg fandt da også årsagen i løbet af 10 min.

Når du opdaterer filtrede poster i din form, skal du arbejde i samme tabel, som de filtrerede poster kommer fra. Ellers ved db ikke, hvilke tabeller i den fremmede tabel, der skal arbejdes med.

Det fortæller jo, at vi ikke kan arbejde i tabeller, og så må vi jo gøre det i en form. Bemærk, at jeg har trukket Afkrydsningsfelt355 ind i formularen. Og jeg arbejder stadig i min testformular.

Koden ser således ud:


Private Sub Kommandoknap354_Click()
On Error GoTo Errorhandler
If Me.FilterOn = True Then
DoCmd.GoToRecord acForm, "test", acFirst, 1
Do Until Me.NewRecord = True
Me.Afkrydsningsfelt355 = True
DoCmd.GoToRecord acForm, "test", acNext, 1
Loop
End If
Errorhandler:
If Err.Number = 2105 Then
MsgBox "Handlingen udført"
Exit Sub
End If
End Sub

Jeg tror ikke, koden vil vinde en førstepræmie for elegance, men hvad pokker. Så vidt jeg kan se fungerer den.


Og så mangler der jo kun et svar fra mugs af, og de VELFORTJENTE point :)
Avatar billede mugs Novice
20. februar 2005 - 14:47 #13
Tak.
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