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

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Udvælge største værdi i tabel i access db ~
Fra : Neo


Dato : 25-05-04 12:33

Hej alle

Jeg har et problem som jeg håber at kunne få lidt hjælp til her.

Jeg ønsker at finde den største værdi i en tabel i en access97 db via et sql
statement.

Jeg forsøger således:

------------------------------------------

Set WorkBase = OpenDatabase(App.Path & "\mydb.mdb", False, False, "MS
Access;PWD=abc")

SQL = "select max(tabel1) from tabeller"

Set WorkRS1 = WorkBase.OpenRecordset(SQL)

WorkRS1.MoveFirst

While (Not WorkRS1.EOF)
Label1.Caption = WorkRS1!tabel1
WorkRS1.MoveNext
Wend

------------------------------------------

Men jeg får følgende fejlmeddelelse "run-time error 3265, item not found in
this collection"

Hvad pokker gør jeg galt ? hvad er der galt med mit sql statement ?

i "tabel1" kunne der stå følgende:

1
2
3
4
5
6
7
8
9

Jeg ønsker at finde den højeste værdi ... her 9.


På forhånd tak for hjælpen

Neo



 
 
preben nielsen (25-05-2004)
Kommentar
Fra : preben nielsen


Dato : 25-05-04 12:49


"Neo" <neo___dk@hotmail.removethis.com> skrev i en meddelelse
news:40b32fab$0$209$edfadb0f@dread11.news.tele.dk...
> Hej alle
>
> Jeg har et problem som jeg håber at kunne få lidt hjælp til her.
>
> Jeg ønsker at finde den største værdi i en tabel i en access97
db via et sql
> statement.
>
> Jeg forsøger således:
>
> ------------------------------------------
>
> Set WorkBase = OpenDatabase(App.Path & "\mydb.mdb", False,
False, "MS
> Access;PWD=abc")
>
> SQL = "select max(tabel1) from tabeller"

Hedder feltet "tabel1" og hedder tabellen "tabeller" ?


--
/\ preben nielsen
\/\ prel@post.tele.dk



Neo (25-05-2004)
Kommentar
Fra : Neo


Dato : 25-05-04 17:41

snip

> > Jeg forsøger således:
> >
> > ------------------------------------------
> >
> > Set WorkBase = OpenDatabase(App.Path & "\mydb.mdb", False,
> False, "MS
> > Access;PWD=abc")
> >
> > SQL = "select max(tabel1) from tabeller"
>
> Hedder feltet "tabel1" og hedder tabellen "tabeller" ?

I min access database har jeg flere tabeller og den pågældene tabel jeg
forsøger at hente max værdier fra hedder "tabeller" og feltet hedder
"tabel1" (den lodrette kolonne)

Mvh Neo



Chrisser (26-05-2004)
Kommentar
Fra : Chrisser


Dato : 26-05-04 07:24

Neo wrote:
>>> SQL = "select max(tabel1) from tabeller"
>>
>> Hedder feltet "tabel1" og hedder tabellen "tabeller" ?
>
> I min access database har jeg flere tabeller og den pågældene tabel
> jeg forsøger at hente max værdier fra hedder "tabeller" og feltet
> hedder "tabel1" (den lodrette kolonne)

Jeg er ikke sikker på hvordan access håndterer det men i MSSQL giver
ovenstående en unavngiven kolonne, prøv:

SQL = "select max(tabel1) as tabel1 from tabeller"

Mvh
Chrisser



Neo (26-05-2004)
Kommentar
Fra : Neo


Dato : 26-05-04 20:40

Hej Chrisser

<Snip>

> Jeg er ikke sikker på hvordan access håndterer det men i MSSQL giver
> ovenstående en unavngiven kolonne, prøv:
>
> SQL = "select max(tabel1) as tabel1 from tabeller"
>
> Mvh
> Chrisser

Tusind tak for det .... det hjalp på mit problem

løsningen blev følgende:

Set WorkBase = OpenDatabase(App.Path & "\mydb.mdb", False, False,
"MSAccess;PWD=abc")

SQL = "select max(tabel1) as MaxValue from tabeller"

Set WorkRS1 = WorkBase.OpenRecordset(SQL)

WorkRS1.MoveFirst

While (Not WorkRS1.EOF)
Label1.Caption = WorkRS1!MaxValue
WorkRS1.MoveNext
Wend

Mvh Neo



Tomas Christiansen (26-05-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 26-05-04 22:32

Neo skrev:
> SQL = "select max(tabel1) as MaxValue from tabeller"
....
> Label1.Caption = WorkRS1!MaxValue

Det er klart at du skal skrive navnet på feltet, men hvad er et nu lige,
hvis du lader feltet indgå i et udtryk?
I forbindelse med Oracle (og jeg går ud fra at det også gælder for andre
databaser), navngives feltet nøjagtig som udtrykket, dvs. at følgende også
burde kunne bringes til at virke:

SQL = "select max(tabel1) from tabeller"
...
Label1.Caption = WorkRS1.Field("max(tabel1)").Value

Du kan også tilgå felter ved at bruge deres indeks:

SQL = "select max(tabel1) from tabeller"
...
Label1.Caption = WorkRS1.Field(1).Value

Men der er vist ingen tvivl om at den metoden med at "omdøbe udtrykket" og
bruge det nye feltnavn er det mest letlæselige, og giver mulighed for at
vise hvad man ønsker at bruge værdien til.

-------
Tomas


Neo (27-05-2004)
Kommentar
Fra : Neo


Dato : 27-05-04 19:54

> > SQL = "select max(tabel1) as MaxValue from tabeller"
> ...
> > Label1.Caption = WorkRS1!MaxValue
>
> Det er klart at du skal skrive navnet på feltet, men hvad er et nu lige,
> hvis du lader feltet indgå i et udtryk?
> I forbindelse med Oracle (og jeg går ud fra at det også gælder for andre
> databaser), navngives feltet nøjagtig som udtrykket, dvs. at følgende også
> burde kunne bringes til at virke:
>
> SQL = "select max(tabel1) from tabeller"
> ...
> Label1.Caption = WorkRS1.Field("max(tabel1)").Value
>
> Du kan også tilgå felter ved at bruge deres indeks:
>
> SQL = "select max(tabel1) from tabeller"
> ...
> Label1.Caption = WorkRS1.Field(1).Value
>
> Men der er vist ingen tvivl om at den metoden med at "omdøbe udtrykket" og
> bruge det nye feltnavn er det mest letlæselige, og giver mulighed for at
> vise hvad man ønsker at bruge værdien til.
>
> -------
> Tomas

Hej Tomas

Tak for dine løsningsforslag !

Jeg læser tit dine besvarelsen her i gruppen, hvorfor jeg er 100% sikker på
at dine forslag vil virke.

Jeg synes at metoden med at "omdøbe udtrykket" virker dejligt nemt og
forståeligt for mig, så den holder jeg mig til.

Jeg er ikke en "haj" som dig, så jeg har brug for at kunne overskue min kode
på mest simpel vis.

Men dine forslag viser med tydelighed at der er mange måder at kode på og
det synes jeg er en fed ting ved VB,

- for så kan vi der er flasket op med commodore 64 basic også være med

Mvh Neo



Tomas Christiansen (27-05-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 27-05-04 20:30

Neo skrev:
> Jeg læser tit dine besvarelsen her i gruppen, hvorfor jeg er 100% sikker

> at dine forslag vil virke.

Tak, tak.

> - for så kan vi der er flasket op med commodore 64 basic også være med

Jeg er "opflasket" med TI 58 LCD (Texas Instruments programmerbar
lommeregner), ZX81, ZX Spectrum, et par ZX81-kloner, BBC-computeren,
Archimedes 305 (blev senere udbygget et par gange), diverse Intel x86
baserede computere - foruden diverse andre maskiner op til og med
mainframe-størrelse

-------
Tomas


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

Månedens bedste
Årets bedste
Sidste års bedste