Avatar billede jette1 Nybegynder
22. maj 2001 - 23:56 Der er 5 kommentarer og
1 løsning

Vil fange datagrid error ...

Jeg har en form med diverse knapper, teksfelter og en datagrid. Datagrid\'en er via en ado forbundet til en access 97 database.

Brugeren tilføjer data til databasen ved at udfylde tekstfelter og trykke på \"Tilføj\".

Det er tilladt at rette tilføjet data direkte i datagrid\'en, og jeg har derfor en datagrid_error procedurer der fanger eventuelle fejl inden databasen opdateres.

Min datagrid_error procedurer reagerer imidlertid kun hvis brugeren klikker et andet sted i datagrid\'en efter at have rettet et felt. Hvis brugeren retter et felt og derefter flytter focus til et andet sted på formen, reagerer datagrid_error ikke (i hvert fald ikke før der trykkes på knappen \"tilføj\", og så lukker programmet).

Hvad gør man så?
Avatar billede jespernaur Nybegynder
23. maj 2001 - 00:43 #1
Det lyder som om du mangler at få kaldt datagrid_error når datagrid\'en mister focus, kan det tænkes, at den også skal registreres som \'onblur\' event el. lign?
Avatar billede jette1 Nybegynder
23. maj 2001 - 08:16 #2
Jeg har forsøgt at lave en lostfocus ... men når jeg kalder Datagrid1_Error fra en anden procedurer vil den have parametre, bl.a. fejlnummeret, og jeg ved ikke hvordan jeg får fat i det fejlnummmer. Jeg vedlægger lige min datagrid_error procedurer:

Private Sub Datagrid1_Error(ByVal dataerror As Integer, response As Integer)
    Dim besked As Integer
    response = 0
   
If dataerror = 6153 Then
    MsgBox \"Dette felt må ikke være blankt. Handlingen annulleres\", , \"Manglende værdi\"
    Screen.MousePointer = vbHourglass
    Adodc1.Recordset.CancelUpdate
    Screen.MousePointer = vbArrow
End If

If dataerror = 7007 Then
    MsgBox \"Du har forsøgt at indtaste en forkert værdi i dette felt. Prøv igen\", , \"Forkert værdi\"
    Screen.MousePointer = vbHourglass
    Adodc1.Recordset.CancelUpdate
    Screen.MousePointer = vbArrow
End If
   
End Sub
Avatar billede jespernaur Nybegynder
23. maj 2001 - 18:01 #3
Ved nærlæsning af DataGrid Error Event beskrivelsen får man den tanke,
at eventet kun kommer, hvis en data access resulterer i en fejl. Antagelig
medfører tab af focus ikke i sig selv at den aktuelle record bliver skrevet
tilbage, men hvad med at lade LostFocus kalde Update på det underliggende
recordset og dermed gennemtvinge en databaseskrivning?
Avatar billede jette1 Nybegynder
24. maj 2001 - 00:54 #4
Jeg har også prøvet at kalde update i lostfocus-proceduren. Men når jeg gør det, viser den ikke de fejlmeddelelser jeg har angivet i datagrid1_error. Istedet vises én eller anden standard fejlmeddelelse med et langt fejlnummer... og det vil jeg jo naturligvis gerne undgå...
Avatar billede jespernaur Nybegynder
24. maj 2001 - 11:27 #5
Du burde selv kunne fange fejlen på Update ved fx at skrive

  On Error Resume Next
  Adodc1.Recordset.Update
  If Err.number <> 0 Then
      \' Generer fejludskrift
      Err.Clear
  End If
Avatar billede jette1 Nybegynder
24. maj 2001 - 16:51 #6
Det var jo lige det jeg skulle bruge ... jeg takker :-)
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
Kurser inden for grundlæggende programmering

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