Avatar billede cdc Novice
25. marts 2004 - 14:15 Der er 18 kommentarer og
1 løsning

fejl: zero-length string

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Field 'velkommen.kontakt' cannot be a zero-length string.

/sambo/admin/ret_velkomst_form.asp, line 49

script her:

<%
if request("mode") = "gem" then
set conn = server.createobject("ADODB.connection")
path = Server.MapPath("db/tirsdag.mdb")
conn.Open "DBQ="& path &";DefaultDir="& path & ";Driver={Microsoft Access Driver (*.mdb)}"

tekst = Replace(request.form("tekst"),vbCrLf, "<br>")
overskrift = Replace(request.form("overskrift"),vbCrLf, "<br>")

SQL="UPDATE velkommen SET "
SQL = SQL & "overskrift='" & overskrift & "', "
SQL = SQL & "kontakt='" & kontakt & "', "
SQL = SQL & "telefon='" & telefon & "', "
SQL = SQL & "email='" & email & "', "
SQL = SQL & "tekst='" & tekst & "'"
SQL = SQL & " where ID =" & session("EditID")
Set RS = Conn.Execute(SQL)
%>

hvad er galt ?

/cdc
Avatar billede stigc Nybegynder
25. marts 2004 - 14:36 #1
Har du prøvet at læse fejlbeskeden? Jeg syntes den er rimlig klar.
Variablen "kontakt" er tom, og det må den ikke være i databasen.
Avatar billede cdc Novice
25. marts 2004 - 14:37 #2
men det er den ikke, der står et navn
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:07 #3
Vis os lige hvordan du henter indholdet til "kontakt".
Det ville også være en god ide, at udskrive sql'en:

SQL="UPDATE velkommen SET "
SQL = SQL & "overskrift='" & overskrift & "', "
SQL = SQL & "kontakt='" & kontakt & "', "
SQL = SQL & "telefon='" & telefon & "', "
SQL = SQL & "email='" & email & "', "
SQL = SQL & "tekst='" & tekst & "'"
SQL = SQL & " where ID =" & session("EditID")

response.end ' stopper her og fortsætter ikke med resten af koden.

Hvad står der efter "kontakt'" ?
Avatar billede cdc Novice
25. marts 2004 - 15:11 #4
Hvad mener du med dette: Hvad står der efter "kontakt'" ?

<%
set rstemp=nothing
Conn.Close
set conntemp=nothing

else

set conn = server.createobject("ADODB.connection")
path = Server.MapPath("db/tirsdag.mdb")
conn.Open "DBQ="& path &";DefaultDir="& path & ";Driver={Microsoft Access Driver (*.mdb)}"
SQL = "SELECT * from velkommen where id = " & Request.Querystring("ID")
set RS = Conn.Execute(SQL)
Session("overskrift") = RS("overskrift")
Session("tekst") = RS("tekst")
Session("kontakt") = RS("kontakt")
Session("telefon") = RS("telefon")
Session("email") = RS("email")
Session("editID") = Request.Querystring("ID")
%>

og jeg har lavet det så rækkefølgen er ens

/cdc
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:17 #5
min fejl... det skulle ha' været:

SQL="UPDATE velkommen SET "
SQL = SQL & "overskrift='" & overskrift & "', "
SQL = SQL & "kontakt='" & kontakt & "', "
SQL = SQL & "telefon='" & telefon & "', "
SQL = SQL & "email='" & email & "', "
SQL = SQL & "tekst='" & tekst & "'"
SQL = SQL & " where ID =" & session("EditID")
response.write sql
response.end ' stopper her og fortsætter ikke med resten af koden.


Men... din kode smider værdierne i sessions.. og du prøver på at hente værdierne via variabler.. du forskellige ting..

det skal nok være:
SQL = SQL & "kontakt='" & session("kontakt") & "', "

eller også skal du bruge:
kontakt = request.querystring("kontakt")  (via method="GET".. hvis værdien står i urlen)
kontakt = request.form("kontakt")  (via method="POST".. værdien sendes via formen i stedet for urlen)
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:19 #6
Se:
Lektion 10: Værdier af variabler i en URL - http://html.dk/tutorials/asp/lektion10.asp
Lektion 11: Værdier af elementer i en formular - http://html.dk/tutorials/asp/lektion11.asp
Avatar billede cdc Novice
25. marts 2004 - 15:22 #7
jo men nu fungerer det hvis jeg ikke smider de tre sidste på i min form og det er det jeg synes er lidt skummelt.

Den funkerer med overskrift og tekst. Så smed jeg tre nye kolonner ind i db og så går det galt, det er det jeg ikke forstår.
Avatar billede cdc Novice
25. marts 2004 - 15:24 #8
og vedr. html.dk er jeg igang med at kigge
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:24 #9
smid lige hele din kode herind.. det kan være at vi har overset et eller andet..
brugernavn og password (osv) erstatter du med nogle "**"..
Avatar billede cdc Novice
25. marts 2004 - 15:27 #10
uha den bliver lang:

<%
if session("login") = "" Then
Response.redirect("../index.htm")
end if
%>
<%
session.lcid = 1030
%>
<html>
<head>
<title>Admin</title>
<link type=text/css rel=stylesheet href="../../email/admin/css_filer/ss_wci.css">
<script language="JavaScript" type="text/javascript">
    <!--
    function insertTag ( strTag )
    {
        var strSelected = document.selection.createRange().text;
        if( strSelected.length > 0 )
        {
            document.selection.createRange().text = "<" + strTag + ">" + strSelected + "</" + strTag + ">"
        }
    }
    //-->
</script>
<base target="_self">
</head>
<body>
      <table border="0" width="450" cellspacing="0" cellpadding="10">
              <tr>
          <td width="100%">
            <table border="0" cellspacing="0" cellpadding="0">
              <tr>
<%
if request("mode") = "gem" then
set conn = server.createobject("ADODB.connection")
path = Server.MapPath("db/admin.mdb")
conn.Open "DBQ="& path &";DefaultDir="& path & ";Driver={Microsoft Access Driver (*.mdb)}"

tekst = Replace(request.form("tekst"),vbCrLf, "<br>")
overskrift = Replace(request.form("overskrift"),vbCrLf, "<br>")

SQL="UPDATE velkommen SET "
SQL = SQL & "overskrift='" & overskrift & "', "
SQL = SQL & "tekst='" & tekst & "', "
SQL = SQL & "kontakt='" & kontakt & "', "
SQL = SQL & "telefon='" & telefon & "', "
SQL = SQL & "email='" & email & "'"
SQL = SQL & " where ID =" & session("EditID")
Set RS = Conn.Execute(SQL)
%>
                <td width="100%" bordercolor="#FFFFFF">
                  <p class="dhtmlBold"><font size="5" color="#294A7B">Siden er opdateret
                  ...?
                  </font>
                  <table border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td><img border="0" src="../../email/admin/images/link_back.gif"></td>
                      <td><p class="copy">&nbsp;<a href="index.asp" target="_top">Tilbage til menu</a></td>
                    </tr>
                  </table>
                  <p class="dhtmlBold"><%
set rstemp=nothing
Conn.Close
set conntemp=nothing

else

set conn = server.createobject("ADODB.connection")
path = Server.MapPath("db/admin.mdb")
conn.Open "DBQ="& path &";DefaultDir="& path & ";Driver={Microsoft Access Driver (*.mdb)}"
SQL = "SELECT * from velkommen where id = " & Request.Querystring("ID")
set RS = Conn.Execute(SQL)
Session("overskrift") = RS("overskrift")
Session("tekst") = RS("tekst")
Session("kontakt") = RS("kontakt")
Session("telefon") = RS("telefon")
Session("email") = RS("email")
Session("editID") = Request.Querystring("ID")
%>
  <table border="1" cellpadding="0" cellspacing="0" bordercolor="#294A7B" style="margin-left: 0px;">
    <tr>
      <td bordercolor="#FFFFFF">
        <table border="0" width="420" cellspacing="0" cellpadding="3">
          <tr>
            <td bgcolor="#294A7B">
              <p class="rammetopBold">Redigerings Modul</p>
            </td>
          </tr>
        </table>
      <form method="POST" action="ret_velkomst_form.asp" id="aForm">
      <INPUT TYPE="hidden" NAME="mode" VALUE="gem">
    <table border="0" cellpadding="0" cellspacing="0" width="420">
      <tr>
        <td class="copy">&nbsp;Side</td>
        <td><input type="text" name="overskrift" size="50" value="<% response.write session("overskrift") %>" style="font-family: Verdana; font-size: 11 px"></td>
      </tr>
      <tr>
        <td width="21%" height="2" class="copy" valign="top">&nbsp;Tekst på
          side</td>
        <td width="79%" height="2"><textarea name="tekst" id="aTextArea" rows="30" cols="59" style="font-family: Verdana; font-size: 10 px"><% response.write Replace(session("tekst"), "<br>", vbCrLf) %></textarea></td>
      </tr>
      <tr>
        <td width="21%" height="2" class="copy" valign="middle">Kontakt</td>
        <td width="79%" height="2"><input type="text" name="kontakt" size="50" value="<% response.write session("kontakt") %>" style="font-family: Verdana; font-size: 11 px"></td>
      </tr>
      <tr>
        <td width="21%" height="2" class="copy" valign="middle">Telefon</td>
        <td width="79%" height="2"><input type="text" name="telefon" size="50" value="<% response.write session("telefon") %>" style="font-family: Verdana; font-size: 11 px"></td>
      </tr>
      <tr>
        <td width="21%" height="2" class="copy" valign="middle">Email</td>
        <td width="79%" height="2"><input type="text" name="email" size="50" value="<% response.write session("email") %>" style="font-family: Verdana; font-size: 11 px"></td>
      </tr>
      <tr>
        <td width="21%" height="2" class="copy" valign="top"></td>
        <td width="79%" height="2"></td>
      </tr>
      <tr>
        <td width="21%" height="10" class="copy" valign="top"></td>
        <td width="79%" height="10">
          <p class="copy"><br>
  <input type="submit" value="Opdater" name="b1"><input type="button" id="btnMakeBold" value="Bold" onclick="insertTag( 'b' );"><input type="button" id="btnMakeUnderline" value="Underline" onclick="insertTag( 'u' );"><input type="button" id="btnMakekursiv" value="kursiv" onclick="insertTag( 'i' );"><input type="button" id="btnMakeafsnit" value="Afsnit" onclick="insertTag( 'li' );"><br>
          &nbsp;</td>
      </tr>
  </table>
</td>
              </tr>
            </table>
          </td>
        </tr>
      </table>
              <tr>
          <td width="100%">
            <table border="0" width="144">
              <tr>
                <td width="16">
                  <p align="right"><img border="0" src="../../email/admin/images/link_back.gif"></td>
                <td width="114">
                  <p class="copy"><a href="index.asp" target="_top">Tilbage til menu</a></td>
              </tr>
<%
end if
%>
            </table>

              </table>
</body>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:32 #11
Her:
tekst = Replace(request.form("tekst"),vbCrLf, "<br>")
overskrift = Replace(request.form("overskrift"),vbCrLf, "<br>")

Du skal indsætte *alle* de andre felter.. alle skal ha' en:
et_navn = Request.form("feltnavn-her")
Avatar billede cdc Novice
25. marts 2004 - 15:36 #12
Tak ! Man kigger på alt mulig andet, og så bliver man totalt blind :o)
Smid lige et svar thesurfer
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:38 #13
kender det godt :-)
..et svar er smidt :-)
Avatar billede cdc Novice
25. marts 2004 - 15:42 #14
lige en ting til skulle dette ikke virke:

<a href="mailto:<% response.write RS("email") %>"><% response.write RS("email") %></a>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:45 #15
Det kommen an på hvor du placerer det..
Det må ikke placeres efter en "set rs = nothing" eller en "set conn = nothing", da begge lukke forbindelsen til databasen..

hvis linien skal placeres efter disse, skal du først smide indholdet over i en variabel:

en_email = rs("email")
....

<a href="mailto<%=en_email%>"><%=en_email%></a>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 15:46 #16
glemte lige et semi-kolon:

<a href="mailto:<%=en_email%>"><%=en_email%></a>
Avatar billede cdc Novice
25. marts 2004 - 15:53 #17
ser sådan her ud:                            <td class="highlights" width="132">:&nbsp;<% response.write RS("kontakt") %></td>
                          </tr>
                          <tr>
                            <td class="highlights" width="34">Telefon</td>
                            <td class="info" width="132">:&nbsp;<% response.write RS("telefon") %></td>
                          </tr>
                          <tr>
                            <td class="highlights" width="34">Email</td>
                            <td class="highlights" width="132">:&nbsp;<a href="mailto:<% response.write RS("email") %>"><% response.write RS("email") %></a></td>
Avatar billede thesurfer Nybegynder
25. marts 2004 - 16:00 #18
I dit indlæg @ 25/03-2004 15:27:27 kan jeg se at du åbner forbindelsen til databasen, men ikke at du lukker den igen.. det skal du huske at gøre..

så din kode skulle gerne virker.


du lukker forbindelsen sådan her:
set rs = nothing
set conn = nothing

men som jeg skrev i mit indlæg 25/03-2004 15:45:38, kan man ikke bruge "rs(et eller andet)" efter lukning af database forbindelse..

Hvis man ikke lukker forbindelsen til database, bruger den bare flere og flere ressourcer og forbindelser.. i Windows er antal forbindelser, begrænset..
Avatar billede cdc Novice
25. marts 2004 - 16:02 #19
ok kigger på det
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