Avatar billede sabalic Nybegynder
01. juni 2007 - 13:53 Der er 21 kommentarer og
4 løsninger

Finde antal køn

Jeg ved ikke lige hvad det er der sker, men jeg skal finde ud af hvor mange kvinder hvis efternavn starter med j.

Jeg har denne fremgangsmetode:

SELECT Count(cprnr) AS koen
FROM brugere
WHERE (((brugere.Efternavn) Like "j") AND ((Right([brugere].[cprnr],1) Mod 2)=0));

Men det virker som om man ikke kan bruge LIKE i denne sammenhæng, og det fatter jeg ikke.

Jeg får følgende fejlmeddelse:
Datatyperne stemmer ikke overens i kriterieudtrykket, men efternavn er et tekstfelt (hvad skulle det ellers være).

Jeg håber at der er nogle der kan forklare mig hvordan jeg så kan nå frem til resultatet.
Avatar billede michael_stim Ekspert
01. juni 2007 - 13:55 #1
LIKE '%j%'
Avatar billede michael_stim Ekspert
01. juni 2007 - 13:56 #2
Starter med: 'j%'
Avatar billede bennytordrup Nybegynder
01. juni 2007 - 13:56 #3
Vist ikke på Access. Der er det *

Og michaels vil få alt med, hvor der er et j i. Startende med j er Like 'j*'
Avatar billede w13 Novice
01. juni 2007 - 13:57 #4
SELECT Count([cprnr]) AS [koen]
FROM brugere
WHERE (([brugere].[Efternavn]) Like "j%") AND ((Right([brugere].[cprnr],1) Mod 2)=0);

Hvis du stadig får fejl, så prøv at fjerne:
AND ((Right([brugere].[cprnr],1) Mod 2)=0)
da jeg tror, det er synderen..

Programmerer du det i ASP?
Avatar billede w13 Novice
01. juni 2007 - 13:58 #5
Jeg har brugt Like "noget%" masser af gange i access, virker umiddelbart fint. :)
Avatar billede mugs Novice
01. juni 2007 - 14:01 #6
SELECT brugere.efternavn
FROM brugere
WHERE (((brugere.efternavn) Like "j*"));

Men fejlen:

Datatyperne stemmer ikke overens i kriterieudtrykket

kommer vel fra, at efternavn er alfanumerisk og modulus beregningen opfattes som et numerisk felt.
Avatar billede mugs Novice
01. juni 2007 - 14:03 #7
Du kan evt. prøve at foretage modulus beregningen i et separat udtryk og indsætte kriteriet 0, og i efternavn kriteriet Like "j*"
Avatar billede mugs Novice
01. juni 2007 - 14:10 #8
SELECT brugere.efternavn, brugere.cprnr
FROM brugere
WHERE (((brugere.efternavn) Like "j*") AND (((Right([brugere].[cprnr],1) Mod 2)=0)));
Avatar billede sabalic Nybegynder
01. juni 2007 - 15:00 #9
Det var hurtigt.

Jeg syntes efterhånden at jeg har prøvet alt.

Dette virker:
SELECT Count(cprnr) AS koen
FROM brugere
WHERE (((brugere.Efternavn)="nielsen") AND ((Right([brugere].[cprnr],1) Mod 2)=0));

men det er ikke det jeg skal bruge.

Ja, jeg laver det i asp, men tester det i access.
Avatar billede sabalic Nybegynder
01. juni 2007 - 15:03 #10
Jeg har forsøgt med deverse jokertegn, men intet virker. Selv om jeg skriver i kriterie LIKE "nielsen" får jeg fejlen:

Datatyperne stemmer ikke overens i kriterieudtrykket.

Jeg syntes det er underligt.
Avatar billede michael_stim Ekspert
01. juni 2007 - 15:05 #11
Hvad er der for datatype på feltet? Text?
Avatar billede sabalic Nybegynder
01. juni 2007 - 15:08 #12
Både efternavn og cprnr er tekst felter.
Avatar billede michael_stim Ekspert
01. juni 2007 - 15:10 #13
Pröv at lave efternavn om til en char.
Avatar billede sabalic Nybegynder
01. juni 2007 - 15:10 #14
Det kan man ikke i access
Avatar billede w13 Novice
01. juni 2007 - 15:11 #15
Kan det skyldes, at du skal bruge apostrof (') i stedet for anførelsestegn (") omkring nielsen eller j% eller j*?
Avatar billede michael_stim Ekspert
01. juni 2007 - 15:14 #16
Det er sandt. Det er mig der forveksler text og PM.
Avatar billede sabalic Nybegynder
01. juni 2007 - 15:15 #17
Nej, man skal bruge anførelsestegn i access, men aprstrof fra en asp side. Joker tegnet i access er en stjerne, men fra en asp side er det et procenttegn.
Avatar billede terry Ekspert
01. juni 2007 - 20:25 #18
I havent read all posts so I may be suggesting something others already have.

Like "j"
should be either
LIKE 'j*'
or
LIKE 'j%'

IE ' NOT "

Then ensure that
AND ((Right([brugere].[cprnr],1) Mod 2)=0));

only selects women by removing the like j
Avatar billede w13 Novice
01. juni 2007 - 21:38 #19
Sabalic >> Det forklarer det. Jeg bruger altid kun ASP. :)
Avatar billede Slettet bruger
01. juni 2007 - 22:57 #20
WHERE ((Left(brugere.Efternavn,1) = "j") AND ((Right([brugere].[cprnr],1) Mod 2)=0));
Avatar billede neoman Novice
01. juni 2007 - 23:12 #21
Hvad med at følge mugs forslag 14:01:18 om at kigge på typer ? Det er jo dér det går galt, så ((Right([brugere].[cprnr],1) Mod 2)=0)
skulle vel være
(CInt(Right([brugere].[cprnr],1)) Mod 2)=0)
Avatar billede mugs Novice
02. juni 2007 - 00:44 #22
mit forslag 14:10:35 er afprøvet i Access og fungerer her. ASP har jeg ikke forstand på.
Avatar billede sabalic Nybegynder
02. juni 2007 - 09:41 #23
Ja, nu har jeg prøvet alle de forslag der er kommet fra jer, men intet af det virker hos mig. Jeg tror efterhånden, at det er en bug i min access 2007. Jeg har før lavet meget avanceret forespørgsler, hvor jeg skulle finde antal køn, men det er første gang jeg vil bruge LIKE.
Jeg må nok finde en anden måde at gøre det på.
Avatar billede terry Ekspert
02. juni 2007 - 10:58 #24
If you want you can send your dB tome and I can maybe see the problem

ekspertenATsanthell.dk
AT = @
Avatar billede sabalic Nybegynder
02. juni 2007 - 13:39 #25
Jeg har løst problemet. Det viser sig, at der i min brugertabel, er nogle cprnr felter, der er null, hvilket i sig selv ikke er noget problem. Men der er også nogle felter, som tilsyneladende også er tomme, men faktisk indeholder de ””. Nu har jeg erstattet ”” med null, og nu virker det som det skal.

I må dele de 200 points, alene fordi I gad kigge på problemet.
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