Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 11:44 Der er 17 kommentarer og
1 løsning

Kontroller om felt er udfyldt

Hejsa.

Jeg har denne funktion i en knaps "vedKlik" hændelse:

If Len(Me.Kbox1) = 0 Then
    MsgBox "Alle felter skal udfyldes inden dokumentet kan oprettes"
    Exit Sub
    End If

    Call opretDokument
    On Error Resume Next
    ShellExecute Me!StiNew, WIN_NORMAL
    DoCmd.Close acForm, "frmMain"

Men selvom der ikke er skrevet i feltet "kbox1" kalder den "opretDokument" med det samme.

Hvad skal jeg ændre??
Avatar billede terry Ekspert
29. august 2005 - 11:49 #1
Try altering the code to

If Len(Me.Kbox1) = 0 Then
    MsgBox "Alle felter skal udfyldes inden dokumentet kan oprettes"
    Exit Sub
Else

    Call opretDokument
    On Error Resume Next
    ShellExecute Me!StiNew, WIN_NORMAL
    DoCmd.Close acForm, "frmMain"

End if
Avatar billede terry Ekspert
29. august 2005 - 11:52 #2
But I have a feeling that the test is maybe wrong, if you set a breakpoint at If Len

(Me.Kbox1) = 0 Then

then you can see what Me.kboks1 contains and if its NULL then

change to

If Len(nz(Me.Kbox1,0)) = 0 Then
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 12:01 #3
hmmm...det virker desværre heller ikke.
Det virker heller ikke i en tom test DB.

Hvis det er i orden, så vil jeg rode med det senere når jeg kommer hjem.

Jeg skriver igen senere :D
Avatar billede kabbak Professor
29. august 2005 - 12:07 #4
If Len(Me![Kbox1]) = 0 Then
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 12:11 #5
Jeg kan ikke få det til at virke.
Dog virker dette i en testDB:

Dim test As Boolean

If Len(Me.Tekst0) > 0 Then
test = True
End If

MsgBox test

Hvorfor mon??
Avatar billede terry Ekspert
29. august 2005 - 12:31 #6
Try using this function

Function fldIsEmpty(fld As Variant)

    fldIsEmpty = True
    If Len(Trim(fld)) > 0 Then fldIsEmpty = False
   
End Function
Avatar billede mugs Novice
29. august 2005 - 12:52 #7
Denne burde fungere:

If IsNull(Me!Kbox1) then
...
end if
Avatar billede claesdamlund Nybegynder
29. august 2005 - 14:01 #8
Mugs har fat i den lange ende, men for at være sikker:

If IsNull(Kbox1) Or Kbox1 = "" Then
...
End if

Der er forskel på en Null og en 0-længde teksstreng, og begge kan i teorien forekomme.
Avatar billede mugs Novice
29. august 2005 - 14:29 #9
claesdamlund > Det burde være nok med een af betingelserne.

Null er noget af det mest bnøvlede at arbejde med, og der ligger talrige spørgsmål om emnet.

Men velkommen til eksperten, jeg kan se du er ny :o)
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 14:49 #10
mugs' forslag virker perfekt...derfor ryger alle point til ham.
Håber folk er enige...tak for hjælpen til alle :D
Avatar billede mugs Novice
29. august 2005 - 14:50 #11
Man kan selvfølgelig også "gå den anden vej":

If Not IsNull(Me!Kbox1) Then
    Call opretDokument
    On Error Resume Next
    ShellExecute Me!StiNew, WIN_NORMAL
    DoCmd.Close acForm, "frmMain"
else:
MsgBox "Alle felter skal udfyldes inden dokumentet kan oprettes"
End If
Avatar billede mugs Novice
29. august 2005 - 14:51 #12
Tak for point :o)
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 14:53 #13
Selv tak.
Nu skulle jeg lige have det andet til at virke først. Så må jeg se hvad der er mest elegant :)
Avatar billede mugs Novice
29. august 2005 - 15:22 #14
Husk at for at afprøve en kode:

Den eksisterende kode kan du gøre til en kommentar ved at sætte en apostrof ' i venstre side før koden på hver linie. Prøv så at paste min kode ind. Fungerer det ikke fjerner du bare den nye kode og apostrofferne. Så er du tuilbage ved udgangspunktet.
Avatar billede terry Ekspert
29. august 2005 - 15:53 #15
try entering text into the field and then removing it again
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 16:25 #16
Ok...det har jeg nu prøvet, og det virker stadig fint :)
Men hvis du har en bekymring ang. forslaget så skriv det endelig. JEG har nemlig ingen forstand på VBA :D
Avatar billede terry Ekspert
29. august 2005 - 16:28 #17
well if it works dont change it. I'm a bit puzzled as to why the function I gave
29/08-2005 12:31:23 doesnt work!
Avatar billede kasper_knaldperle Nybegynder
29. august 2005 - 19:34 #18
Det er nok nærmere mine evner, end din kode der er problemet.
Jeg prøvede forskellige ting, men jeg kunne ikke få det til at virke.
Og da mugs postede sit forslag lige efter gjorde jeg forsøget med det, og det virkede i første hug.

Jeg kan godt se, at jeg burde have prøvet lidt mere med dit forslag inden jeg smed alle pointene efter mugs...det beklager jeg.
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