/ 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
Lidt hjælp
Fra : Jesper Kristoffersen


Dato : 04-03-03 21:58

Hvad er det jeg gør når jeg sender data fra en form videre til et nyt asp
dokument men ønsker at dataen skal laves om til tekst?

Hvis f.eks. er sender en int laves den om til tekst.

Tak



 
 
Jesper Kristoffersen (04-03-2003)
Kommentar
Fra : Jesper Kristoffersen


Dato : 04-03-03 22:20

> Hvad er det jeg gør når jeg sender data fra en form videre til et nyt asp
> dokument men ønsker at dataen skal laves om til tekst?
>
> Hvis f.eks. er sender en int laves den om til tekst.
>
> Tak

Viser lige fejlen og koden, det kan måske hjælpe lidt.

------------
Error Type:
(0x80020009)
Exception occurred.
/test.asp, line 38
------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>

<head>
<title>Hallo</title>
<link rel="stylesheet" href="../style.css" type="text/css">
</head>

<body>

<%
' 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("bh.mdb")
Conn.Open DSN

' SQL sætning opbygges

strEmail = Request.Form("email")
strEmail = Replace(strEmail, "'", "''")

strSQL = "Select * from bruger where email = ('" &
Request.Querystring(strEmail)&"')"

' SQL sætning eksekveres
Set rs = Conn.Execute(strSQL)

Do

' Udskriv værdien af kolonnen Fornavn
Response.Write rs("Fornavn") & " " & rs("efternavn") & "<br>"


' Gå til næste Record i rs
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

</body>
</html>



Jens Gyldenkærne Cla~ (04-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-03-03 22:47

Jesper Kristoffersen skrev:

>> Hvad er det jeg gør når jeg sender data fra en form videre
>> til et nyt asp dokument men ønsker at dataen skal laves om
>> til tekst?

Generelt kan du bruge funktionen CStr(x) til at konvertere x til en
streng.

> Viser lige fejlen og koden, det kan måske hjælpe lidt.

God ide ;)

> Exception occurred.
> /test.asp, line 38

Det ville så være en endnu større hjælp hvis du havde fortalt
hvilken linje der var nr. 38.

> strEmail = Request.Form("email")
> strEmail = Replace(strEmail, "'", "''")

Det her ser meget fornuftigt ud.

> strSQL = "Select * from bruger where email = ('" &
> Request.Querystring(strEmail)&"')"

Men ovenstående er forkert - så vidt jeg kan bedømme i al fald.
Først henter du en mailadresse med Request.Form. Efter at have
sikret mod anførselstegnsfejl bruger du så værdien til at hente fra
Request.Querystring. Jeg vil tro at request.querystring helt skal
fjernes fra linjen herover.

> Do

[løkke]

> Loop While Not rs.EOF

Ovenstående er en dårlig måde at skrive en databaseløkke på. Hvis
postsættet i rs er tomt kommer du stadig løkken igennem én gang -
og det vil give fejl når du forsøger at udskrive data fra rs.

Flyt betingelsen (While Not rs.EOF) op til Do:

   Do While Not rs.EOF

   [løkke]

   Loop
--
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

Jesper Kristoffersen (04-03-2003)
Kommentar
Fra : Jesper Kristoffersen


Dato : 04-03-03 23:29

> > strSQL = "Select * from bruger where email = ('" &
> > Request.Querystring(strEmail)&"')"
>
> Men ovenstående er forkert - så vidt jeg kan bedømme i al fald.
> Først henter du en mailadresse med Request.Form. Efter at have
> sikret mod anførselstegnsfejl bruger du så værdien til at hente fra
> Request.Querystring. Jeg vil tro at request.querystring helt skal
> fjernes fra linjen herover.

Selvfølgelig

> Do While Not rs.EOF
>
> [løkke]
>
> Loop

Er også ordnet og kører fint nu.

Mit problem er nu:

Nedenstående side henter en email addresse fra en anden side via post
metoden.

Email addressen skal så sættes ind i koden så et brugernavn og password kan
sendes til brugeren hvis han/hun har glemt det.

Vi starter med blot at sende en mail til brugeren. Brugernavn mm. kan jeg
selv ordne senere.

Nedenstående kode giver denne fejl:

-----------------------------
The event class for this subscription is in an invalid partition
-----------------------------

det er i 7. sidste linie hvor der står:

----------------------------
..Send
End With
----------------------------

Der hvor jeg sætter modtager addressen " .To = """Jakob Andersen""
<email>"" hvordan får jeg email addressen jeg netop har hentet med post
metoden ind? Det er vel ikke nok at skrive email?

Har du en løsning på det her?

Tusind tak

<%
' 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("bh.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * from bruger where email = ('" &
Request.Form("email")&"')"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do While Not rs.EOF

' Udskriv værdien af kolonnen Fornavn
Response.Write rs("Fornavn") & "<br>"

' Gå til næste Record i rs
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

'Vi definerer message objektet
Dim objMsg
Set objMsg = Server.CreateObject("CDO.Message")

'Vi definerer Konfigurationsobjektet som indeholder
'oplysninger om f.eks. mailserver
Dim objConf
Set objConf = Server.CreateObject("CDO.Configuration")

'Vi læser alle indstillingerne fra konfigurationsobjektet over i
'en collection
Dim ConfFields
Set ConfFields = objConf.Fields

With ConfFields

'Her specificeres hvordan mailen sendes. Vi vælger 2 for at sende igennem en
port og ikke f.eks. exchange
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'Her specificeres SMTPserverens navn
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") =
"smtp.mail.dk"

'Her specificeres timeoutlængden til SMTPserveren

..Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
) = 10 ' Hurtig timeout
.Update
End With

With objMsg

' Vi sætter nu Configuration parametren på message objectet lig med
voreskonfigurations objekt
Set .Configuration = objConf

'Vi sætter modtageren
.To = """Jakob Andersen"" <email>"

'Vi sætter afsenderen
.From = """En adresse"" <jk@jk.dk>"

'Vi sætter emnet
.Subject = "Dette er emnet"

.Send
End With

Set objConf = Nothing
Set objMsg = Nothing

%>



Jens Gyldenkærne Cla~ (04-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 04-03-03 23:49

Jesper Kristoffersen skrev:

> -----------------------------
> The event class for this subscription is in an invalid
> partition
> -----------------------------

Jeg vil tro at fejlen kommer fordi du har en ugyldig mailadresse.
Prøv at teste med en gyldig mailadresse i stedet for <email>.

> Der hvor jeg sætter modtager addressen " .To = """Jakob
> Andersen"" <email>"" hvordan får jeg email addressen jeg netop
> har hentet med post metoden ind? Det er vel ikke nok at skrive
> email?

Strengsammensætning med &:


' Hvis du kun kender mailadressen:
.To = strEmail

' Både navn og adresse:
.To = """" & strNavn & """ <" & strEmail & ">"

' Man kan nemt løbe sur i indkapslede anførselstegn.
' Hvis der er noget der ikke virker, så udskriv værdien til
' skærmen


NB: Det er ikke nødvendigt at sende hele din kode med - du kan
nøjes med de linjer der volder problemer, så er det hurtigere at
læse.
--
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

Jesper Kristoffersen (05-03-2003)
Kommentar
Fra : Jesper Kristoffersen


Dato : 05-03-03 09:12

Jeg får en fejl i koden her:

strEmail = Request.Form("email")
strEmail = Replace(strEmail, "'", "''")

strSQL = "Select * from bruger where email =" &strEmail &
Set rs = Conn.Execute(strSQL)

Det er i strSQL linien. Men jeg kan ikke huske syntaksen.

> ' Både navn og adresse:
> .To = """" & strNavn & """ <" & strEmail & ">"

Ok. Men det er jo kun email jeg har hentet fra den forrige side. Navn henter
jeg fra min DB, men er det stadig ovenstående syntaks så? Mit problem er at
når jeg sender mailen står e-mail addressen godt men i ".TO" står følgende
navn &strNavn&

> NB: Det er ikke nødvendigt at sende hele din kode med - du kan
> nøjes med de linjer der volder problemer, så er det hurtigere at
> læse.

Ok. Tak



Jens Gyldenkærne Cla~ (05-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-03-03 14:47

Jesper Kristoffersen skrev:

> strSQL = "Select * from bruger where email =" &strEmail &

Der skal anførselstegn om tekstværdien:

strSQL = "Select * from bruger where email ='" &strEmail & "'"


> Det er i strSQL linien. Men jeg kan ikke huske syntaksen.

- husk i øvrigt siden her: <http://asp-faq.dk/article/?id=41>.
Fejlmeddelelsen er essentiel for at kunne hjælpe - ligesom den kode
der frembringer den er. I tilfælde hvor det er et databasekald der
fejler (rs.Open xxx eller Conn.Execute xxx) er det vigtigt at få
sql-teksten skrevet ud, efter alle variabelerstatninger. Metoden er
beskrevet på ovenstående link.

>> ' Både navn og adresse:
>> .To = """" & strNavn & """ <" & strEmail & ">"
>
> Ok. Men det er jo kun email jeg har hentet fra den forrige
> side. Navn henter jeg fra min DB, men er det stadig
> ovenstående syntaks så?

strNavn og strEmail er blot (forslag til) variabelnavne. Om du
henter indholdet fra en database eller fra foregående side er
underordnet:

   strNavn = rs("navn")
   strEmail = Replace(Request.Form("email"), "'", "''")


> Mit problem er at når jeg sender
> mailen står e-mail addressen godt men i ".TO" står følgende
> navn &strNavn&

Så har du tilsyneladende placeret et anførselstegn forkert. Men
husk at du ikke skal bruge strNavn hvis du ikke putter noget i den.
Jeg gav vist også et eksempel hvor det kun var mailadressen man
brugte (ellers er det blot ".To = strEmail")

NB: Noget tyder på at du ikke bruger Option Explicit. Det kan du
med fordel gøre: <http://asp-faq.dk/article/?id=9>.
--
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 : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste