Avatar billede webbe Nybegynder
06. marts 2001 - 12:45 Der er 10 kommentarer og
2 løsninger

Vælge række 1 i tabel!

Hejsa!

Jeg har for første gang lavet en Oracle database og har nu brug for at vælge den øverste post (ROW_NUM = 1) og få den vist.

Men jeg får følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e21\'

ODBC driver does not support the requested properties.

/new/budget/redirect.asp, line 12


Min linie 12 er min sql-sætning, som ser således ud:

rs_skema.Open \"SELECT FROM Start_tabel WHERE ROW_NUM = 1 ORDER BY Id DESC\", Connect, 1, 3


Er der nogen der kan hjælpe???
Avatar billede ehf Nybegynder
06. marts 2001 - 12:49 #1
Hej Webbe

Det hedder rownum = 1.

Så din select kommer til at se ud som følger:
rs_skema.Open \"SELECT FROM Start_tabel WHERE ROW_NUM = 1 \", Connect, 1, 3

Der er vel ikke nogen grund til at lave en order by når du kun selecter 1 record.
Avatar billede ehf Nybegynder
06. marts 2001 - 12:50 #2
Sorry copy paste fejl
rs_skema.Open \"SELECT FROM Start_tabel WHERE ROWNUM = 1 \", Connect, 1, 3
Avatar billede tox-man Nybegynder
06. marts 2001 - 12:51 #3
Prøv først:

rs_skema.Open \"SELECT FROM Start_tabel WHERE ROW_NUM = 1\", Connect, 1, 3

derefter byg lidt mere på hvis det virker som det skal..
Avatar billede webbe Nybegynder
06. marts 2001 - 12:51 #4
hej ehf!

Jo det er der vel, for tabellen får jo nye poster løbende, dvs. Id (som bruges som primary key) hele tiden vokser og det er den sidste værdi der skal bruges (altså maxID) og derfor skal det vel være ORDER BY!
Avatar billede ehf Nybegynder
06. marts 2001 - 12:55 #5
Rigtigt! det er vist mig som sover. Order by er nødvendig.
Men jeg mener stadig at du skal bruge ROWNUM ikke ROW_NUM
Avatar billede pgroen Nybegynder
06. marts 2001 - 12:55 #6
Hva\' er det egentlig du vil SELECT\'e ?

- du mangler en \'*\' (eller nogen kolonnenavne):

SELECT * FROM Start_tabel WHERE ROWNUM = 1;
Avatar billede webbe Nybegynder
06. marts 2001 - 12:57 #7
Intet har hjulpet!

Jeg skal vælge ALT fra tabellen, så jeg kan vise det i nogle text-fields!
Avatar billede pgroen Nybegynder
06. marts 2001 - 13:00 #8
Hrmpf.

Hvad sker der, hvis du prøver det direkte i
SQL*Plus, udenom ODBC eller hvad det nu er du
har gang i...?
Avatar billede webbe Nybegynder
06. marts 2001 - 13:13 #9
pgroen:

Når jeg fyrer sætningen af direkte i min ORACLE ODBC 32Bit Test virker det!

Det er det jeg ikke forstår ved det!
Avatar billede webbe Nybegynder
06. marts 2001 - 13:47 #10
ehf & pgroen:

Hehe - havde lige overset, at den meldte fejl i en ny FIL hvor jeg bruger samme sætning, så det virker altså alligevel.

Deler pointene imellem jeg 15-15, da ehf hjalp med ROW_NUM = ROWNUM og pgroen hjalp med SELCT *!
Avatar billede pgroen Nybegynder
06. marts 2001 - 13:55 #11
Aha !

det er jo straks en anden snak...

I øvrigt kan du IKKE bruge \'order by\' i forbindelse med \'rownum=1\', idét rownum indgår
i sorteringen.

Du bliver nødt til at bruge en konstruktion á la

SELECT *
  FROM (SELECT *
          FROM start_tabel
        ORDER BY id DESC)
WHERE rownum = 1;

(Men det har ikke noget at gøre med dine ODBC-problemer)

Avatar billede pgroen Nybegynder
06. marts 2001 - 14:01 #12
eller snarere:

SELECT *
  FROM start_tabel
WHERE ID = (SELECT MAX(id)
              FROM start_tabel);

hvis ID er din primær-nøgle.
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
Computerworld tilbyder specialiserede kurser i database-management

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