Avatar billede Slettet bruger
03. august 2006 - 21:44 Der er 24 kommentarer og
1 løsning

Nyeste felt udtræk fra access går galt?

Jeg kæmper med at lave noget udtræk fra flere forskellige tabeller efter dato, det fungerede første gang, men nu skriver den ens ud i halvdelen af dem og databasen ser ud som den skal.
Nogle der kan gennemskue hvad der går galt her?

Koden er som følgende:


Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT arkade.pic, action.pic, kids.pic, puzzle.pic FROM arkade, action, kids, puzzle ORDER BY arkade.dato DESC, action.dato DESC, kids.dato DESC, puzzle.dato DESC "
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/games.mdb")
rs.Open strSQL, strDSN

For i = 1 To 10
    response.write (rs("pic")) & "<br/>"

rs.movenext
next

%>
Avatar billede nielle Nybegynder
03. august 2006 - 21:52 #1
Når ud udskriver:

rs("pic")

- er det så arkade.pic, action.pic, kids.pic eller puzzle.pic du ønsker at få ud?
Avatar billede Slettet bruger
03. august 2006 - 21:54 #2
det skulle jo gerne være sorteret efter dato så den tager de 10 første fra hver tabel... Eller hvad? :-)
Avatar billede Slettet bruger
03. august 2006 - 21:55 #3
(Det var i hvert fald meningen)
Avatar billede Slettet bruger
03. august 2006 - 21:56 #4
Men har du en nemmere løsning skal du være velkommen.. :-)
Avatar billede nielle Nybegynder
03. august 2006 - 22:02 #5
Man kan vel ikke kalde den nemmere, men din er nu også lidt for simpel til at virke korrekt ;^)

Set rs = Server.CreateObject("ADODB.RecordSet")
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/games.mdb")

' De 10 nyeste fra tabellen arkade

strSQL = "SELECT pic FROM arkade ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next

' De 10 nyeste fra tabellen action

strSQL = "SELECT pic FROM action ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next

' De 10 nyeste fra tabellen kids

strSQL = "SELECT pic FROM kids ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next

' De 10 nyeste fra tabellen puzzle

strSQL = "SELECT pic FROM puzzle ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next
Avatar billede Slettet bruger
03. august 2006 - 22:08 #6
Prøver den lige.. :-)
Avatar billede Slettet bruger
03. august 2006 - 22:15 #7
:-) - din ide ser da helt okay ud, men synes ikke helt rækkefølgen passer på datoen.. der er nogle fra en tabel der er nyere end nogle af de andre der er vist... Hvordan kan det ske?
Avatar billede Slettet bruger
03. august 2006 - 22:17 #8
Prøver lige at lave en liste på hvordan de kommer ud og fra hvilken tabel og dato
Avatar billede Slettet bruger
03. august 2006 - 22:19 #9
Hovsa.. havde lige kigget forkert... De kommer alle ud fra Arkade tabellen.. Altså de 10 nyeste fra den tabel..  Så et eller andet går galt..
Avatar billede nielle Nybegynder
03. august 2006 - 22:20 #10
Den første løkke udtrækker de 10 nyeste fra arkade, den næste de 10 nyeste fra action, den treje de 10 nyeste fra kidts, og den sidste de 10 nyeste fra puzzle.
Avatar billede Slettet bruger
03. august 2006 - 22:20 #11
Den kommer også med denne fejlmeddelse:
ADODB.Recordset error '800a0e79'

Operation is not allowed when the object is open.

/test.asp, line 29
Avatar billede Slettet bruger
03. august 2006 - 22:22 #12
Den du har lavet skriver de 10 sidste ud fra alle tabellerne og ikke de ti seneste fra alle tabeller ikke? Jeg vil gerne det kun er 10 i alt fra tabellerne samlet.. så den sammenligner dem og udskriver de 10 seneste..
Avatar billede nielle Nybegynder
03. august 2006 - 22:27 #13
strSQL = "(SELECT pic, dato FROM arkade) UNION (SELECT pic, dato FROM action) UNION (SELECT pic, dato FROM kids) UNION (SELECT pic, dato FROM puzzle) ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next
Avatar billede nielle Nybegynder
03. august 2006 - 22:28 #14
Glemte lige den indledende tekst:

Ok, det du ønsker er altså at lægge tabellerne sammen. Det kan umiddelbart kun lade sig gøre hvis Access understøtter UNION, og det kan jeg ikke lige huske.

Men prøv da dette:

strSQL = "(SELECT pic, dato FROM arkade) UNION (SELECT pic, dato FROM action) UNION (SELECT pic, dato FROM kids) UNION (SELECT pic, dato FROM puzzle) ORDER BY dato DESC"
rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("pic") & "<br/>"
    rs.MoveNext
Next
Avatar billede Slettet bruger
03. august 2006 - 22:32 #15
hehe okay.. sådan går det jo.. :-)
Men tak fordi du bliver ved med at hjælpe.. jeg forsøger lige med det nye kode...
Avatar billede Slettet bruger
03. august 2006 - 22:38 #16
Det ser ud til at virke... Super!!! Tusind tak.. :-)
Hvad så hvis jeg vil have "Navn" med ud fra hver tabel så det ikke kun er "pic"... Kan jeg skrive komma imellem eller hvordan klarer jeg det?
Avatar billede nielle Nybegynder
03. august 2006 - 22:40 #17
strSQL = "(SELECT pic, navn, dato FROM arkade) UNION (SELECT pic, navn, dato FROM action) UNION (SELECT pic, navn, dato FROM kids) UNION (SELECT pic, navn , dato FROM puzzle) ORDER BY dato DESC"
rs.Open strSQL, strDSN

rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("navn") & " - " & rs("pic") & "<br/>"
    rs.MoveNext
Next
Avatar billede Slettet bruger
03. august 2006 - 22:49 #18
Den giver parameter fejl... Hvad gør jeg galt her?

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "(SELECT pic, navn, dato FROM arkade) UNION (SELECT pic, navn, dato FROM action) UNION (SELECT pic, navn, dato FROM kids) UNION (SELECT pic, navn , dato FROM puzzle) ORDER BY dato DESC"
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/database/games.mdb")

rs.Open strSQL, strDSN

For i = 1 To 10
    Response.Rrite rs("navn") & " - " & rs("pic") & "<br/>"
    rs.MoveNext
Next
Avatar billede Slettet bruger
03. august 2006 - 22:50 #19
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/test.asp, line 15
Avatar billede nielle Nybegynder
03. august 2006 - 22:51 #20
Hvilken linje er nr. 15?
Avatar billede Slettet bruger
03. august 2006 - 22:52 #21
bare glem det... det var mig der lavede en fejl... (forkert "navn") :-)
Det virker super nu... Jeg siger mange tak, du har reddet mig for en endnu søvnløs nat så nu kan jeg komme videre med min side.. FEDT! :-)
Avatar billede nielle Nybegynder
03. august 2006 - 22:53 #22
Svar :^)
Avatar billede nielle Nybegynder
03. august 2006 - 22:56 #23
Må jeg spørge hvorfor du egentlig har (minimum) 4 tabeller som er ens?

Hvorfor ikke slå dem sammen til en tabel? Du kan jo sætte et ekstra felt på som angiver om billedet er arkade, action, kids eller puzzle.

Det ville i hvert fald have gjort dette problem meget nemmere at løse. :^)
Avatar billede Slettet bruger
03. august 2006 - 23:02 #24
Det har du egentlig ret i.... Ville gøre det hele meget nemmere... tjaa... Var nok lige hurtig nok da jeg lavede databasen... :-)
Avatar billede Slettet bruger
03. august 2006 - 23:02 #25
Tror jeg lige laver det om ved lejlighed.. nu må jeg hellere få lavet dette her klar...
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