21. august 2001 - 10:23Der 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 %>
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 !!!
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).
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\").
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\" !!!
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.
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.