/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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!



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste