/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL - at sammenligne tal sat i en tekstvar~
Fra : Jakob Munck


Dato : 26-12-01 22:37

Jeg vil gerne lave et recordset med 5 records, der har de samme tal i 2
variable, nemlig "Indice" og "Traad". Min recordset-kode ser sådan ud:

Set RS = Conn.Execute( "SELECT TOP 5 * FROM forum where Indice = Traad order
by ID desc" )


Problemet er bare, at variablen "Indice" er defineret som tekst medens
"Traad" er defineret som tal, men rent faktisk opbevares der tal i begge
variabler. Det skulle altså kunne lade sig gøre at finde de øverste 5
records, hvor "Indice" og "Traad" er ens, også selv om den ene er defineret
som tekst og den anden som tal. Men når jeg forsøger får jeg denne
fejlmelding:

----------------------
Datatyperne stemmer ikke overens i kriterieudtrykket.
/Ansgar/ansgar.asp, line 175
---------------------------

Hvordan skal jeg skrive sætningen for at det virker?


v.h.
Jakob Munck



 
 
Jakob Andersen (26-12-2001)
Kommentar
Fra : Jakob Andersen


Dato : 26-12-01 22:59

"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3c2a4196$0$5466$edfadb0f@dspool01.news.tele.dk...
> Jeg vil gerne lave et recordset med 5 records, der har de samme tal i 2
> variable, nemlig "Indice" og "Traad". Min recordset-kode ser sådan ud:
>
> Set RS = Conn.Execute( "SELECT TOP 5 * FROM forum where Indice = Traad
order
> by ID desc" )

I MS SQL kan man gøre sådan her:

SELECT TOP 5 * FROM forum WHERE CONVERT(varchar, Indice) = Convert(varchar,
Traad) ORDER BY ID DESC

Jeg ved ikke om man kan det i Access..

--
Jakob Andersen



Jakob Munck (27-12-2001)
Kommentar
Fra : Jakob Munck


Dato : 27-12-01 00:00

> I MS SQL kan man gøre sådan her:
>
> SELECT TOP 5 * FROM forum WHERE CONVERT(varchar, Indice) =
Convert(varchar,
> Traad) ORDER BY ID DESC
>
> Jeg ved ikke om man kan det i Access..
>

Nej, desværre. Den kommer med en fejlmelding, at "Der er en ikke-defineret
funktion "CONVERT" i udtrykket...."

Men der må være en metode, som også kan anvendes i Access.


v.h.
Jakob Munck




Jakob Munck (27-12-2001)
Kommentar
Fra : Jakob Munck


Dato : 27-12-01 09:25

Jeg har forsøgt mig med følgende kode, som skulle omdnne variablen "Indice"
til et tal:

Set RS = Conn.Execute( "SELECT TOP 5 * FROM forum where Cint(Indice) = Traad
order by ID desc" )

Men den giver denne fejlmelding:


"Den numeriske værdi er uden for området. (null)"


Hvad gør jeg galt?


v.h.
Jakob Munck



Jakob Munck (27-12-2001)
Kommentar
Fra : Jakob Munck


Dato : 27-12-01 11:17

Problemet er løst ved i stedet at teste for forekomsten af et punktum i én
af variablerne. Det fungerer.

v.h.
Jakob Munck



J Andersen (28-12-2001)
Kommentar
Fra : J Andersen


Dato : 28-12-01 08:28

On Thu, 27 Dec 2001 09:25:06 +0100, "Jakob Munck"
<jakob.munck@tdcadsl.dk> wrote:

>Jeg har forsøgt mig med følgende kode, som skulle omdnne variablen "Indice"
>til et tal:
>
>Set RS = Conn.Execute( "SELECT TOP 5 * FROM forum where Cint(Indice) = Traad
>order by ID desc" )
>
>Men den giver denne fejlmelding:
>
>
>"Den numeriske værdi er uden for området. (null)"

Prøv med CLng i stedet for CInt.
Datatypen Int omfatter kun tal mellem -32,768 og 32,767

Prøv evt. at konvertere begge værdier:
.... where CLng(Indice) = CLng(Traad)
så er du i hvert fald sikker på, at de er samme datatype :)

Good luck,
Jørn


Kasper Katzmann (27-12-2001)
Kommentar
Fra : Kasper Katzmann


Dato : 27-12-01 11:30

> Men der må være en metode, som også kan anvendes i Access.

Du kan sætte feltet indice til Number i Access.


/Kasper K



Jakob Munck (27-12-2001)
Kommentar
Fra : Jakob Munck


Dato : 27-12-01 17:55

>
> Du kan sætte feltet indice til Number i Access.
>
>

Nej, for så får jeg problemer andre steder i koden. Men bortset fra det, så
har jeg løst problemet på en helt anden måde. Men det ville da - under alle
omstændigheder - være interessant at vide hvordan man sammenligner tallene i
en tekstvariabel med tallene i en talvariabel ?


jm



Jakob Andersen (27-12-2001)
Kommentar
Fra : Jakob Andersen


Dato : 27-12-01 17:53

"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3c2b5102$0$46333$edfadb0f@dspool01.news.tele.dk...
> Nej, for så får jeg problemer andre steder i koden. Men bortset fra det,

> har jeg løst problemet på en helt anden måde. Men det ville da - under
alle
> omstændigheder - være interessant at vide hvordan man sammenligner tallene
i
> en tekstvariabel med tallene i en talvariabel ?

Som sagt kender jeg ikke lige Access så indgående men man kan måske gøre
noget ala dette:

SELECT TOP 5 * FROM forum WHERE ('' + Indice + '') = ('' + Traad + '') ORDER
BY ID DESC

Men hæng mig ikke op på det...

--
Jakob Andersen



Jakob Munck (28-12-2001)
Kommentar
Fra : Jakob Munck


Dato : 28-12-01 11:31

Hej alle I kloge !

jeg har testet jeres løsninger.


1.
> SELECT TOP 5 * FROM forum WHERE ('' + Indice + '') = ('' + Traad + '')
ORDER
> BY ID DESC
>

Ovenstående giver fejlmelding fordi datatyperne i stemmer - siger den.


2.
Løsningen med at sætte begge variabler ind i et CLng(xxx) virker til gengæld
fint.


Så tak - endnu en gang - for jeres hjælp. Jeg bliver klogere hver gang, og
det er herligt !


jm



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste