schrappen met een tussenstap

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.682
Hallo,

Ik heb volgende form:

Knipsel.JPG

In het keuzevakje zijn 2 records aangevinkt

die wil ik beide schrappen.
De code onder de "schrappen-knop" is:

Code:
Private Sub Knp_schrappen_Click()
    If MsgBox("Wil je data schrappen", vbYesNo, "Let op") = vbYes Then
        DoCmd.RunSQL "DELETE DATA.schrappen FROM data WHERE (((DATA.schrappen)=True));"
    Else
    End If
    Me.Requery
End Sub

Als ik op de "Ja" knop klik krijg ik de melding dat ik 1 record wil schrappen, terwijl er 2 aangevinkt waren.
Ik antwoord "ja" waarna de record geschrapt wordt

klik ik nadien opnieuw op de schrap-knop dan krijg ik weer de melding dat ik 1 record ga schrappen..

Ik verwacht echter, bij het eerste "schrap"-commando dat ik de melding zou krijgen dat er 2 records geschrapt gaan worden..
Waarom doet ie dat nu record per record??

Bedankt
JP
 
Ik heb even een test gedaan op jouw data tabel, waarbij ik de te verwijderen data eerst naar een historietabel kopieer zodat ik de tabellen nog kan terugzetten. Het formulier waarop ik testte, was gebaseerd op de tabel DATA, verder niks. Deze code werkt daar perfect:
Code:
    If MsgBox("Wil je data schrappen?", vbYesNo, "Let op") = vbYes Then
        strSQL = "INSERT INTO DATA_Historie ( id, KODELANG, KODE, DATUM, CODE, GETUIGTHER, OFFEUSTHER, OPMERKING, Opmerk, geattesteerd, " _
            & "Bedrag, Betaald, printen, betalingsdatum, afgerekend, uitbetalingsdatum, Volgnr_behandeling, Path_groep, Pseudo_data, Plaats_behandeling ) " _
            & "SELECT id, KODELANG, KODE, DATUM, CODE, GETUIGTHER, OFFEUSTHER, OPMERKING, Opmerk, geattesteerd, Bedrag, Betaald, printen, " _
            & "betalingsdatum, afgerekend, uitbetalingsdatum, Volgnr_behandeling, Path_groep, Pseudo_data, Plaats_behandeling " _
            & "FROM data WHERE Schrappen=True"
        CurrentDb.Execute strSQL, dbFailOnError
        strSQL = "DELETE * FROM data WHERE schrappen=True"
        CurrentDb.Execute strSQL, dbFailOnError
    End If
    Me.Requery
Zou bij jou dus ook moeten werken.
 
Michel,
Ik begrijp niet wat je hier allemaal doet
De sql bevat velden die ik voor de vraag die ik stelde, niet nodig zijn
IK denk ook niet dat je dat deel van het project al in je bezit hebt
Bij data maakte ik er een ja/nee veld "schrappen" bij en kwam dus tegen wat ik vertelde..
Vink ik 1 record aan, dan krijg ik, als ik de eerste keer op "schrappen" klik... "je staat op het punt om 0 records te schrappen"... terwijl ik pas 1 vinkje ergens geplaatst had
Raar vind ik dat

JP
 
Jij snapt geloof ik niet helemaal wat ik gedaan heb; juist omdat ik jouw nieuwe structuur niet heb, heb ik a) het veld [Schrappen] toegevoegd (anders kan ik niet filteren) en heb ik b) een nieuwe tabel gemaakt waarin ik de te verwijderen records in opsla voordat ik ze verwijder. Voor mij is dat alleen maar een controlemiddel om te zien of ik ook daadwerkelijk de records verwijder die ik geselecteerd heb. En dat stuk heb ik dus niet veranderd (wel verbeterd) en dat werkt bij mij dus perfect.
 
Ik lees je bericht nog eens na, en ik geloof dat ik snap wat er aan de hand is: op het moment dat je een vinkje plaatst in het formulier is dat record nog niet opgeslagen. Vervolgens voer jij de query uit, en wordt het laatste record dus niet meegenomen omdat dat veld in de tabel nog niet de waarde TRUE heeft. Vandaar dat je bij 2 aangevinkte records maar één record verwijdert, en bij 1 aangevinkt record 0 records. Probeer het maar uit bij 4 records: je zult er met je huidige werkwijze maar 3 verwijderen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan