Avatar billede smidt Novice
02. juli 2001 - 16:10 Der er 19 kommentarer og
1 løsning

Optimering af kode

Her har jeg noget rodet kode som der er en fejl:

Variable is undefined: \'conn\'

/mail/spaw1.asp, line 27


<% @LANGUAGE = VBScript %>
<% Option Explicit %>
<html>
<head>
<title>xxx</title>
</head>
<body bgcolor=#ffffff>
<%
Dim strName, strEmail, strQuery, strAdresse, strBy, strTlf, strTlfArbejde, strSagsnr, strSalgsopstilling, strArcrive 
strName = Trim(Request.Form(\"ClientName\"))
strAdresse = Trim(Request.Form(\"ClientAdresse\"))
strBy = Trim(Request.Form(\"ClientBy\"))
strTlf = Trim(Request.Form(\"ClientTlf\"))
strTlfArbejde = Trim(Request.Form(\"ClientTlfArbejde\"))
strEmail = Trim(Request.Form(\"ClientEmail\"))
strQuery = Trim(Request.Form(\"ClientQry\"))
strSagsnr  = Trim(Request.Form(\"ClientSagsnr\"))
strSalgsopstilling  = Trim(Request.Form(\"ClientSalgsopstilling\"))
strArcrive = Trim(Request.Form(\"ClientArcrive\"))


If (strName <> \"\") Then
    Dim objMail, aRecipients
   
    if strArcrive = \"1\" then

set conn=Server.CreateObject(\"ADODB.Connection\")
conn.Provider=\"Microsoft.Jet.OLEDB.4.0\"
conn.Open(Server.Mappath(\"SpawnedMailer.mdb\"))

set rsMail = Server.CreateObject(\"ADODB.recordset\")
rsMail.Open \"SELECT * FROM MailingList WHERE MailingAddy=\'\" & strEmail & \"\'\", conn

    If not rsMail.EOF Then
        If rsMail(\"MailingAddy\") = strEmail Then

    End if
       
    Else

        ArchiveSQL = \"INSERT into MailingList (MailingAddy) VALUES (\'\" & strEmail & \"\');\"
        conn.Execute ArchiveSQL
       
    end if
   
rsMail.close
conn.close

end if

   
    Set objMail = Server.CreateObject(\"CDONTS.NewMail\")
    objMail.From = \"11@11.dk\"
    objMail.To = strEmail
    objMail.Subject = \"ddd! \"
    objMail.AttachFile Server.MapPath (strSalgsopstilling)
    objMail.Body = \"!!!!  \"
    objMail.Send

   
    Response.Write \"Tak for din bestilling !  \" & strName
    Set objMail = Nothing
   
Else
%>

<FORM ACTION=\"<%=Request.ServerVariables(\"SCRIPT_NAME\")%>\" METHOD=POST>
<div align=\"center\">
  <center>
<TABLE BORDER=0 width=\"550\">
<tr><td width=\"530\" colspan=\"6\">Du har valgt at bestille en sag på :</td></tr>
  </center>
<tr><td width=\"102\" colspan=\"2\">
  </td>
<td width=\"428\" colspan=\"4\"></td></tr>
<tr><td width=\"102\" colspan=\"2\">
  </td>
<td width=\"428\" colspan=\"4\"></td></tr>
<tr><td width=\"102\" colspan=\"2\" align=\"right\">
    <p align=\"right\"></td>
  <center>
<td width=\"95\" align=\"right\"><b>Sagsnr</b>:</td>
<td width=\"333\" colspan=\"3\"><input type=\"text\" name=\"ClientSagsnr\" size=\"12\" value=\"<%=request.querystring(\"Sagsnr\")%>\" style=\"font-weight: bold; border-style: solid; border-color: #FFFFFF\"></td></tr>
  </center>
<tr><td width=\"102\" colspan=\"2\" align=\"right\">
    <p align=\"right\"></td>
  <center>
<td width=\"96\" align=\"right\"><b>Beliggenhed</b>:</td>
<td width=\"333\" colspan=\"3\"><input type=\"text\" name=\"ClientBeliggenhed\" size=\"39\" value=\"<%=request.querystring(\"Beliggenhed\")%>\" style=\"font-weight: bold; border-style: solid; border-color: #FFFFFF\"></td></tr>
<tr><td width=\"91\"></td><td width=\"11\"></td><td width=\"428\" colspan=\"4\"></td></tr>
<tr><td width=\"530\" colspan=\"6\">
  </td></tr>
<tr><td width=\"530\" colspan=\"6\">
  </td></tr>
<tr><td width=\"530\" colspan=\"6\">
  </td></tr>
<tr><td width=\"530\" colspan=\"6\">
  </td></tr>
<tr><td width=\"530\" colspan=\"6\">
          Når din bestilling er sendt, får du øjeblikkelig salgsopstillingen
          på din e-mail.<br>
          sagen sendes i PDF-format <input type=\"HIDDEN\" name=\"ClientSalgsopstilling\" size=\"9\" value=\"<%=request.querystring(\"Salgsopstilling\")%>\" style=\"font-size: 8 pt; border-style: solid\"></td></tr>
<tr><td width=\"530\" colspan=\"6\"></td></tr>
<tr><td width=\"530\" colspan=\"6\"></td></tr>
<tr><td width=\"530\" colspan=\"6\"></td></tr>
<tr><td width=\"530\" colspan=\"6\"></td></tr>
<tr><td width=\"530\" colspan=\"6\">
          sagen skal sendes til :</td></tr>
<tr><td width=\"91\">Navn:</td><td width=\"11\"><img border=\"0\" src=\"../images/stjerne.gif\" width=\"10\" height=\"10\"></td><td width=\"428\" colspan=\"4\"><INPUT NAME=\"ClientName\" VALUE=\"\" SIZE=57 tabindex=\"1\"></td></tr>
<tr><td width=\"91\">Adresse:</td><td width=\"11\"><img border=\"0\" src=\"../images/stjerne.gif\" width=\"10\" height=\"10\"></td><td width=\"428\" colspan=\"4\"><input type=\"text\" name=\"ClientAdresse\" size=\"57\" tabindex=\"2\"></td></tr>
<tr><td width=\"91\">Postnr. og by:</td><td width=\"11\"><img border=\"0\" src=\"../images/stjerne.gif\" width=\"10\" height=\"10\"></td><td width=\"428\" colspan=\"4\"><input type=\"text\" name=\"ClientBy\" size=\"57\" tabindex=\"3\"></td></tr>
<tr>
  <td width=\"91\">Tlf:</td><td width=\"11\"></td><td width=\"428\" colspan=\"4\"><input type=\"text\" name=\"ClientTlf\" size=\"18\" tabindex=\"4\">Tlf (arbejde/mobil):<input type=\"text\" name=\"ClientTlfArbejde\" size=\"20\" tabindex=\"5\"></td>
</tr>
<tr><td width=\"91\">e-mail adresse</td><td width=\"11\"></td><td width=\"428\" colspan=\"4\"><INPUT NAME=\"ClientEmail\" SIZE=57 tabindex=\"6\"></td></tr>
<tr><td width=\"91\"></td><td width=\"11\"></td>
  </center>
  <td width=\"428\" colspan=\"4\">
    <p align=\"left\">Få automatisk opdatering og nyhedsbrev
    tilsendt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ja<input type=\"radio\" value=\"1\" checked name=\"ClientArcrive\">&nbsp;&nbsp;&nbsp;&nbsp;
    Nej<input type=\"radio\" name=\"ClientArcrive\" value=\"0\"></td></tr>
  <center>
<tr><td width=\"91\"></td><td width=\"11\"></td><td width=\"94\"></td><td width=\"90\"></td><td width=\"16\"></td><td width=\"220\"></td></tr>
<tr><td width=\"91\"></td><td width=\"11\"></td><td width=\"94\"><INPUT TYPE=SUBMIT VALUE=\"Send\" tabindex=\"7\"></td><td width=\"90\"></td><td width=\"16\"><img border=\"0\" src=\"../images/stjerne.gif\" width=\"10\" height=\"10\" align=\"right\"></td><td width=\"220\">skal
    udfyldes</td></tr>
<tr><td width=\"302\" colspan=\"5\"></td><td width=\"220\"></td></tr>
<tr><td width=\"302\" colspan=\"5\"></td><td width=\"220\"></td></tr>
<tr><td width=\"522\" colspan=\"6\">
          Hvis du ikke udfylder feltet e-mail&nbsp; eller ikke har har e-mail,
        vil&nbsp; sagen blive tilsendt pr. post.</td></tr>
<tr><td width=\"522\" colspan=\"6\"></td></tr>
</TABLE>
  </center>
</div>
</FORM>

<% End If %>


<div align=\"center\">
  <center>
    <table border=\"0\" cellspacing=\"1\" width=\"550\">
      <tr>
        <td width=\"495\" height=\"77\">
          <p style=\"word-spacing: 0; margin: 0\">xx
          <p style=\"word-spacing: 0; margin: 0\"><br>
          For at kunne læse salgsopstillingen via e-mail, skal du have
          installeret Acrobat Reader 4.0 på din maskine. Har du ikke Acrobat
          Reader installeret, kan du hente programmet gratis her på siden, ved
          at klikke på ikonet. Programmet skal kun hentes og installeres én
          gang.<br>
          &nbsp;
          </td>
        </tr>
      <tr>
        <td width=\"495\" height=\"77\" valign=\"top\">
        <p align=\"center\"><a href=\"http://www.adobe.dk/adobe\" target=\"_blank\"><img src=\"../images/getacro.gif\" border=\"0\"></a>
          </td>
        </tr>
      </table>
  </center>
</div>


</body>
</html>
Avatar billede minijensen1 Nybegynder
02. juli 2001 - 16:12 #1
Skal du ikke dimme din conn, rsMail og ArchiveSQL?
Avatar billede bjarke-b Nybegynder
02. juli 2001 - 16:13 #2
Fjern <% Option Explicit %>
Avatar billede johannielsen Nybegynder
02. juli 2001 - 16:14 #3
Du skal bare skrive \",conn\" i rækken efter DIM!

- eller slette <%option explicit%>, der gør at alle variabler skal under en DIM
Avatar billede keysersoze Guru
02. juli 2001 - 16:15 #4
alle variabler du bruger skal her dimm\'es

først og fremmest skal:

Dim strName, strEmail, strQuery, strAdresse, strBy, strTlf, strTlfArbejde, strSagsnr, strSalgsopstilling, strArcrive 

laves om til:

Dim strName, strEmail, strQuery, strAdresse, strBy, strTlf, strTlfArbejde, strSagsnr, strSalgsopstilling, strArcrive, conn 

men der mangler formentlig også lidt andre variabler du selv kan putte ind...
Avatar billede keysersoze Guru
02. juli 2001 - 16:16 #5
det var et svar - kan dog se at andre har samme idé...
Avatar billede smidt Novice
02. juli 2001 - 16:27 #6
Jeg har fjernet <%option explicit%>, og skrevet conn i linjen Dim

Men får fejl:

Field \'MailingList.MailingAddy\' cannot be a zero-length string.

/mail/spaw1.asp, line 42
Avatar billede minijensen1 Nybegynder
02. juli 2001 - 16:31 #7
Når du har fjernet option explicit behøver du ikke at dimme noget som helst..
Avatar billede minijensen1 Nybegynder
02. juli 2001 - 16:34 #8
Det er variablen strEmail der er tom, og det vil feltet MailingAddy ikke acceptere..
Avatar billede keysersoze Guru
02. juli 2001 - 16:34 #9
den fejl betyder at du prøver at indsætte en nul-værdi (altså ingenting) til din database...
Avatar billede johannielsen Nybegynder
02. juli 2001 - 16:35 #10
Hvad skal scriptet bruges til?
Avatar billede smidt Novice
02. juli 2001 - 16:43 #11
Ja

scriptet (siden) er en formular hvor man jan bestille en salgsopstilling ved at udfylde div. felter....salgsopstillingen bliver så sendt til strEmail som vedhæftede fil (pdf) her er der ingen problemmer.

Nu vil jeg gerne have at den indtastede email lander i en database (SpawnedMailer.mdb) hvis værdien i ja er \"1\" (man har mulighed for at vælge nej værdi \"0\"

Så det jeg ønsker er at når  brugeren har tastede email så lander den i databasen har brugeren ikke tastede noget så skal den ikke gøre noget

Som i kan se har jeg fået skrevet at hvis emailen findes i databasen (dubbletter) så skriver den ikke til databasen

Så hvordan hvordan får vi den til at gøre  ingenting ved tomt felt.....
Avatar billede food4u.dk Nybegynder
02. juli 2001 - 16:49 #12
if strArcrive = \"\" then
else
if strArcrive = \"1\" then

set conn=Server.CreateObject(\"ADODB.Connection\")
conn.Provider=\"Microsoft.Jet.OLEDB.4.0\"
conn.Open(Server.Mappath(\"SpawnedMailer.mdb\"))

set rsMail = Server.CreateObject(\"ADODB.recordset\")
rsMail.Open \"SELECT * FROM MailingList WHERE MailingAddy=\'\" & strEmail & \"\'\", conn

    If not rsMail.EOF Then
        If rsMail(\"MailingAddy\") = strEmail Then

    End if
end if
Avatar billede keysersoze Guru
02. juli 2001 - 16:54 #13
i din access database skal du gå ind i designvisning og vælge: tilladnullænge = ja samt obligatorisk = nej
Avatar billede smidt Novice
02. juli 2001 - 17:25 #14
Jeg har gjort som food4u.dk dersom jeg ikke ønsker tomme felter i databasen (der laves id på hver email)

Men nu får jeg f.....en fejl

Expected \'End\'

/mail/spaw1.asp, line 66

Else
^

??????

Jeg er ikke god til VBScript.......
Avatar billede keysersoze Guru
02. juli 2001 - 17:30 #15
der skal jo laves lidt mere end dette:

if strArcrive = \"\" then
else
if strArcrive = \"1\" then

fx

if strEmail = \"\" then
Response.Write \"alle felter skal udfyldes eller hvad der nu skal ske\"

else
*det der nu skal ske hvis feltet er udfyldt*
end if
Avatar billede torbenkoch Nybegynder
02. juli 2001 - 17:50 #16
Det er en dårlig ide ikke at dim\'e - det giver dårligere performance - der er et andet spørgsmål, hvor en angiver at performance ved behandling af variabler bliver 30-50% hurtigere, når man bruger dim - kunne ikke lige finde referencen.
Avatar billede smidt Novice
02. juli 2001 - 17:59 #17
Jeg kan godt se at jeg roder lidt rundt i det så jeg nøjes med at få den første funktion til at virke.

<%


Dim mArchive,mAddy
mArchive = Trim(Request.Form(\"archive\"))
mAddy = Trim(Request.Form(\"eaddy\"))

if mArchive = \"1\" then


set conn=Server.CreateObject(\"ADODB.Connection\")
conn.Provider=\"Microsoft.Jet.OLEDB.4.0\"
conn.Open(Server.Mappath(\"SpawnedMailer.mdb\"))

set rsMail = Server.CreateObject(\"ADODB.recordset\")
rsMail.Open \"SELECT * FROM MailingList WHERE MailingAddy=\'\" & mAddy & \"\'\", conn

    If not rsMail.EOF Then
        If rsMail(\"MailingAddy\") = mAddy Then

        End if
       
    Else

        ArchiveSQL = \"INSERT into MailingList (MailingAddy) VALUES (\'\" & mAddy & \"\');\"
        conn.Execute ArchiveSQL
       
    end if
   
rsMail.close
conn.close

end if


%>

<center><br>Sign up to my mailing list!<br><form method=post action=\"<%=Request.ServerVariables(\"SCRIPT_NAME\")%>\"><input type=text name=\"eaddy\" size=\"20\"><br><br><input type=submit size=20 value=\"Sign me up!\">Arkiver dette brev?<br><br>&nbsp;&nbsp;&nbsp;Ja <input type=\"radio\" name=\"archive\" value=\"1\" checked>&nbsp;&nbsp;&nbsp;Nej <input type=\"radio\" name=\"archive\" value=\"0\"></form></center>

Denne her kode tilføjer automatisk en email til databasen når denne er udfyldt...

Dog gør den ingenting hvis emailen findes der allerede

Hjælp mig med at få den til at gørre ingenting (ligesom ved duppletter) når feltet er tomt.

Så opretter jeg et nyt spørgsmål ved CDONT

Avatar billede kichian Nybegynder
03. juli 2001 - 08:57 #18
Det er en rigtig god ide at bruge Option Explicit. Dvs. du er selv uden om et, hvis du lader være.

Udover at det sikrer at du ikke skal lede efter dummefejl pga. en tyrkfejl, så skulle det også få ASP til at køre hurtigere, da opslag på variable er optimeret.
Avatar billede smidt Novice
09. juli 2001 - 15:23 #19
Jeg lukker og opretter et nyt spørgsmål
Avatar billede smidt Novice
09. juli 2001 - 15:23 #20
x
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