Avatar billede dougheffernan Nybegynder
10. september 2008 - 15:38 Der er 2 kommentarer og
1 løsning

Undlade at slette hvis overførsel fejler

I en stump VBA kode, se nedenfor, overføres der data fra den aktuelle database til en anden database, hvor efter data i den oprindelige database slettes.

Der er dog det problem at hvis der opstår en fejl i INSERT-forespørgslen, så som hvis data ikke kan indsættes pga. nøglefejl, og brugeren ikke når at læse beskeden på skærmen, springes der videre til DELETE-forespørgslen og så slettes data (men eksisterer heller ikke i den anden database)!

  strSQLTransfer = "INSERT INTO [" & strTableName & "] IN '" & strSearchPath & "\" & strDatabaseName & "' SELECT [" & strTableName & "].* FROM [" & strTableName & "]"
  strSQLDelete = "DELETE * FROM [" & strTableName & "]"
 
  BeginTrans
    DoCmd.RunSQL strSQLTransfer
    DoCmd.RunSQL strSQLDelete
  CommitTrans
Avatar billede mugs Novice
10. september 2008 - 15:44 #1
Kan du ikke bruge en errorhandler i stil med denne (ikke afprøvet):

On error go to errorhandler
DoCmd.RunSQL strSQLTransfer
DoCmd.RunSQL strSQLDelete
Errorhandler:
Exit sub
Avatar billede _on_ Nybegynder
12. september 2008 - 11:18 #2
Hej

Følgende konstruktion bruger jeg selv:

Dim db As Database
Dim ws As Workspace

Set db = CurrentDb
Set ws = DBEngine.Workspaces(0)
ws.BeginTrans

On Error Goto SQLHandler
db.Execute strSQLTransfer, dbFailOnError + dbConsistent
db.Execute strSQLDelete, dbFailOnError + dbConsistent
ws.CommitTrans dbForceOSFlush

Exit_Sub:
Exit Sub

SQLHandler:
MsgBox "En eller anden besked"
ws.Rollback
Resume Exit_Sub

Mvh
ON
Avatar billede mugs Novice
12. september 2008 - 11:34 #3
MSGBOX kunne være sådan:

MsgBox "Fejlnummer: " & Err.Number & vbNewLine & "Fejlbeskrivelse: " & Err.Description

Som giver dig ferjlnummer og en fejlbeskrivelse. Det kan så kombineres med en måling på fejlnummeret, og lade db handle forskelligt afhængig af hvilken fejl der er opstået.
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