Private Sub DataGrid1_BeforeUpdate(Cancel As Integer) If MsgBox("Posten i varelisten er ændret. Vil du gemme ændringer?", vbQuestion + vbYesNo) = vbNo Then Adodc1.Recordset.CancelUpdate Adodc1.Recordset.Cancel DataGrid1.Refresh End If End Sub
Fejlen: msgbox Kommer op to gange og gitteret bliver ikke korrekt opdateret. Lukker jeg og går ind igen, er dataene korrekte nok.
At msgboxen kommer 2 gange må skyldes, at eventen _BeforeUpdate bliver trigget 2 gange. Det kan du så kikke efter i din kode - nærmere kommer jeg ikke (og det var jo ikke meget jeg kunne diske op med, ved jeg :o).
Jeg er overbevist om at nogle af de andre kode-aber kan hjælpe lidt! Det burde være simpelt - i mellemtiden kan du jo skrive, hvorvidt fejlen kommer uanset om du svarer Yes eller No til den msgbox, og sætte et par breakpoints ind i din kode ;o))
PS - skulle din DataGrid1.Refresh ikke smides ud _efter_ IF-sætningen?
Ang. ps: Nej, den refresh skal påvirkes i tilfælde af undo. Hvis der ikke skal udføres undo, har listen det indhold vi kan se. mht. beforeupdate to gange: Efter at beforeupdate er udført, skal systemet foretage en update, hvilket jo så skulle gøre, at der ikke længere er basis for en _Beforeupdate Torben
Som sagt - jeg er ikke til meget hjælp her. En ting er dog sikkert - din _BeforeUpdate bliver trigget 2 gange. Hvorfor ved jeg ikke, men årsagen burde du kunne finde med debuggeren. Ikke noget konkret hjælp fra mig - ville gerne, men er for dum til datakontroller ;o)
Synes godt om
Ny brugerNybegynder
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.