/ 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
Problemer med at linke fra Access DB.
Fra : Bo Hedegaard


Dato : 20-10-02 20:44

Hej Alle.
Jeg har et problem med at få et output fra link.asp til emne.asp.
Er der en som kan se hvad der går galt ?,
Jeg har lige klistret koderne med

DB hedder products og indeholder følgende kolonner :
maingroup , secondgroup , art_no , item , text , price , weight , image

Mvh Bo Hedegaard.




link.asp

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("midicart.mdb")
Conn.Open DSN

strSQL = "Select * From products Order by art_no Desc"
Set rs = Conn.Execute(strSQL)

Do
' Beskrivelse
strNavn = rs("maingroup") & " " & rs("secondgroup")

' lav et link til emne.asp med Id-værdien i URL
strLink = "<a href='emne.asp?id=" & rs("art_no") & "'>" & strNavn &
"</a>"

' Liste med links
Response.Write "<li>" & strLink & "</li>"

rs.MoveNext
Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing
%>





emne.asp

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("midicart.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From products Where Id = " & Request.Querystring("Id")
Set rs = Conn.Execute(strSQL)

' data
Response.Write "<dt>beskrivelse.:</dt><dd>" & rs("maingroup") & " " &
rs("secondgroup") & "</dd>"
Response.Write "<dt>text:</dt><dd>" & rs("item") & "</dd>"

Conn.Close
Set Conn = Nothing
%>



 
 
Jens Gyldenkærne Cla~ (20-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-10-02 21:21

Bo Hedegaard skrev:

> Jeg har et problem med at få et output fra link.asp til
> emne.asp. Er der en som kan se hvad der går galt ?,

Hvor går det galt? Virker emne.asp korrekt (viser den et noget
fornuftigt hvis du kalder den manuelt med fx "emne.asp?id=12" ?)
Virker link.asp korrekt - får du udskrevet links på den form der
passer til emne.asp?

Du får lige et par generelle kommentarer til din kode med herunder:

> Do
....
> Loop While Not rs.EOF

Denne måde at skrive en løkke på kan give problemer hvis du har
(eller på et tidspunkt får) et tomt postsæt. Løkken løbes altid
igennem mindst én gang - og hvis du forsøger at kalde egenskaber
(felter) fra et tomt postsæt får du en fejl.

Brug i stedet

| Do While Not rs.EOF
| ...
| Loop

eller blot:

| While Not rs.EOF
| ...
| Wend

> strSQL = "Select * From products Where Id = " &
> Request.Querystring("Id")

Hvis emne.asp kaldes uden parameteren id får du en ugyldig
sqlsætning - og dermed en aspfejl. Det er en god ide at tjekke de
ting man vil sende videre til en database, _før_ selve
databasekaldet. Det kan fx være noget i retning af:

myID = Request.Querystring("Id")
If IsNumric(myID) Then
   ' Forsæt normalt
Else
   ' Fejlhåndtering - fx response.redirect "fejl.html"
End If



> Set rs = Conn.Execute(strSQL)

> Response.Write "<dt>beskrivelse.:</dt><dd>" & rs("maingroup")

Her tjekker du ikke om der rent faktisk er fundet en post. Det
giver igen fejl hvis emne.asp kaldes med et ikke-eksisterende id.

> Conn.Close
> Set Conn = Nothing

Hvis du vil rydde pænt op skal du også lukke og deallokere rs:

| rs.close
| set rs = nothing
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Bo Hedegaard (22-10-2002)
Kommentar
Fra : Bo Hedegaard


Dato : 22-10-02 15:04

Hej Jens
Sorry, det var en fejl
Tak for dit svar, men det virker stadig ikke !
Jeg får en fejlmedd på emne.asp siden. (Der er en syntaksfejl, fordi der
mangler en operator. i forespørgselsudtrykket "id =".)
Kan man få noget ud af det ?

Mvh Bo hedegaard
www.sojo.dk

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns92ADE34D23E6Ejcdmfdk@127.0.0.1...
> Bo Hedegaard skrev:
>
> > Jeg har et problem med at få et output fra link.asp til
> > emne.asp. Er der en som kan se hvad der går galt ?,
>
> Hvor går det galt? Virker emne.asp korrekt (viser den et noget
> fornuftigt hvis du kalder den manuelt med fx "emne.asp?id=12" ?)
> Virker link.asp korrekt - får du udskrevet links på den form der
> passer til emne.asp?
>
> Du får lige et par generelle kommentarer til din kode med herunder:
>
> > Do
> ...
> > Loop While Not rs.EOF
>
> Denne måde at skrive en løkke på kan give problemer hvis du har
> (eller på et tidspunkt får) et tomt postsæt. Løkken løbes altid
> igennem mindst én gang - og hvis du forsøger at kalde egenskaber
> (felter) fra et tomt postsæt får du en fejl.
>
> Brug i stedet
>
> | Do While Not rs.EOF
> | ...
> | Loop
>
> eller blot:
>
> | While Not rs.EOF
> | ...
> | Wend
>
> > strSQL = "Select * From products Where Id = " &
> > Request.Querystring("Id")
>
> Hvis emne.asp kaldes uden parameteren id får du en ugyldig
> sqlsætning - og dermed en aspfejl. Det er en god ide at tjekke de
> ting man vil sende videre til en database, _før_ selve
> databasekaldet. Det kan fx være noget i retning af:
>
> myID = Request.Querystring("Id")
> If IsNumric(myID) Then
> ' Forsæt normalt
> Else
> ' Fejlhåndtering - fx response.redirect "fejl.html"
> End If
>
>
>
> > Set rs = Conn.Execute(strSQL)
>
> > Response.Write "<dt>beskrivelse.:</dt><dd>" & rs("maingroup")
>
> Her tjekker du ikke om der rent faktisk er fundet en post. Det
> giver igen fejl hvis emne.asp kaldes med et ikke-eksisterende id.
>
> > Conn.Close
> > Set Conn = Nothing
>
> Hvis du vil rydde pænt op skal du også lukke og deallokere rs:
>
> | rs.close
> | set rs = nothing
> --
> Jens Gyldenkærne Clausen
> MF (medlem af FIDUSO - www.fiduso.dk)
> I ovenstående tekst benyttes nyt komma.



Jens Gyldenkærne Cla~ (22-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-10-02 16:14

Bo Hedegaard skrev:

> Tak for dit svar, men det virker stadig ikke !
> Jeg får en fejlmedd på emne.asp siden. (Der er en syntaksfejl,
> fordi der mangler en operator. i forespørgselsudtrykket "id
> =".) Kan man få noget ud af det ?

Udtrykket er "id = ". Der mangler noget på højre side af
lighedstegnet. Et lighedstegn kræver (som mange andre operatorer -
fx "<", ">", "<>" etc) noget på begge sider.

Formentlig får du ikke hevet et id med over til siden.
Husk at der er forskel på hvordan det gøres, afhængig af om du
benytter post eller get som form-metode.

En get-formular sender parametre via URI'en - fx kan
emne.asp?id=234 være den resulterende URI fra en get-form med
elementet id. Hvis du blot skal teste emne.asp - og det er den fil
der fejler - så kan du give den en id-parameter ved selv at tilføje
"?id=4" i adresselinjen i din browser.

Du får fat i værdien med Request.Querystring("id")

PS: Tag lige et kig på min signatur.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste