Avatar billede theofilos Nybegynder
18. juni 2003 - 12:06 Der er 27 kommentarer og
2 løsninger

Problemer med null-error-besked (tal-format)

Så er jeg her igen med mit salmeprogram.

Denne gang vil jeg gerne forsøge at slippe af med de irriterende fejl-beskeder (Runtime error 94 - invalid use of Null). Således opstår fejlen:

I et felt skriver jeg et nummer på en salme i den gamle salmebog (jeg har valgt tal-format pga. statistiske udregninger). Tilsvarende salmes nummer i den nye salmebog bliver herefter vist i et andet felt (med en DLookUp-funktion,). Men når den gamle salme IKKE findes i den nye salmebog (dvs. når værdien i tabellens kolonne "ny salmebogsnummer" er Null), så popper fejlmeddelelsen selvfølgelig op, da udregnede felter med tal-format ikke kan have værdien Null (eller hur?). Det er selvfølgelig også et problem, når der indtastes et nummer, som slet ikke findes i tabellens kolonne "gl. salmebog".

Jeg håber, at jeg har udtrykt mig klart nok til at kunne få lidt hjælp... hvad gør jeg for at null-fejlen bliver ignoreret - eller helst: at der dukker en kort besked frem på skærmen: "Denne salme findes ikke i enten den nye eller den gamle salmebog"...?

Mvh

Theofilos
Avatar billede theofilos Nybegynder
18. juni 2003 - 12:07 #1
P.S. Jeg kan desværre først læse jeres bud sent i aften. Men jeg skal nok reagere!

Theofilos
Avatar billede overchord Nybegynder
18. juni 2003 - 12:15 #2
Hvis du bruger en if saetning ala denne:

if  Not isNull(din Dlookup funktion) then
....
else
  Msgbox "Denne salme findes ikke i enten den nye eller gamle salmebog"
end if
Avatar billede nih Novice
18. juni 2003 - 12:21 #3
du kan vel bruge formens vedFejl hændelse:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    MsgBox "salmen findes ikke"
End Sub

Niels
Avatar billede henrik13 Nybegynder
18. juni 2003 - 12:23 #4
If IsNull(Me.ny salmebogsnummer) Then
Msgbox "Denne salme findes ikke i enten den nye eller gamle salmebog"

End If
Vh Henrik
Avatar billede terry Ekspert
18. juni 2003 - 16:03 #5
You have to check for NULL BEFORE you make the dlookup

If IsNull(glSalmeField Then
Msgbox "Denne salme findes ikke i enten den nye eller gamle salmebog"

else

'Now do your dlookup

End if
Avatar billede terry Ekspert
18. juni 2003 - 16:08 #6
!Sorry forget that answer, didnt quite understand the problem :o)


Use a variant data type when using your Dlookup, this accepts NULL values

Dim vLook as variant

vLook = Dlookup .,......

If IsNull(vLook) Then 'you have a problem .....
Avatar billede theofilos Nybegynder
19. juni 2003 - 00:30 #7
Kære overchord, nih, henrik og terry...

Så har jeg set jeres hjælp. Tak for det. Men jeg kan altså ikke få skidtet til at virke.

Her er den funktion, som jeg har sat ind i "efter opdatering" i feltet for indtastning af gammelt salmenr:

Private Sub Tekst22_AfterUpdate()

Dim varSalme As String
varSalme = DLookup("[ny]", "gamlenr", "[gl]= " & Me![Tekst22])
    Me.Tekst20 = varSalme

Dim varTekst As String
varTitel = DLookup("[titel]", "gamlenr", "[gl]= " & Me![Tekst22])
    Me.Tekst24 = varTitel

End Sub



Funktionen finder via tabellen "gamlenr" frem til såvel nummer i den ny salmebog som titel.

MEN... desværre er der jo en del salmer fra den gamle salmebog, som slet ikke er kommet med i den nye - og derfor er der i disse tilfælde intet "output" (i feltet "Tekst20".

Af statistiske årsager har jeg valgt at salmenumrene skal være i tal-format og ikke tekst-format... Det eneste problem jeg har er de dumme fejl-beskeder, når jeg kommer til at indtaste nummeret for en salme, der ikke findes i én eller begge salmebøger...

HVOR skal jeg sætte hvilken if-sætning ind?

Mvh

Theofilos
Avatar billede henrik13 Nybegynder
19. juni 2003 - 01:00 #8
Send den til mig så skal jeg lave det som en fejlbehandling, min E-mail adresse er:
oz1bua@wanadoo.dk
Vh Henrik13
Avatar billede henrik13 Nybegynder
19. juni 2003 - 01:14 #9
Du skal bruge hændelse i formularen, vedFejl. Så skal det kun indskrives det ene sted:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 94 Then
MsgBox "Salmen findes ikke"
Response = acDataErrContinue
End If
End Sub

Vh Henrik13
Avatar billede theofilos Nybegynder
19. juni 2003 - 10:39 #10
Desværre...

Det virker ikke. Error 94 meddelelsen popper stadig væk op  :o(

Har du set, at jeg har sendt dig databasen? Så kan du se, hvad jeg mener.

Mvh

Theofilos
Avatar billede henrik13 Nybegynder
19. juni 2003 - 10:48 #11
>> theofilos
Jeg har desværre ikke modtaget noget.
Vh Henrik13
Avatar billede overchord Nybegynder
19. juni 2003 - 12:31 #12
Dim varSalme As String


varSalme = DLookup("[ny]", "gamlenr", "[gl]= " & Me![Tekst22])
if Not IsNull(varSalme) then
    Me.Tekst20 = varSalme
else
    msgbox "Beklager dette nummer findes ikke i den gamle salmebog"
end if
Avatar billede overchord Nybegynder
19. juni 2003 - 12:32 #13
Hvis det ikke virker, skal du smide Dlookup funtionen direkte ind i parantesen Not Isnull istedet..
Avatar billede overchord Nybegynder
19. juni 2003 - 12:35 #14
og som Terry sagde, lave varSalme om til
Dim varSalme as Variant
Avatar billede terry Ekspert
19. juni 2003 - 19:53 #15
theofilis>You can send the dB to eksperten@santhell.dk and I will take a look
Avatar billede henrik13 Nybegynder
19. juni 2003 - 19:57 #16
Er sendt
Avatar billede terry Ekspert
19. juni 2003 - 20:00 #17
Kan vi se svaret?
Avatar billede henrik13 Nybegynder
19. juni 2003 - 20:31 #18
>>Terry 1.14  :o)
Avatar billede terry Ekspert
19. juni 2003 - 20:54 #19
Hvis man gøre det rigtig vil man ikke få en error!
Avatar billede henrik13 Nybegynder
19. juni 2003 - 21:14 #20
>> terry
Det er rigtigt men der var anvændt en løsning som beskrevet i:
http://www.eksperten.dk/spm/365794
Vh Henrik
Avatar billede terry Ekspert
19. juni 2003 - 21:19 #21
Jeg kan se at jeg var ikke involveret med dette sp? måske derfor :o)

Men min holdning er, at hvis man kan gøre det rigtig (uden fusk) så skal man, og det kan man lige så godt prøv at overbring to personen der stiller sp. så de kan lære (håber du forstår min dansk :o)
Avatar billede henrik13 Nybegynder
19. juni 2003 - 21:32 #22
>> terry
Det er rigtigt, men så skal der jo flere komplexe løsninger til med det vigtigste ERROR behandling af hvert svar, hvor databasen skal udsendes til alle, der så giver bud på en løsning, med den ulempe, der ikke er noget der hedder hurtige svar. Jeg vil lige sige også, at det ikke var min løsning der blev valgt, i det spam (http://www.eksperten.dk/spm/365794).
Vh Henrik
Avatar billede theofilos Nybegynder
19. juni 2003 - 22:15 #23
Kære Henrik og Terry

Jo. Jeg valgte ikke Henriks forslag, fordi jeg ønskede at have det hele i én formular. Men det er en hel anden historie (http://www.eksperten.dk/spm/365794)

Henrik - du har da løst mit problem denne gang. Jeg er også glad for alle de forslag I andre har givet - bortset fra at jeg ikke kunne få dem til at virke nogen af dem.

En anden ting er, at jeg selv delvist løste problemet ved at sætte værdien "0" ind, hvor der manglede data i salmetabellen. Herved blev Error 94 problemet meget mindre.

Henrik - man kan vel sige, at du har løst mit problem... Hvordan.. Tja, det må jeg lige finde ud af ved at kigge på den mdb-fil, du har sendt tilbage.

Har jeg ret i, at Henrik fortjener pointene? Terry - du får også nogle!

Tak for hjælpen. Desværre tror jeg snart, at jeg vender tilbage... Jeg har gang i noget andet spændende... Bla. en database, hvor jeg knokler med at finde ud af, hvordan man finder forskellige aldre ud fra CPR-NR og dags dato... vel og mærke PRÆCIST! Men det må jeg jo ikke begynde at spørge om her, da det er et helt andet spørgsmål.

Med venlig hilsen

Theofilos
Avatar billede terry Ekspert
19. juni 2003 - 22:18 #24
Theofilos>I cant say if Henrik has earned the points, only you can :o)
Avatar billede theofilos Nybegynder
19. juni 2003 - 22:19 #25
HOV!!! Jeg ville gerne have forøget points i dette spørgsmål til 110 således at Henrik får 80 og Terry 30.... Nu gav den jer hver 40...

Kan jeg ændre dette nu?

Mvh

Theofilos
Avatar billede terry Ekspert
20. juni 2003 - 18:01 #26
you can give Henrik points in another question with a reference to this one, and I can do the same if he wants?
Avatar billede theofilos Nybegynder
21. juni 2003 - 11:25 #27
Hvad synes du, Henrik? Jeg synes, du har fortjent 80 og ikke 40 points...

Mvh

Theofilos
Avatar billede henrik13 Nybegynder
24. juni 2003 - 14:06 #28
Ok
Jeg har været på hostpitalet, men jeg vil da gerne havde 40 poient mere.
Vh Henrik
Avatar billede theofilos Nybegynder
24. juni 2003 - 15:36 #29
Ok
Jeg stiller dig et nyt spørgsmål, som du nok kan svare på ;o)
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