08. august 2002 - 11:04Der er
6 kommentarer og 1 løsning
Få fat i feltnavn, der er årsag til fejlmelding
Jeg har i min database et par felter der er sat til "required". Når en ny post forlades og feltet er tomt generes en fejlmeddelelse hvor bl.a. <tabel>.<feltnavn> er med . Denne fejlmeddelse erstatter jeg med min egen, men jeg kan ikke finde den tekststreng der hører til fejlmeddelelsen. Når jeg benytter nedenstående kode er feltnavnet tomt, men i den efterfølgende systemmedelelse står feltnavnet. Hvordan får jeg fat i det?
Min kode:
Function ErrorString(ByVal lngError As Long) As String
Const conAppError = "Application-defined or " & _ "object-defined error"
On Error Resume Next Err.Raise lngError
If Err.Description = conAppError Then ErrorString = AccessError(lngError) ElseIf Err.Description = vbNullString Then MsgBox "No error string associated with this number." Else ErrorString = Err.Description End If
End Function
Private Sub Form_Error(DataErr As Integer, Response As Integer) Const conDuplicateKey = 3022 '3022 er duplicate indeks Const conEmptyField = 3314 '3014 er et tomt felt Dim strMsg As String
If DataErr = conEmptyField Then Response = acDataErrDisplay strMsg = ErrorString(DataErr) MsgBox strMsg End If
If DataErr = conDuplicateKey Then Response = acDataErrContinue strMsg = "Kunden eksisterer allerede" MsgBox strMsg End If End Sub
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis et felt ikke må være Null (tomt), plejer jeg at lægge fæg kode i feltets BeforeUpdate i formularen. Du skal have feltets Obligatorisk i tabellen til Nej, ellers vil systemmeddelelserne have fortrinsret fremfor dine egne. Jeg benytter denne kode:
If IsNull(Me.felt1) Then MsgBox "Feltet kan ikke være tomt" Me.Undo End If
Din kode virker desværre ikke altid. Hvis man fx. ignorer fejlmeddelelsen, vil posten blive gemt i næste omgang, da feltet så ikke er ændret. Jeg har også problemer med fejlhåndteringen, da fejlene generes forskellige steder alt efter om den er en ny post eller en post man retter i. Jeg savner en stabil fejlprocedure der opfanger tomme felter uanset om man springer et felt over ved oprettelsen af en ny post eller man sletter indholdet i et eksisterende felt. Allerhelst vil give brugeren 2 muligheder: 1) Vend tilbage tilbage til posten for at redigere med focus på det fejlberørte felt. 2) Fortryde ændringerne.
Det du vil ha´, er navnet på felten eller de felter som er "Duplicate". Det er lidt besværligt :) fordi access opdager den først da brugeren har trykket på "Gem" knappen. Nogle af meddelelser kan deactiveres med : docmd.setwarnings False
et andet er at lave en makro som anvender DLookUp funktionen. Sådan i beforeupdate() -> "Hvis kontrolen hedder brugereID" Brugere.Valid macro så man finder ud af det lig efter indtastingen om den er duplikeret eller ej.
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.