Avatar billede krogstrup Nybegynder
21. august 2001 - 10:23 Der er 9 kommentarer og
1 løsning

Problemer med SQL og recordssets...!!!

Koden:

<!--#include virtual=\"/includes/asp/createRecordset.inc\"-->
<% strSQL = \"SELECT * FROM krydsRef,subGroups WHERE (krydsRef.sID = \" & subID & \") AND (krydsRef.sID = subGroups.ID)\" %>
<!--#include virtual=\"/includes/asp/openReadOnly.inc\"-->
<% Do While Not rs.EOF %>

<li style=\"margin-bottom:4px;\"><b><a href=\"showLinks.asp?subID=<%=rs(\"targetID\")%>&subName=<%=subName%>&subNameID=<%=subID%>\" target=\"_self\"><%=rs.subGroups.item(\"name\").value%></a></b>

<% rs.MoveNext
loop %>
<!--#include virtual=\"/includes/asp/closeRecordset.inc\"-->


Fejlen:

Error Type:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: \'subGroups\'
/frames/showLinks.asp, line 81



Problemet opstår i linie 81 i denne reference:
rs.subGroups.item(\"name\").value

Men hvordan henviser jeg til feltet \"name\" i tabellen \"subGroups\" ????

Problemet er at der findes et felt der hedder \"name\" i både tabellen \"krydsRef\" og \"subGroups\". Derfor er jeg nødt til at lave en henvisning til både tabelnavn og feltnavn !!!
Avatar billede bronsholt Nybegynder
21. august 2001 - 10:29 #1
Du kan ikke anvende en SELECT-sætning, hvor den henter fra 2 tabeller på en gang, i hvert fald ikke på den måde, som du har gjort med \"SELECT * FROM krydsRef,subGroups WHERE....\" Hvad ønsker du at foretage dig med indlæsningen af de data? Hvis meningen er, at du skal hente fra 2 forskellige tabeller ind i samme recordset, skal du bruge en \"UNION\", dvs. \"SELECT * FROM krydsRef WHERE ...(osv)\" & UNION & \"SELECT * FROM subGroups WHERE ...(osv).
Avatar billede krogstrup Nybegynder
21. august 2001 - 10:38 #2
Det forstår jeg ikke - jeg har ellers fået at vide at ovenstående godt kan lade sig gøre:

http://www.eksperten.dk/spm/89636

Er det ukorrekt ?
Avatar billede lange Nybegynder
21. august 2001 - 10:48 #3
bronsholt, selvfølgeligt kan han det. Det hedder et join mellem to tabeller og er nok een af de mest benyttede SQL-strukturer. En union af to SELECT-sætninger vil give fællesmængden af de 2 tabeller, hvilket næppe er det ønskede resultat.

krogstrup: Når du laver et join mellem 2 tabeller, får du resultatet ud som een tabel. Dvs, at du bare henter værdierne af de enkelte felter, som du altid har gjort. I dette tilfælde rs.item(\"name\").value - eller lidt nemmere rs(\"name\").
Avatar billede krogstrup Nybegynder
21. august 2001 - 11:04 #4
lange >>>

Det lyder godt - men mit problem er jo at begge tabeller indeholdet et felt med navnet \"name\" - Derfor er jeg nødt til at definere fra hvilken tabel jeg ønsker feltet \"name\" !!!
Avatar billede krogstrup Nybegynder
21. august 2001 - 11:05 #5
Hvis jeg skriver rs(\"name\") bliver værdien nemlig taget fra tabellen \"krydsRef\", men jeg ønsker værdierne fra tabellen \"subGroups\" !!!
Avatar billede lange Nybegynder
21. august 2001 - 11:23 #6
Så kan du \"omdøbe\" felterne i din SQL-query:

<% strSQL = \"SELECT krydsRef.name AS krydsRefName, subGroups.name as subGroupsName, * FROM krydsRef,subGroups WHERE (krydsRef.sID = \" & subID & \") AND (krydsRef.sID = subGroups.ID)\" %>

så kan du hente dem med hhv rs(\"krydsRefName\") og rs (\"subGroupsName\")
Avatar billede krogstrup Nybegynder
21. august 2001 - 11:27 #7
ok - det lyder fint !

Men er der ikke noget alternativ ? Er det ikke muligt at lave en direkte reference til name i subGroups ?

f.eks. rs.subGroups(\"name\") ????
Avatar billede krogstrup Nybegynder
21. august 2001 - 11:46 #8
Har fået det til at virke nu - men er stadig meget interesseret i at høre om der findes en direkte måde at referere til et felt i en bestemt tabel ???
Avatar billede lange Nybegynder
21. august 2001 - 11:56 #9
Det er der ikke, ganske enkelt fordi din SQL-sætning kombinerer resultatet til een table, set fra ADO\'s side. Dvs subGroups og krydsRef eksisterer ikke for recordsettet, kun een table med det samlede resultat.

...vistnok :)
Avatar billede krogstrup Nybegynder
21. august 2001 - 11:58 #10
ok - den køber jeg :-)
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