Avatar billede stussy Nybegynder
02. juli 2004 - 15:28 Der er 37 kommentarer og
1 løsning

lave en liste ud fra database med 2 kriterier

Hejsa

Jeg skal have lavet et indtastningsliste.

Ved gennemgang af en database (database.mdb) skal den først finde alle indtastninger fra bruger nr. 1 (rs(”brugernr”)) ogvælge den nyeste ud (vælg højeste ID) og skrive denne indtastning (rs(”indtastning”))

Dernæste skal den tage næste bruger og gøre det samme o.s.v. indtil der ikke er flere brugerere.

På resultat siden vil der så være en liste med alle brugere og deres sidste indtastning.

Hvem kan lave det?

I databasen hedder rækkerne :
Databasen = database.mdb
Bruger nummer = brugernr
ID = ID
Indtastning = indtastning
Avatar billede ttopholm Nybegynder
02. juli 2004 - 23:28 #1
okay.... så der er to tabeller i databasen.. en med brugere og en med indtastninger.. Ikke..  Og hvis ja... Bliver brugerens id gemt i indtastning-tabel og bliver der også gemt et id for indtastningen...
Avatar billede stussy Nybegynder
03. juli 2004 - 10:10 #2
Jeg har kun en database og kun en tabel. (indtastning)

I denne tabel er der 3 kolonner:
ID
brugernr
indtastning

Dvs. alle data skal hentes fra samme tabel (undskyld jeg ikke forklarede mig godt nok - jeg håber dette hjalp)
Avatar billede ttopholm Nybegynder
03. juli 2004 - 10:38 #3
oaky.. såden skal vise brugerne med alle deres indtastninger... først den første bruger med alle hans indtastninger, og derefter den næste bruger med alle hans indtastninger.. eller hvad
Avatar billede stussy Nybegynder
03. juli 2004 - 10:45 #4
nej det er der er det "tricky" ved det.

Den skal KUN vise den nyeste indtastning fra alle brugere.
Dvs. den indtastning med det nyeste ID.

Fx. som dette:
bruger      nyeste indtastning
1                123
2                124
3                  44
4                1022
osv
Avatar billede ttopholm Nybegynder
03. juli 2004 - 10:54 #5
okay burde være simpelt nok.. men skal på arbejde her nu.. så hvis det kan vente sen eftermiddag
Avatar billede ttopholm Nybegynder
03. juli 2004 - 11:07 #6
hvad hedder din tabel
Avatar billede stussy Nybegynder
03. juli 2004 - 11:14 #7
Databasen = database.mdb
tabel=indtastning
Avatar billede stussy Nybegynder
04. juli 2004 - 12:32 #8
tror du det er noget du kan klare ?
Avatar billede ttopholm Nybegynder
04. juli 2004 - 12:38 #9
ja.. umiddelbart ja... arbejder på det, men den er svære end beregnet... :-)
Avatar billede ttopholm Nybegynder
04. juli 2004 - 22:18 #10
Her er den så...

sql ="select bruger, max(id) as maxid from indtastning group by bruger"
set rs = conn.execute(sql)
Do while NOT rs.eof
  sql1 ="select * from indtastning where id='" &rs("maxid")& "'"
set rs1 = conn.execute(sql1)

Response.write "Brugeren " & rs("bruger") & " sidste indtastning er " & rs1("indtastning") &"<br>"
rs.movenext
loop


Det eneste du lige skal er at lave conn, til databasen, går udfra du har styr på det..
Avatar billede stussy Nybegynder
04. juli 2004 - 23:35 #11
perfekt, det virker s.. :-)

en enkelt lille tilføjelse:
kan det udvides med en sorterings mulighed? her tænker noget i stil med det jeg tidligere har brugt her :

-------------------------------------------------------------
(som link til samme side)
<a href="data.asp?sort=dato">Dato</a>
<a href="data.asp?sort=point">point</a>

(og så sorteringen)
strSQL = "Select * from indtastning order by "& sort
----------------------------------------------------------

Hvis du kan løse denne også, er der 100 point for dette.
Avatar billede ttopholm Nybegynder
04. juli 2004 - 23:42 #12
prøv med:
sql ="select bruger, max(id) as maxid from indtastning group by bruger order by '" & request("sort") & "'"
Avatar billede stussy Nybegynder
05. juli 2004 - 00:09 #13
hmm der sker ikke rigtigt noget (ingen sortering)
det eneste der sker er, at den vender resultatet om dvs. "desc" efter brugernummer ?
Avatar billede ttopholm Nybegynder
05. juli 2004 - 10:02 #14
hmmm... det kigger jeg på...
Avatar billede ttopholm Nybegynder
05. juli 2004 - 11:35 #15
er det muligt at jeg kan få databasen.... Er lidt svært at se hvad den gør forkert....  Og hvordan vil du have den sorteret den, f.eks efter den der har flest point eller hvad...
Avatar billede ttopholm Nybegynder
05. juli 2004 - 11:43 #16
hvis du skal sortere efter point eller dato skal den se sådan her ud:
sql ="select dato, point, bruger, max(id) as maxid from indtastning group by bruger order by '" & request("sort") &"' ASC"

Nu gør den det ASC, men hvis det skal være DESC skriver du det istedet for
Hvis Du skal sorte efter andre ting, er det vigtigt at kolonne-navnene stå efter select, ligesom jeg har gjort med point og dato...
Avatar billede stussy Nybegynder
05. juli 2004 - 12:15 #17
så snart jeg putter andre kollonner ind (select dato, point, bruger osv.) så får jeg denne fejl:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "point" som en del af en aggregatfunktion.
Avatar billede ttopholm Nybegynder
05. juli 2004 - 12:16 #18
findes der en kolonne der hedder point i din tabel
Avatar billede stussy Nybegynder
05. juli 2004 - 12:24 #19
kan jeg evt. sende det til dig på email?
Avatar billede ttopholm Nybegynder
05. juli 2004 - 12:25 #20
ja tt@device.dk
Avatar billede stussy Nybegynder
05. juli 2004 - 23:36 #21
fik du min mail?
Avatar billede ttopholm Nybegynder
05. juli 2004 - 23:40 #22
jepper, men access driller mig.. det virker fint på en mysql database, men giver den samme fejl, som du få i access, har du adgang til mysql
Avatar billede stussy Nybegynder
05. juli 2004 - 23:42 #23
nej desværre, kun til access <:-(

hvad er grunden tror du?
Avatar billede ttopholm Nybegynder
05. juli 2004 - 23:46 #24
at den ikke er så kompliceret end mysql... men jeg tror at den ikke magter det, at den skal sortere når den har grupperet det...
Avatar billede barkov Nybegynder
07. juli 2004 - 11:11 #25
I er helt gal på den.

Når i sortere, så skal Order By ikke have ' (tics) omkring feltnavnet og det er derfor den ikke virker på Access. Den godtager ikke ' omkring sort feltet hvorimod MySQL opfatter det som et felt hvis du har ' omkring.

Mht til at du ikke kan få det til at virke når du tilføjer flere felter til selecten, så er det fordi at du kun gruppere (Group By) på bruger - Du skal huske at gruppere på alle felter for at den kan lave aggregat funktionen max(id) - Men dette vil ikke virke, da du så vil få flere felter pr. bruger

Løsningen vil være at joine tabellen på sig selv og så bruge ON HAVING på join tabellen til at være brugerens højeste ID...
Avatar billede ttopholm Nybegynder
07. juli 2004 - 11:18 #26
kom med et eksempel så...
Avatar billede barkov Nybegynder
07. juli 2004 - 11:36 #27
Tjaaa - skal jeg lave eksemplet for de 100 point :)

sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastning t1 INNER JOIN indtastning t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t3.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")

Det var så en smule avanceret sql :)

Håber det ordnede din problem stilling ;)

Hygge
Avatar billede barkov Nybegynder
07. juli 2004 - 11:38 #28
ups... Havde lige fået lavet en t3

løsning er:
sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastning t1 INNER JOIN indtastning t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t1.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")
Avatar billede stussy Nybegynder
07. juli 2004 - 12:32 #29
pyyyh det er langhåret det her :-)

Men nu får jeg så en helt ny og spændende fejl :
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "t1.".
Avatar billede stussy Nybegynder
07. juli 2004 - 12:33 #30
sql ser nu sådan ud :
sql = "SELECT t1.ID, t1.brugernr, t1.dato, t1.point FROM indtastninger t1 INNER JOIN indtastninger t2 ON t1.brugernr = t2.brugernr GROUP BY t1.brugernr, t1.ID, t1.Dato, t1.point HAVING (t1.ID = MAX(t2.ID)) order by t1." & request("sort")
Avatar billede barkov Nybegynder
07. juli 2004 - 13:08 #31
Jeg har ændret sql'en til at bruge feltnavnet brugernr (som du startede med at kalde den i opgaven) og kan se at den senere bare blev kaldt 'bruger'

Men hvis du sender mig access databasen og koden på email, så skal jeg løse opgaven for dig.

Men hvis det bare er fordi at brugernr skal rettes til bruger, så kan du jo selv løse den :)

Mvh
Allan Andersen
consult@barkov.dk
Avatar billede barkov Nybegynder
08. juli 2004 - 09:34 #32
Opgaven sendt tilbage
Avatar billede stussy Nybegynder
11. juli 2004 - 23:50 #33
ttopholm vil du ikke lige svare og indkassere dine 200 point.

barkov, jeg vender lige tilbage med et link til dine 100 point.
Avatar billede stussy Nybegynder
11. juli 2004 - 23:52 #34
her er dine velfortjente point barkov.

http://www.eksperten.dk/spm/518970
Avatar billede eagleeye Praktikant
12. juli 2004 - 16:28 #35
stussy der må max uddeles 200 point for et spørgsmål. Det står i reglerne se § 2.1.15:
Det er ikke tilladt at udlove mere end 200 point for et spørgsmål ved at dele det over flere spørgsmål.

Så du må max give ttopholm 100 point når barkov har fået de 100 af dem. Du kan selv svare her og dele dem med ttopholm, sådan du tager de 100 tilbage.

eagleeye / CoAdmin
Avatar billede stussy Nybegynder
19. juli 2004 - 15:09 #36
ok fair nok (selvom det jo egnentlig blev til 2 spørgsmål)

svar venligst igen ttopholm, det var jo dig der hjalp mig med dette.
så får du dine velfortjente 200 point.
Avatar billede ttopholm Nybegynder
19. juli 2004 - 15:39 #37
Svar :-)
Avatar billede barkov Nybegynder
21. juli 2004 - 09:47 #38
øv øv så mistede jeg lige en røvfuld point for en løsning jeg brugte en smule tid på.... Jeg lavet både den avancerede løsning og fjernede alle fejl i koden og optimerede den...

Hmmm, men sådan er livet vel.

Hygge og håber at du blev glad for løsningen alligevel. Vi kan jo ikke gøre for at de er så strikse mht. til at det faktisk blev til flere opgaver på en opgave *hehe* og at du så ikke kunne ændre point satsen.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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