16. april 2001 - 10:10Der er
13 kommentarer og 2 løsninger
Kontrol af indtastning ved udgang af felt
Jeg benytter en formular til indtastning i en tabel. Et af felerne er beskyttet mod dubletter, men advarslen kommer så først når man har tastet i alle felter vha. tab, og går til næste post. Jeg ønsker at det bliver kontrolleret ved udgangen af feltet og at det er min egen dialogbox der kommer op på skærmen, samtidig med at man bliver ståendene i feltet. Hvordan gøres det ?
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.
Hej jensch Prøv at indsætte flg. kode i kontrolelementet After Update, idet du udskifter oplysninger skrevet med stort med de aktuelle fra din database:
Private Sub KONTROLELEMENTETS_NAVNAfterUpdate() Dim Rst As Recordset, Db As Database On Error GoTo Fejlhåndtering Set Rst = DBEngine.Workspaces(0).Databases(0).OpenRecordset(\"TABELNAVN\") With Rst .AddNew .Fields![TABELLENS_FELTNAVN] = KONTROLELEMENTETS_NAVN_I_FORMULAREN .Update End With Fejlhåndtering: Msgbox Prompt:=\"her skrives teksten i din MSG-box\", Title:=\"Fejl\", Buttons:=vbInformation End Sub
Hmmmm!! Jeg har afprøvet det i min database og det virker, og det skal også virke i din. Prøv at slette Db As Database og naturligvis også komma efter Recordset.
Lad mig gætte på, at du benytter Access 2000 og Mugs benytter Access 97. Derfor skal du lave en reference til DAO. Dette gøres ved at åbne menuen Tools->References og krydse \"Microsoft DAO 3.6 object library\" af. Derefter virker DB as Database-delen som den skal.
Jeg har tilladt mig at ændre lidt i Mugs kode, da der var et par fejl/uhensigtsmæssigeder:
Private Sub KONTROLELEMENTETS_NAVN_AfterUpdate() Dim Rst As DAO.Recordset, Db As Database On Error GoTo Fejlhåndtering Set db = currentdb Set Rst = db.OpenRecordset(\"TABELNAVN\", dbopendynaset) With Rst .addnew ![TABELLENS_FELTNAVN] = KONTROLELEMENTETS_NAVN_I_FORMULAREN .Update End With Exit sub Fejlhåndtering: Msgbox Prompt:=\"her skrives teksten i din MSG-box\", Title:=\"Fejl\", Buttons:=vbInformation End Sub
Hej Thomas / Jens Jeg var også nået så langt til at vi nok benytter forskellige programmer. Thomas, tak for ændringerne i koden. Jens, håber det virker med Thomas\' forslag.
Du sendte mig en mail om, at koden stadig ikke virkede. Jeg har ærlig talt ikke selv afprøvet koden. Jeg kunne bare se, at der var nogle åbenlyse uhænsigtsmæssigheder. Derfor kommenterede jeg Mugs\' svar.
Jeg ville nok bare benytte en DCount til at checke om der findes en post med samme værdi.
noget i retning af dette:
Private Sub Felt_BeforeUpdate(Cancel as Integer) If Me.newrecord then If DCount(\"*\", \"TABELNAVN\", \"Felt = \" & Me!Felt) > 0 then Msgbox \"Posten findes i forvejen!\",vbcritical Docmd.CancelEvent exit sub end if end if end sub
Bemærk: Hvis Felt er af datatypen tekst, skal linie 3 se således ud: If DCount(\"*\", \"TABELNAVN\", \"Felt = \'\" & Me!Felt & \"\'\") > 0 then
Koden bør nok forfines lidt, da den kun virker ved oprettelse af nye poster - hvis man ændre en eksisterende post, så vil den ikke virke! Men for at få det til at virke skal jeg vide om feltet er nøglefelt? Hvis det ikke er, så kan man skrive koden således:
Private Sub Felt_BeforeUpdate(Cancel as Integer) If DCount(\"*\", \"TABELNAVN\", \"Felt = \" & Me!Felt & \" AND Nøglefelt <> \" & Me!Nøglefelt) > 0 then Msgbox \"Posten findes i forvejen!\",vbcritical Docmd.CancelEvent exit sub end if end sub
Der er dog stadig mange (for mig) ukendte faktorer, som gør at man bør lave det på en anden måde. Men så er vi måske ovre i et nyt spørgsmål?
Ja jeg sad blot på mit arbejde og kunne ikke huske password, så jeg oprettede en ny konto.
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.