|
| Kan ikke hente Id Fra : Plato |
Dato : 20-02-05 10:31 |
|
Hejsa NG.
Jeg har et lille problem med den ASP kode.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Application("Provider")
strSQL = "SELECT Trailer.Id, Trailer.Titel, TrailerDetail.* FROM
TrailerDetail INNER JOIN Trailer ON TrailerDetail.Id = Trailer.Id WHERE
Skuespiller LIKE '%" & navn & "%' ORDER BY Trailer.Titel"
Set rs = objConn.Execute(strSQL)
Do While Not rs.EOF
Id = rs("Id")
Titel = rs("Titel")
%>
<a href="showmovie.asp?id=<%=Id%>"><%=Titel%></a>,
<%
rs.movenext
loop
end if
%><br><br>
Den siger hele tiden til mig at "Item cannot be found bla bla bla" og den
giver
Id = rs("Id")
skylden.
Nogle gode idéer?
-- / På forhånd tak...Rasmus
| |
Casper Bang (20-02-2005)
| Kommentar Fra : Casper Bang |
Dato : 20-02-05 10:47 |
|
> Set Conn = Server.CreateObject("ADODB.Connection")
> Conn.Open Application("Provider")
' ...
> Set rs = objConn.Execute(strSQL)
det er Conn du åbner, så Conn du skal åbne rs med.
> Den siger hele tiden til mig at "Item cannot be found bla bla bla" og den
> giver
Næste gang, copy/paste hele fejlmeddelelsen... det er nemmere at fejlfinde
hvis vi har den.
| |
Plato (20-02-2005)
| Kommentar Fra : Plato |
Dato : 20-02-05 11:20 |
|
> det er Conn du åbner, så Conn du skal åbne rs med.
> Næste gang, copy/paste hele fejlmeddelelsen... det er nemmere at fejlfinde
> hvis vi har den.
>
Dette er fejlmeddelsen:
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name
or ordinal.
/actors.asp, line 626
Hvad mener du med Conn?
-- / Rasmus
| |
Lars Hoffmann (20-02-2005)
| Kommentar Fra : Lars Hoffmann |
Dato : 20-02-05 11:38 |
|
Casper Bang wrote:
>>Set Conn = Server.CreateObject("ADODB.Connection")
>>Conn.Open Application("Provider")
>
> ' ...
>
>>Set rs = objConn.Execute(strSQL)
>
>
> det er Conn du åbner, så Conn du skal åbne rs med.
Det gør han også, men istedet for at bruge rs.open(), kan man bruge execute
metoden fra connection objected, der giver et recordset som returværdi. Så det
er ikke her fejlen ligger.
> Næste gang, copy/paste hele fejlmeddelelsen... det er nemmere at fejlfinde
> hvis vi har den.
korrekt, og hvis man også angiver hvilken linie det er der svarer til den der
giver fejl, ville det være helt super.
Med venlig hilsen
Lars Hoffmann
| |
Casper Bang (20-02-2005)
| Kommentar Fra : Casper Bang |
Dato : 20-02-05 13:55 |
|
>>>Conn.Open Application("Provider")
>>
>> ' ...
>>
>>>Set rs = objConn.Execute(strSQL)
>>
>>
>> det er Conn du åbner, så Conn du skal åbne rs med.
>
> Det gør han også, men istedet for at bruge rs.open(), kan man bruge
> execute metoden fra connection objected, der giver et recordset som
> returværdi. Så det er ikke her fejlen ligger.
Nej, det gør han ikke :)
Han har sin connection i "Conn", men har bruger "objConn" som må være en
helt anden variabel, til at eksekvere SQLen.
| |
Lars Hoffmann (20-02-2005)
| Kommentar Fra : Lars Hoffmann |
Dato : 20-02-05 14:52 |
|
Casper Bang wrote:
> Nej, det gør han ikke :)
> Han har sin connection i "Conn", men har bruger "objConn" som må være en
> helt anden variabel, til at eksekvere SQLen.
Jamen det har du jo helt ret i den havde jeg ikke lige set.
| |
Lars Hoffmann (20-02-2005)
| Kommentar Fra : Lars Hoffmann |
Dato : 20-02-05 11:36 |
|
Plato wrote:
> strSQL = "SELECT Trailer.Id, Trailer.Titel, TrailerDetail.* FROM
> TrailerDetail INNER JOIN Trailer ON TrailerDetail.Id = Trailer.Id WHERE
> Skuespiller LIKE '%" & navn & "%' ORDER BY Trailer.Titel"
>
> Set rs = objConn.Execute(strSQL)
> Do While Not rs.EOF
>
> Id = rs("Id")
Prøv at give den et alias:
SELECT Trailer.Id as idTrailer, Trailer.Titel, .....
og når du så kalder dit recordset, bruger du aliasset:
rs.fields("idTrailer")
problemet ligger formentligt i at du bruger TrailerDetail.* (fy!) og at du
også har et id felt i TrailerDetail
Med venlig hilsen
Lars Hoffmann
| |
Plato (20-02-2005)
| Kommentar Fra : Plato |
Dato : 20-02-05 11:51 |
|
> SELECT Trailer.Id as idTrailer, Trailer.Titel, .....
>
> og når du så kalder dit recordset, bruger du aliasset:
>
> rs.fields("idTrailer")
Tusind Tak! Det løste mit problem.
> problemet ligger formentligt i at du bruger TrailerDetail.* (fy!) og at du
> også har et id felt i TrailerDetail
Hvorfor fy? Hvis jeg nu skal bruge alt i TrailerDetail nøjes jeg bare med
stjerne. ;)
Anyways, nu har jeg sparet masser af arbejde pga. dette lille stykke kode.
:)
--/ Rasmus
| |
Lars Hoffmann (20-02-2005)
| Kommentar Fra : Lars Hoffmann |
Dato : 20-02-05 11:56 |
|
Plato wrote:
> Hvorfor fy?
Det er fyfy at bruge * af to grunde:
1) Der opstår den slags prblemer som du netop har haft fordi det ikke er klart
hvilke navne felterne man trækker ud af databasen har. Forstil dig at du om 2
år skal vedligeholde koden. Du bliver nu nød til at gå ind i databasen for at
tjekke hvilke felter du hiver ud med *.
2) Når du en dag ændrer i databasedesignet (hvis du f.eks tilføjer et felt).
Opstår der nemt problemer hvis du i forskellige queries har brugt *. Du bliver
derfor nød til at tjekke dem alle for at se om de nu hiver de korrekte felter ud.
At specificere hver enkelt felt (også selvom du bruger dem alle)
fremtidssikrer din kode og gør at den kan læses og forstås uden at skulle ind
og kigge i databasen.
Med venlig hilsen
Lars Hoffmann
| |
Plato (20-02-2005)
| Kommentar Fra : Plato |
Dato : 20-02-05 11:59 |
|
> At specificere hver enkelt felt (også selvom du bruger dem alle)
> fremtidssikrer din kode og gør at den kan læses og forstås uden at skulle
> ind og kigge i databasen.
Det havde jeg ikke lige tænkt over.
Det er taget til efterretning. (-:
God weekend!
| |
|
|