07. september 2004 - 13:14Der er
8 kommentarer og 1 løsning
Slette post fra formular
På min formular, som er typen fortløbende formular, er der et checkfelt på hver post, AnnullerPalle. Jeg har en stump kode, som, når der bliver klikket i checkfeltet, checker om der er sat hak eller ej. Hvis der er, skal den pågældende post fjernes. Det fungerer også fint, men jeg vil gerne have formularen opdateret efter hver sletning. Når jeg sletter den første post, sker der ikke noget; posten vises fortsat, med et hak i AnnulleretPalle feltet. Når jeg sletter efterfølgende poster, forsvinder disse fint. Når jeg skal slette den sidste post, får jeg en fejl, da der jo ikke er flere poster. Hvordan skal koden se ud så det fungerer?
If PalleAnulleret Then Svar = MsgBox("Vil du slette pallen/pallerne?", vbYesNo, "Sletning af paller") If Svar = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM Table WHERE PalleAnulleret=-1" MsgBox "Pallen/pallerne blev slettet" DoCmd.Requery 'Me.Form.Recalc DoCmd.SetWarnings True Else End If End If
If PalleAnulleret Then Svar = MsgBox("Vil du slette pallen/pallerne?", vbYesNo, "Sletning af paller") If Svar = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM Table WHERE PalleAnulleret=-1" MsgBox "Pallen/pallerne blev slettet" DoCmd.Requery Me.Refresh' opdatere formularen DoCmd.SetWarnings True Else End If End If
Det hjælper heller ikke. Det ser faktisk rigtig skidt ud: Hvis brugeren sætter hak i AnnullerPalle, så køres opdateringen fint nok, men feltet står STADIG med et hak i og posten er stadig "aktiv", så det er muligt at fjerne hakket og sætte det igen, hvorved man så får opdateret Table 2 (TO!) gange, selv om det kun er én palle der blev fjernet!
Jeg tænker på noget a la at værdien af checkboksen ikke bliver aflæst korrekt (tidsmæssigt), så selv om der ER sat hak i checkboksen, er det den gamle værdi der bruges (or what....ever....suk! :( ...)
Jeg kom vist til at skrive forkert før: Når der sættes hak og SQL'en afvikles, sker der IKKE noget med dataene i tabellen, men der sættes et hak i checkfeltet. Hvis hakket fjernes (på formularen, ikke i selve tabellen) og sættes igen, så køres SQL'en fint og dataene fjernes. Why?
Jeg har forsøgt at ændre lidt på forespørgslen, så der ikke checkes på den værdi PalleAnnulleret har, men på den unikke værdi af feltet PalleKlNr på formularen.
Dim Svar As String If PalleAnulleret Then Svar = MsgBox("Vil du slette pallen/pallerne?", vbYesNo, "Sletning af paller") If Svar = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM PalleKlade WHERE PalleKlNr = " & Me.PalleKlNr MsgBox "Pallen/pallerne blev slettet" Me.Refresh DoCmd.SetWarnings True Else End If End If
Men nu siger den at datatyperne er forskellige. Feltet PalleKlNr er af typen Tekst i tabellen.
Ok, jeg har ændret det så jeg checker på et andet felt, men Me.Refresh virker ikke så godt
Dim Svar As String If PalleAnulleret Then Svar = MsgBox("Vil du slette pallen/pallerne?", vbYesNo, "Sletning af paller") If Svar = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM PalleKlade WHERE PalleKlID =" & Me.PalleKlID MsgBox "Pallen/pallerne blev slettet" Me.Refresh DoCmd.SetWarnings True Else End If End If
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.