28. november 2000 - 14:58Der er
11 kommentarer og 1 løsning
tvungen indtastning i felt
Hvad kan man gøre for at forhindre Access i at forlade en tekstboks hvis man ikke har indtastet noget i den?
Jeg har benyttet følgende kode i to formularer (navnene på kontrolelementerne er tilpasset den respektive formular):
Private Sub txtTitle_LostFocus()
If IsNull(Forms!frmActivity!txtTitle.Value) Then MsgBox \"Please enter an activity title\" DoCmd.GoToControl \"pgeMain\" DoCmd.GoToControl \"txtTitle\" Else DoCmd.RunCommand acCmdSaveRecord End If
End Sub
Det virker sådan set fint nok men i den ene af formularerne får jeg (ved forsøg på lukning af formularen) følgende fejl før min messagebox popper op:
Microsoft Jet-databasemotoren kan ikke finde en post i tabellen \"tblActivityType\", hvor nøglen svarer til feltet/felterne \"AC_AT_ID\".
Vælger jeg \"OK\" og \"JA\", vises messageboxen 4 gange - skifter jeg til en anden formular oppe i menubaren, vises den 2 gange (begge ting gælder i begge formularer og begge gange skulle den jo helst kun vises en gang).
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Ja men problemet er Access tillader skift til et andet kontrolelement selvom et felt med egenskaben obligatorisk ikke indeholder en værdi (mig bekendt).
Hvis der må forekomme dubletter i feltet, kan det godt blive svært. Hvis du sætter dublette ikke tilladt og opretter en record hvor feltet er tomt. Det kan så give problemer ved visning, men sæt en regel op for det.
Lad mig præcisere problemstillingen: Min kode fungerer tilfredsstillende men jeg undrer mig over hvorfor min messagebox vises flere gange ved lukning af formular eller skift til en anden formular - det må have noget med hændelsesrækkefølgen i Access at gøre, altså noget teknisk. Der må være nogen her på eksperten der kan give en forklaring på fænomenet
Egentlig spurgte jeg jo om en alternativ løsning og det har jeg vel fået, men jeg er tilfreds med min kode som den er nu, hvis det altså ikke lige var for de overflødige messageboxe ved \"misbrug\" af systemet.
Syntaxen!? Nej, det tvivler jeg på... Det er rigtigt at feltet hedder det samme i begge formularer:
frmActivity: Private Sub txtTitle_LostFocus()
If IsNull(Forms!frmActivity!txtTitle.Value) Then MsgBox \"Please enter an activity title\" DoCmd.GoToControl \"pgeMain\" DoCmd.GoToControl \"txtTitle\" Else DoCmd.RunCommand acCmdSaveRecord End If
End Sub
frmArticle: Private Sub txtTitle_LostFocus()
If IsNull(Forms!frmArticle!txtTitle.Value) Then MsgBox \"Please enter an article name\" DoCmd.GoToControl \"pgeJournalist\" DoCmd.GoToControl \"txtTitle\" Else DoCmd.RunCommand acCmdSaveRecord End If
End Sub
Hmm... efter at have ændret \"If IsNull(Forms!frmArticle!txtTitle.Value) Then\" til \"If IsNull(Me!txtTitle) Then\" så dukker messageboxen kun op henholdsvis 3 og 1 gange i stedet for 4 og 2 som tidligere. Det er da en start.
Det syntes jeg der må være op til dig. Du han enten give dem til mig eller dig selv
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.