Avatar billede webhelpers Praktikant
06. august 2001 - 20:57 Der er 11 kommentarer og
1 løsning

mismatch error????

Jeg har følgende kode, som åbner en rapport, som følge af værdierne indtastet between [Udskriftfelt1] og [Udskriftfelt1a]. Det vil sige den åbner ikke rapporten, idet den kommer med følgende fejlmelding: \"Runtime error 13, type mismatch!\"
Felttypen i [Udskriftfelt1] og [Udskriftfelt1a] er tekst, og fejlen kommer når man indtaster tekst som kriterium, hvad kan være galt?????

Private Sub Labels_kontakt2_Click()

Dim stWhere As String
Dim stDocName As String

    stDocName = \"Labels kontakt2\"
   
    If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]) Then
    stWhere = \"[Final].[Navnet] Between [Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]\"
    End If
           
    DoCmd.OpenReport stDocName, acPreview, , stWhere
   
End Sub

I tools+references har jeg tilvalgt: Visual Basic For Applications, Microsoft Access 9.0 Object Library, OLE Automation, DAO 3.6 og MVB for Applications extensibility 5.3. (Måske det er hér fejlen ligger????)
Avatar billede terry Ekspert
06. august 2001 - 21:08 #1
hi again numsi!

You are setting stWhere to a sting containing
\"[Final].[Navnet] Between [Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]\"
In other words the values of the fields arent included in the WHERE, th enames of the fields are.
Try this:


stWhere = \"[Final].[Navnet] Between \'\"
stWhere = stWhere & [Forms]![Udskrivmenu].[Udskrivfelt1]
stWhere = stwhere & \"\' And \'\"
stWhere = stWhere & [Forms]![Udskrivmenu].[Udskrivfelt1a]
stWhere = stWhere & \"\'\"

or something like that.

NOTHING TO DO WITH REFERENCES!
   

   
06. august 2001 - 21:54 #2
Jeg kunne heller ikke lade være at undre mig over sætningen:
If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]) Then

Nu kender jeg ikke fldIsEmpty men den skal formentlig have én parameter. Nemlig et kontrolelement.
Derved skal linien se således ud:
If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1]) And not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1a]) Then

/Thomas
Avatar billede webhelpers Praktikant
06. august 2001 - 22:11 #3
hej thomas,
dit forslag virker sgu\', så den rigtige kode ser således ud:

Private Sub Labels_kontakt2_Click()

Dim stWhere As String
Dim stDocName As String

    stDocName = \"Labels kontakt2\"
   
    If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1]) And Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1a]) Then
    stWhere = \"[Final].[Navnet] Between [Forms]![Udskrivmenu]![Udskrivfelt1] And [Forms]![Udskrivmenu]![Udskrivfelt1a]\" 
   
    End If
   
    DoCmd.OpenReport stDocName, acPreview, , stWhere
   
End Sub

Det undrer mig bare, at koden som jeg har skrevet i første indlæg virker perfekt på dato - og integer felter.....Hvordan kan det så være??
Avatar billede webhelpers Praktikant
06. august 2001 - 22:15 #4
Hi terry (again),
nice to see you around again. It appears that I won\'t leave you alone - I always have a database problem he he he.

I\'m soon finished with the database, thanks to you! But who nows, maybe i will be back again with more silly amature problems...
Another thing do you have the explanation on why the code works with date and integer fields but not text. Thomasjepsen suggestion actually works, but I can still not understand why
06. august 2001 - 22:19 #5
Hej igen,

Som sagt kender jeg ikke fldIsEmpty-funktionen, men det der sker, når du bruger fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]) er at den laver en binær AND mellem de 2 felter.
Hvis felterne er numeriske og indeholder f.eks. 1 og 3 svare det altså til at skrive:
fldIsEmpty(1 and 3) hvilket svarer til at skrive fldIsEmpty(1) da 1 AND 3 = 1.

Hvis fldIsEmpty blot undersøger om indholdet er forskelligt fra null eller \"\" så er det jo opfyldt for de fleste numeriske felter - og datofelter ligeså, da de reelt også er numeriske felter.

Det blev ret teknisk det her, men jeg håber, at du er med. Sig til, hvis der er noget du ikke forstår; f.eks. hvorfor 1 AND 3 = 1.

/Thomas
Avatar billede webhelpers Praktikant
06. august 2001 - 22:27 #6
Jahhh......kan du forklare 1 AND 3=1?
06. august 2001 - 22:40 #7
tænk i binære tal:
1=00000001
3=00000011

Når man benytter AND mellem 2 tal, skal man således finde de cifre, hvor der står 1 i både det ene tal og (AND) det andet. Dvs kun i yderste højre position 00000001

ex:
11001011
AND
01101101
=
01001001

Modsat har man OR hvor der blot skal være et 1-tal i én af positionerne. Dvs 1 OR 3 = 3.

Endelig har man XOR hvor resultatet giver de cifre, hvor der KUN er ét 1-tal:
1 XOR 3 = 2

Tilsidst kan du spørge: \"Hvad fa\'en skal man bruge det til?\"
Og hvad kan jeg sige til det? ....Boller fra....

Man bruger det faktisk ikke så meget i disse 3./4. generations værktøjer. I assembler er det er stort hit ;o)
Avatar billede webhelpers Praktikant
06. august 2001 - 22:55 #8
Okay, nu tror jeg den er ved at trænge gennem den tykke hinde....ligeså så stille......
Avatar billede terry Ekspert
07. august 2001 - 08:30 #9
hi thomas>

the fldIsEmpty does as you correctly assumed take one parameter, a control element. Just checks to see if its either Null or \"\".

I didnt even see that numsi had two fields there!

numsi> is it working as you want now?


Avatar billede webhelpers Praktikant
07. august 2001 - 10:37 #10
terry>
it is working now as far as I can see. I just thought it was possible to write it like this:
If Not fldIsEmpty([Forms]![Udskrivmenu].[Udskrivfelt1] And [Forms]![Udskrivmenu].[Udskrivfelt1a]) Then

And thought that If Not fldsEmpty would be a control element for both fields [Udskrivfelt1] and Udskrivfelt1a]. I thougth wrong....But the code works with date and integer fields.
Avatar billede terry Ekspert
07. august 2001 - 10:41 #11
what about text fields?
Avatar billede webhelpers Praktikant
07. august 2001 - 11:43 #12
with the code from thomas (including \"and not fldIsEmpty\")the textfields also work now.
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