Avatar billede mini-me Nybegynder
15. april 2003 - 20:43 Der er 13 kommentarer og
1 løsning

SQL - Udtræk

Hey Eksperter,

Sidder her og er kørt fast, og har brug for noget hjælp.

Jeg har min Access Database som indeholder 2 tabeller,

Produkt
ID | Navn | ProduktInfo

Information
ID | Info

I min produkt tabel, under produktinfo har jeg eks. 4,13,14
som er IDerne fra Information.

Når jeg så nu skal lave mit udtræk vil jeg gerne istedet for at den skriver 4,13,14 ved rs("produktinfo") have at den finder info fra Information.
Avatar billede eagleeye Praktikant
15. april 2003 - 20:50 #1
Så kan du bruge IN i en SQL sætning og loop gennem og udskrive en information ad gangen:


'Tjek om der er noget information at vise:
if len("" & rs("produktinfo")) > 0 then
  SQL = "SELECT * FROM Information WHERE ID IN (" & rs("produktinfo") & ")"
  Set Irs = ConnectionObjectNavn.Execute(SQL)
  do while not Irs.EOF
    Response.write Irs("Info")
    Irs.MoveNext
    if not Irs.EOF then Response.write ","
  loop
end if
Avatar billede mini-me Nybegynder
15. april 2003 - 21:03 #2
Hmmm kan du uddybe lidt? Kan ikke rigtig få den til at skrive noget som helst, den er blot blank, men får ingen fejl?!
Avatar billede eagleeye Praktikant
15. april 2003 - 21:07 #3
Det skal bygges ind hvor du vil havde informationen til at stå.. Eks hvis du har et sted hvor der står rs("produktinfo") men den skriver "4,1,14" så skal du skifte koden ud med den linje...


Eller så et eks med lidt mere.:


'Udskriver alle produkter.:

SQL = "SELECT * FROM Produkt"
Set rs = Conn.Execute(SQL)
do while not rs.EOF

  Response.write "ID på productet : " & rs("ID") & "<br>"
  Response.write "Navn på productet : " & rs("Navn") & "<br>"

  'Tjek om der er noget information at vise:
  if len("" & rs("produktinfo")) > 0 then
    SQL = "SELECT * FROM Information WHERE ID IN (" & rs("produktinfo") & ")"
    Set Irs = ConnectionObjectNavn.Execute(SQL)
    do while not Irs.EOF
      Response.write Irs("Info")
      Irs.MoveNext
      if not Irs.EOF then Response.write ","
    loop
  end if
 
  rs.Movenext
loop
Avatar billede mini-me Nybegynder
15. april 2003 - 21:11 #4
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ID IN ( )".
Avatar billede eagleeye Praktikant
15. april 2003 - 21:13 #5
Kan rs("produktinfo") være tom?
Avatar billede mini-me Nybegynder
15. april 2003 - 21:15 #6
Hmmm... det underlige er at hvis jeg laver en test fil med indholdet du skrev virker det.. ?!
Avatar billede mini-me Nybegynder
15. april 2003 - 21:17 #7
Nej det er den nu ikke.. hmm roder lige lidt mere med det, løsningen må være lige foran mig :) Jeg accepetere så snart jeg har fået det til at fungere!!
Avatar billede eagleeye Praktikant
15. april 2003 - 21:17 #8
Så prøv at vise koden, men hvis rs("produktinfo") kan være tom, så der ikke skal vises noget information skal du havde denne if sætning med som vist ovenfor. Den tjekker på længeden af rs("produktinfo") og er den 0 viser den inden information.

if len("" & rs("produktinfo")) > 0 then
Avatar billede venne Nybegynder
15. april 2003 - 21:19 #9
Kan du ikke lave et join i stedet:

SELECT Navn, Info
FROM Produkt INNER JOIN Information ON ProduktInfo = Information.ID

Så får du både produktnavn og information i det samme recordset.

/venne
Avatar billede mini-me Nybegynder
15. april 2003 - 21:20 #10
Har fået det til at virke, men får en fejl allersidst.. ADODB.Field fejl '80020009'

Enten er BOF eller EOF sand, eller den aktuelle post er blevet slettet. Den anmodede handling kræver en aktuel post.

/default.asp, linje 0
Avatar billede eagleeye Praktikant
15. april 2003 - 21:22 #11
Husk de to recordset skal havde hvert sit navn.
Et til at hendte produkter ud rs
Et til at hendte information ud Irs
Har du lavet det sådan ??
Avatar billede mini-me Nybegynder
15. april 2003 - 21:24 #12
Ja det har jeg sørget for, men den løber hele recordsettet igennenm og smider det også korrekt ud, men komer med den fejl til allersidst!
Avatar billede eagleeye Praktikant
15. april 2003 - 21:27 #13
hm underligt så .. Har du en linje uden for loop'et som uskriver fra recordsetet eller en rs.movenext efter loop'et?
Avatar billede mini-me Nybegynder
15. april 2003 - 21:31 #14
Nu har jeg arbejdet de sidste 14 timer og nu må jeg sku holde ;) Havde skrevet es.movenext ;) Kæmpe tastefejl!!!

Nå men du får tak!
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