Avatar billede mpd Nybegynder
30. august 2010 - 12:18 Der er 9 kommentarer og
1 løsning

Rette alle poster i fortløbende formular

Jeg har en fortløbende formular, der har et felt (ja/nej) - chkFiltre.
Når jeg opdaterer feltet til "true" indsætter værdien fra et felt (txtServiceID) i en tabel - tblFiler_bestilles.

Jeg kunne godt tænke mig en funktion, hvor jeg kunne opdatere alle chkFiltre felter i formularen og samtidig indsætter ServiceID i tabellen.

Jeg har kigget på flere mulige løsninger på eksperten, men har ikke kunnet få dem til at virke.
Avatar billede mugs Novice
30. august 2010 - 13:14 #1
DoCmd.GoToRecord acForm, "DIN FORM", acFirst
Do Until Me.NewRecord = True
Me.chkFiltre = True
DoCmd.RunSQL "UPDATE tblFiler_bestilles Set ServiceID =" & Me.ServiceID
Loop
Avatar billede mugs Novice
30. august 2010 - 13:38 #2
Vi skal da have en  "gå til næste post" med:

DoCmd.GoToRecord acForm, "DIN FORM", acFirst
Do Until Me.NewRecord = True
Me.chkFiltre = True
DoCmd.RunSQL "UPDATE tblFiler_bestilles Set ServiceID =" & Me.ServiceID
DoCmd.GoToRecord acForm, "DIN FORM", acNext
Loop
Avatar billede mpd Nybegynder
30. august 2010 - 13:56 #3
Hej Mogens

Det virker ikke helt. i tblFilter_bestilles er der kun eet felt - nemlig feltet med Service_ID.

Det betyder, jeg skal indsætte en post med service_ID, hvis jeg sætter chkFiltre = true og hvis jeg vælger at slette skal posterne i tblFilter_bestilles slettes!

Jeg har tilrettet til dette, men den spørger om jeg vil opdatere en post og derefter løber den i en uendelig løkke, hvis jeg svarer ja.

Det skal lige siges, at jegh har placeret koden på en ubundet ja/felt ved navn Afkrydsningsfelt517

DoCmd.GoToRecord acForm, "frmBestilling_filtre", acFirst
    Do Until Me.NewRecord = True
    Me.chkFiltre = True
    DoCmd.RunSQL "update tblFilter_bestilles Set Service_ID =" & Me.txtService_ID
    Loop
Avatar billede mpd Nybegynder
30. august 2010 - 13:59 #4
Det virker heller ikke.

Den sætter heller ikke poster ind i tblFilter_bestilles
Avatar billede mugs Novice
30. august 2010 - 14:45 #5
Den uendelige løkke skyldes, at du ikke får fomrmularen til at gå til næste post.
Spørgamålet om du vil opdatere kan vi komme udenom, ved at indsætte en false til Warnings.

Docmd.SetWarnings False
DoCmd.GoToRecord acForm, "frmBestilling_filtre", acFirst
Do Until Me.NewRecord = True
Me.chkFiltre = True
DoCmd.RunSQL "update tblFilter_bestilles Set Service_ID =" & Me.txtService_ID
DoCmd.GoToRecord acForm, "DIN FORM", acNext
Loop
Docmd.SetWarnings True

Huskm altid at sætte warnings til true igen, ellers forbliver de frakoblede i hele applikationen.
Avatar billede mugs Novice
30. august 2010 - 14:45 #6
Prøv evt. at indsætte koden i en kommandoknap.
Avatar billede mpd Nybegynder
30. august 2010 - 14:58 #7
Hej igen

Jeg får en fejl, når koden når til sidste post 'Error 2046' - kommandoen eller handlingen "GåTilPost" er ikke tilgængelig nu!

Det er vel noget med, der skal en errorhandler ind, der afslutter, når man når til sidste post.

Har i øvrigt ændret lidt i SQL, så den hedder:

DoCmd.RunSQL "INSERT INTO tblFilter_bestilles(Service_ID) VALUES('" & Me.txtService_ID & "');"

Den virker nu.

Kan du lave errorhandleren?
Avatar billede mpd Nybegynder
30. august 2010 - 15:10 #8
Tak for hjælpen Mugs

Fik selv lavet det, så det nu virker:

On Error GoTo Errorhandler
    DoCmd.SetWarnings False
   
    DoCmd.GoToRecord acForm, "frmBestilling_filtre", acFirst
    Do Until Me.NewRecord = True
    Me.chkFiltre = True
    DoCmd.RunSQL "INSERT INTO tblFilter_bestilles(Service_ID) VALUES('" & Me.txtService_ID & "');"
    DoCmd.GoToRecord acForm, "frmBestilling_filtre", acNext
    Loop
    DoCmd.SetWarnings True
   
Errorhandler:
    If Err.Number = 2046 Then
    MsgBox "Handlingen udført"
    Exit Sub
End If
Avatar billede mugs Novice
30. august 2010 - 15:10 #9
Hvornår opstår fejlen?

Vi har jo lavet en betingelse:

Do Until Me.NewRecord = True

at den kun skal udføre løkken indtil NewRecord er = True.

Men prøv denne:

Docmd.SetWarnings False
DoCmd.GoToRecord acForm, "frmBestilling_filtre", acFirst
On error GoTo errorhandler
Do Until Me.NewRecord = True
Me.chkFiltre = True
DoCmd.RunSQL "INSERT INTO tblFilter_bestilles(Service_ID) VALUES('" & Me.txtService_ID & "');"DoCmd.GoToRecord acForm, "DIN FORM", acNext
Loop
Docmd.SetWarnings True
Errorhandler:
If err.Number  = 2046
Then Exit Sub
End If
Avatar billede mugs Novice
30. august 2010 - 15:26 #10
Tak for point.
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