Avatar billede Søren Bech Morsing Praktikant
05. februar 2007 - 15:04 Der er 12 kommentarer og
1 løsning

char til int i access forespørgsel

kan jeg konvertere en varchar til int i en forespørgsel til brug i en betingelse?

select cint(felt) as feltInt
- virker

Men select felt WHERE cint(felt) > 100
- virker ikke
Avatar billede terry Ekspert
05. februar 2007 - 15:21 #1
should work, but hard to say when we cant see your data
Avatar billede Søren Bech Morsing Praktikant
05. februar 2007 - 16:07 #2
SELECT * FROM [inData] WHERE Cint(kolonneD) > 900
- fejler

Vil lige tilføje at nogle kolonneD ikke er udfyldt!
Avatar billede Søren Bech Morsing Praktikant
05. februar 2007 - 16:17 #3
Terry: tror det skyldtes jeg havde nogle ikke udfyldte kolonneD samt en enkelt med bogstaver

Ved du så om man kan skrive sig ud af det i SQL? lige nu har jeg bare fjernet de 5 rækker.
Avatar billede terry Ekspert
05. februar 2007 - 16:46 #4
empty fields arent a problem but "bogstaver" are. I'll see if I can come up with something
Avatar billede fdata Forsker
05. februar 2007 - 22:05 #5
SELECT * FROM [inData] WHERE Cint(Nz(kolonneD;0)) > 900
Avatar billede kjulius Novice
05. februar 2007 - 23:50 #6
Hvis det er en SQL sætning (altså du vil indsætte den direkte i SQL visningen, så skal du ændre semikolon (;) til komma (,).
I den grafiske visning skal du bruge semikolon...
Avatar billede terry Ekspert
06. februar 2007 - 12:05 #7
fdata>I may be wrong, but I dont think Cint(Nz(kolonneD;0)) will take into account characters. 'A' for example.

; are used when using danish regional settings because , is used as decimal seperator. In English you would use ,
Avatar billede fdata Forsker
06. februar 2007 - 16:11 #8
You're right.
<05/02-2007 16:17:40> (and your reply) wasn't on my screen when I wrote.
My answer was a follow up on <05/02-2007 16:07:29>  ;o)
Avatar billede terry Ekspert
06. februar 2007 - 18:50 #9
You can try this

Function MyCint(InVal As Variant) As Integer
Dim i As Integer

On Error Resume Next
    i = 0
   
    i = CInt(InVal)
   
    MyCint = i
   
   
End Function


Then in your query use

... WHERE (((MyCInt([Varenr]))>100));
Avatar billede terry Ekspert
06. februar 2007 - 18:52 #10
and I'm assuming that your using the SQL in Access not from ASP etc.
Avatar billede kjulius Novice
06. februar 2007 - 22:13 #11
SELECT * FROM [inData] WHERE IIf(KolonneD Is Null,0,CINT(Val(KolonneD))) > 900

Den burde tage højde både for Null og bogstaver. Prøv den...
Avatar billede Søren Bech Morsing Praktikant
07. februar 2007 - 10:52 #12
Vi lukker, jeg har lavet den nemme løsning og lavet mit felt om til int fra varchar
- og så kontrollere jeg ved indsættelse at jeg har en værdi, ellers indsætter jeg nul

Og kjulius: tror din løsning ville virke med iif sætningen, den prøver jeg i anden sammenhæng
Avatar billede terry Ekspert
07. februar 2007 - 11:04 #13
"... har lavet den nemme løsning ..."

But infact the correct one :o)

kjulius solution does work, the val() function returns 0 with "bogstaver".

If you found a solution yourself then no need to giv eyou rpoints away. Drop a comment if you want them back.

Terry
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