Avatar billede dougheffernan Nybegynder
09. marts 2006 - 14:53 Der er 14 kommentarer og
1 løsning

Vise egen fejlbesked

Suk.
Mit program består af en frontend i Access og med en SQL Server backend. Nu har jeg brug for at "trappe" en fejlmeddelelse fra SQL Server, så jeg kan vise min egen, men jeg er ikke sikker på at det kan lade sig gøre.

Det drejer sig om et af felterne på min formular, som i tabellerne er sat til Allow null = No.
Hvis brugeren ikke indtaster en værdi i feltet bliver følgende fejlmeddelelse vist:
ODBC: Kaldet lykkedes ikke.

[Microsoft][ODBC SQL Server Driver]Afkortet brøk. (#0) [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert value NULL into column 'MitFelt', table 'MinDatabase.dbo.MinTabel'; column does not allow nulls. INSERT fails. (#515) [Microsoft][ODBC SQL Server Driver][SQL Server]The statement has been terminated. (#3621)

Den er jo ikke særlig køn og de fleste vil hellere have en mere simpel, nem af forstå fejlmeddelelse, men hvordan?
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 14:54 #1
Der står vist lidt her http://support.microsoft.com/kb/q185384/ (kigger lige...)
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 14:55 #2
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:00 #3
Koden på link nr. 2 fungerer ikke, der er som om det ikke bliver betragtet som en error at et felt ikke må have værdien NULL.
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:01 #4
Hvor skal jeg sætte checket på?
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:04 #5
Prøvede med

Private Sub Form_BeforeUpdate(Cancel As Integer)
  LogUpdated = False
On Error GoTo ODBCErrHandler

Exit_sub:
  Exit Sub

ODBCErrHandler:
  Dim errX As DAO.Error

  If Errors.Count > 1 Then
      For Each errX In DAO.Errors
        Debug.Print "ODBC Error"
        Debug.Print errX.Number
        Debug.Print errX.Description
      Next errX
  Else
      Debug.Print "VBA Error"
      Debug.Print Err.Number
      Debug.Print Err.Description
  End If
  Resume Exit_sub

End Sub

Men det virkede ikke... :(
Avatar billede mugs Novice
09. marts 2006 - 15:22 #6
I ren Access vil det nogenlunde således ud:

On Error goto errorhandler

Errorhandler:
If err.no 0 1 then
gør et eller andet
else:
gør noget andet
end if

Evt. kan du bruge en select case i denne stil.

Select case err.no
case = 1
gør noget
case = 2
gør noget andet
end select
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:34 #7
Ok, denne her aktiveres når der er en error, men hvordan suppresser jeg fejlen fra SQL Serveren?

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:35 #8
I debug-mode kan jeg se at DataErr har værdien 3146 og Response værdien 1, men...hvad så....:(
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:37 #9
Private Sub Form_Error(DataErr As Integer, Response As Integer)
  If DataErr = 3146 Then
    MsgBox "Du skal vælge enten Ja eller Nej i feltet 'MitFelt'"
  End If
End Sub

Men SQL Server fejlen vises stadig...
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:43 #10
Kan man undo indsætningen FØR SQL fejlmeddelelsen vises? (altså uden at slette alle data på formularen)
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:43 #11
(jeg synes altid at rende ind i problemer som er svære at finde svar på...) :(
Avatar billede dougheffernan Nybegynder
09. marts 2006 - 15:46 #12
Måske kan jeg omdefinere SQL Server fejlmeddelelsen i SQL Server Enterprise Manager?
Avatar billede mugs Novice
09. marts 2006 - 16:48 #13
En mulighed er, at tillade null-værdi i tabellen og så fange fejlen i formularen med:

If Isnull (Me!FELTNAVN) then
MsgBox "Du skal vælge enten Ja eller Nej i feltet 'MitFelt'"
do.cmd goto control "mitFelt"
end if
Avatar billede dougheffernan Nybegynder
10. marts 2006 - 08:27 #14
:)

Det er sådan det fungerer nu...men det fungerer ikke tilfredsstillende.
Men p.t. er dit bud "best fit" so far, så jeg ændrer Allow nulls til Ja. :(
Avatar billede mugs Novice
10. marts 2006 - 09:54 #15
Tak for point.
Jeg er slet ikke sikker på, at du kan undertrykke fejlmeddelelserne der kommer fordi tabellen's valideringsregler ikke er overholdt. Jeg mener det har været rejst før, og så vidt jeg husker var det thomasjepsen der kom med det gyldne indlæg.
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