Avatar billede puppetmaster Nybegynder
07. september 2004 - 13:14 Der 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
Avatar billede kabbak Professor
07. september 2004 - 16:06 #1
me.refresh
Avatar billede kabbak Professor
07. september 2004 - 16:08 #2
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
Avatar billede puppetmaster Nybegynder
08. september 2004 - 10:57 #3
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!
Avatar billede puppetmaster Nybegynder
08. september 2004 - 11:37 #4
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! :( ...)
Avatar billede puppetmaster Nybegynder
08. september 2004 - 11:42 #5
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?
Avatar billede puppetmaster Nybegynder
08. september 2004 - 12:24 #6
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.
Avatar billede puppetmaster Nybegynder
08. september 2004 - 13:36 #7
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

Jeg får beskeden: Posten er slettet
Avatar billede puppetmaster Nybegynder
08. september 2004 - 14:56 #8
Fandt på en anden måde at lave det:

  Dim Svar As String
    Svar = MsgBox("Vil du slette palle nummer " & Me.PalleKlNr & "?", vbYesNo, "Sletning af palle")
    If Svar = vbYes Then
      DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
      DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
      IndsætLogtekst ("Paller slettet. (PartiNr: " & Me.PalleKlPartiNr & "), (PalleNr: " & Me.PalleKlNr & ")")
    Else
    End If
Avatar billede puppetmaster Nybegynder
22. september 2004 - 10:34 #9
Lukker spørgsmålet
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