Avatar billede harryfink Praktikant
22. oktober 2006 - 02:07 Der er 10 kommentarer og
1 løsning

To felter med samme navn i Access Query

Hej,

Jeg har lavet en query/forespørgsel i Access, der fungerer fint, men jeg kan ikke finde koden til at lokalisere et specifikt felt, når der er to, der hedder det samme.

Altså:

- Jeg har både "exhib.id" og "fotos.id" i query'en.

- Når jeg skriver rs("id") får jeg værdien af "fotos.id".

Men når jeg skriver rs("exhib.id") skriver IIS: "Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal."

Hvad skal jeg skrive istedet for "exhib.id", så jeg får den værdien af det felt?

På forhånd mange tak!

Mikkel :)
Avatar billede Slettet bruger
22. oktober 2006 - 02:14 #1
tjae... det er et godt spørgsmål.

- kan du ikke prøve at smide din kode herinde også?

så kan jeg måske hjælpe dig.

\Dan
Avatar billede harryfink Praktikant
22. oktober 2006 - 02:18 #2
Jo da! :)

----------
<%
strQuery = "SELECT * FROM exhibsigpic ORDER BY titel"
%>
...
<a href="exhib_view.asp?id=<%=rs("id")%>">View this exhibition</a>
----------

exhibsigpic er query'en, der så indeholder bl.a. felterne exhib.id, fotos.id, titel, osv.
Avatar billede harryfink Praktikant
22. oktober 2006 - 02:20 #3
Meget mystisk: I en anden kode virker det fint at skrive "exhib.titel"!

Som her: <p>exhibition: <%=rs("exhib.titel")%></p>

Fatter slet ikke hvad forskellen er!
Avatar billede harryfink Praktikant
22. oktober 2006 - 02:23 #4
Hmmmm... Fandt ud af, at det ikke var nødvendigt at have begge id'er med, så jeg kunne slette fotos.id, og så virker det jo med bare "id"...

Så nu virker det principielt, men fatter stadig ikke hvorfor det kun virker nogen gange!
Avatar billede tofferman Nybegynder
22. oktober 2006 - 03:03 #5
I din sql-forespørgsel skal du pege specifikt på, hvilken tabel du vil have værdien fra.
Du kan f.eks. gøre det sådan her:

SELECT fotos.id AS id1, exhib.id AS id2;

Og så kan du kalde hhv. rs("id1") og rs("id2)
Avatar billede tofferman Nybegynder
22. oktober 2006 - 03:05 #6
Det var egentlig et svar, for det er den eneste rigtige måde du kan gøre det på, hvis du har felter med ens navne fra flere tabeller i din query.
Avatar billede harryfink Praktikant
22. oktober 2006 - 13:20 #7
Ah okay! Fedt, tak! :) Kan du dog forklare mig hvorfor det andetsteds virkede med "exhib.titel"? Virker inkonsekvent at det virker det ene sted og ikke det andet...

Men du får points i hvert fald! Tak for hjælpen! :)
Avatar billede montago Praktikant
23. oktober 2006 - 16:01 #8
Svaret på spørgsmålet er :

Når man bygger SQL'en bruger man Tabel.kollonnenavn så SQL motoren kan finde rundt i tabellerne... men når man henter dem ud, fjernes Tabel navnet... man skal bruge Alias i stedet dvs

Select A.id as A_ID, B.id as B_ID from TabelA A, TabelB B

på den måde kan man hente A_ID uden problemer

skal også bruges i avancerede sub-selects
Avatar billede harryfink Praktikant
24. oktober 2006 - 01:01 #9
Okay, så grunden til at "<p>exhibition: <%=rs("exhib.titel")%></p>" virkede var, at der ikke var andre, der hed "titel" eller hvad? :)
Avatar billede ldanielsen Nybegynder
26. oktober 2006 - 14:09 #10
En parentes:

(
Man kan også henvise til felterne med index:

Select Felt1, felt2 FROM Tabel

rs(0) er så det samme som rs("Felt1")
rs(1) er det samme som rs("Felt2")
)
Avatar billede tofferman Nybegynder
05. november 2006 - 12:34 #11
Tak for point :)
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