Avatar billede kasseper Nybegynder
20. juli 2000 - 12:40 Der er 18 kommentarer og
1 løsning

første forkomst af data

Når jeg ønsker at finde den første forkomst i en DB, hvorledes indsnevre jeg så det, jeg bruger f.eks. sådan en streng her:

strSQL: "SELECT * FROM tabel Where behandlet = '0'"

Men her vil jeg få alle der posterne der har værdien 0 i feltet behandlet...?
Avatar billede sjensen Nybegynder
20. juli 2000 - 12:46 #1
brug

select top(1 *) from tabel where behandlet = '0'
Avatar billede sjensen Nybegynder
20. juli 2000 - 12:51 #2
en anden mulighed er selvfølgeligt bare at bruge den du har og så nøjes med at bruge den første record der er i "result" sættet og glemme de andre, men det er naturligvis tidsspilde og brug af unødvendige resourcer.
Avatar billede kasseper Nybegynder
20. juli 2000 - 12:59 #3
når jeg gør det får jeg flg, fejl:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]'TOP' is not a recognized built-in function name.

/Politiken/politiken3.asp, linje 166


Jeg har skrevet således :

strSQL = "SELECT TOP(1 *) FROM tabel WHERE behandlet = '0'"
Set objRecf = objConn.Execute(firstSQL)

Det er vel rigtig nok ??
Avatar billede flipover Nybegynder
20. juli 2000 - 13:12 #4
prøv at droppe ()..således:
Select top 1 * from.......
Avatar billede sjensen Nybegynder
20. juli 2000 - 13:16 #5
kasseper, der er rigtigt. Der skal ikke () omkring. Prøv engang at se på dialogerne i dette spm:

http://www.eksperten.dk/spm.asp?id=18613
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:17 #6
Så får jeg flg. fejl :


Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '1'.

/Politiken/politiken3.asp, linje 170

Når jeg skriver :

strSQL = "SELECT top 1 * FROM tabel WHERE behandlet = '0'"
Set objRecf = objConn.Execute(firstSQL)


??hmmmmmm
Avatar billede flipover Nybegynder
20. juli 2000 - 13:20 #7
hedder din tabel ..."tabel"..????...farligt navn!!!
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:22 #8
Det er et alias for at nare fjenden i ålborg (ikke at der er noget galt med ålborg,,,,,go jomfru ane gade ;-))
Avatar billede flemming Nybegynder
20. juli 2000 - 13:22 #9
I TSQL gør du således:

strSQL = strSQL &"SET ROWCOUNT 1 "
strSQL = "SELECT * FROM tabel WHERE behandlet = '0'"

Avatar billede kasseper Nybegynder
20. juli 2000 - 13:24 #10
flemming >> hmm forklar lige igen....
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:24 #11
jeg kører på SQL 6.5
Avatar billede sjensen Nybegynder
20. juli 2000 - 13:24 #12
og ehmmm, er feltet Behandlet et tekst eller talfelt ?

Hvis det er et talfelt skal linien være:

strSQL = "SELECT top 1 * FROM tabel WHERE behandlet = 0"

altså uden '-tegnene omkring nullet.

og som flipover siger er "tabel" nok ikke det bedste navn til en tabel i en database
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:29 #13
feltet behandlet er et tekst felt, og tabelen hedder ikke tabel, men noget helt andet, men det er vel sagen udvedkommne.....fjenden er måske ikke i ålborg men i odense,,,,,.....
Avatar billede sjensen Nybegynder
20. juli 2000 - 13:50 #14
ja, undskyld. Jeg så ikke dit svar på det med navnet før jeg havde sendt min kommentar.
Selvfølgeligt er det ikke vigtigt når bare du selv er opmærksom på det,
og selvfølgeligt er det sagen uvedkommende hvad tabellen egentligt hedder.
Men når man prøver at hjælpe er det mange gange svært at se forskel på hvad
spørgeren ved og ikke ved. Derfor også bemærkningerne omkring tabelnavnet.
Det kunne jo være at du havde kaldt den for tabel ;-)

Når feltet er et tekstfelt skal der selvfølgeligt '-tegn omkring,
og fejlmeddelelsen "near 1" tyder jo heller ikke på at det er feltet der er problemet.

Jeg havde ikke lige bidt mæske i at det er en SQL server du bruger,
så spørgsmålet er derfor om ikke Flemmings svar giver noget ?
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:52 #15
Jamen skal de to linier ikke byttes om ellers bliver linie 1 jo overskrevet af linie 2 ??? eller hvad...
Avatar billede kasseper Nybegynder
20. juli 2000 - 13:55 #16
jo det skal og nu virker det også tak flemming og ellers tak for hjælpen sjensen
Avatar billede flemming Nybegynder
20. juli 2000 - 14:16 #17
>Kasserper: I SQL server 6.5 er der ikke noget der hedder "top"
Avatar billede kasseper Nybegynder
20. juli 2000 - 14:47 #18
nej det måtte jeg også bittert erfare, men din løsning virkede øjensynligt, men hvordan kan jeg vide at den ikke optager alle posterne i DB, sålænge record sættet er åbent. Når jeg åbner alle med * altså undlader din linie, virker det også, men så optages alle poster jo !!????
Avatar billede flemming Nybegynder
22. juli 2000 - 00:28 #19
* angiver IKKE antal rækker men antal søjler (felter).

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
Kurser inden for grundlæggende programmering

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