Avatar billede shosho500 Nybegynder
17. august 2005 - 18:37 Der er 9 kommentarer og
1 løsning

Simpel form laver fejl ved for meget tekst ?

Jeg har lavet en form, hvor der er et textarea hvor der gerne skulle kunne indtastes en del text, for så at blive sendt til en anden side og blive vist derpå. Men når jeg kommer over en hvis antal tegn, dog ikke særlig mange, så får jeg en 500-serverfejl.

Nogen der ved hvad fejlen kan være ?

Min form:

<form action="arrang_write.asp" method=post>
<p>Arrangement<br>
Skriv arrangementet, Skriv datoen, <br>
<input type="text" name="oskrift" size="20">
<input type="text" name="dato" size="20">
<br>
<br>
Skriv om arrangementet<br>
<textarea cols="40" rows="10" name="bskriv"></textarea><br>
<br>
<input type="submit" value="Tilføj">
</p>
</form>

Siden den sendes til:

<%
Conn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("arrang.mdb") & ";UID=admin;PWD=;"
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open Conn
Set rs = myConn.Execute("SELECT TOP 10 * FROM arrang ORDER BY id desc")
do until rs.EOF
%>

<body bgcolor="#E0DEDE">

<table border="0" width="626">
    <tr>
        <td width="477"><%=rs("oskrift")%></td>
        <td width="139"><%=rs("dato")%></td>
    </tr>
    <tr>
        <td colspan="2"><%=rs("bskriv")%></td>
    </tr>
</table>

<%
rs.MoveNext
loop
myConn.Close
Set myConn = Nothing
%>

Og mit script:

<%

Response.buffer = true

'opretter forbindelse
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Conn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("arrang.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")
Query = ("SELECT * FROM arrang")
rs.Open Query, Conn, adOpenKeyset, adLockOptimistic

'fix ved ingen indtastning
oskrift = Request.form("oskrift")
if oskrift = "" then
oskrift = "-"
else
oskrift = Request.form("oskrift")
end if

dato = Request.form("dato")
if dato = "" then
dato = "-"
else
dato = Request.form("dato")
end if

bskriv = Request.form("bskriv")
if bskriv = "" then
bskriv = "-"
else
bskriv = Request.form("bskriv")
end if


'Gemmer i databasen
rs.AddNew
rs("oskrift") = oskrift
rs("dato") = dato
rs("bskriv") = bskriv
rs.Update
rs.Close
Set rs = Nothing

Response.Redirect("arrang_add.asp")
%>
Avatar billede keysersoze Ekspert
17. august 2005 - 18:40 #1
funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl

gør ovenstående og du får en fejlbesked du kan bruge til noget... et gæt er at fejlen skyldes at du bruger et tekstfelt i stedet for et notatfelt i din database.
Avatar billede shosho500 Nybegynder
17. august 2005 - 18:45 #2
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/ny1/arrangementer/arrang_write.asp, line 45
Avatar billede shosho500 Nybegynder
17. august 2005 - 18:46 #3
forstår den ikke helt. linje 45

'Gemmer i databasen
rs.AddNew
rs("oskrift") = oskrift
rs("dato") = dato
rs("bskriv") = bskriv <---- linje 45
rs.Update
rs.Close
Set rs = Nothing
Avatar billede keysersoze Ekspert
17. august 2005 - 18:52 #4
hvis ikke du ved hvad det du koder betyder så tag et kig her i stedet; http://www.html.dk/tutorials/asp/lektion20.asp
Avatar billede peter_jensen Nybegynder
18. august 2005 - 08:35 #5
Har du checket om feltet "bskriv" i din access tabel er et felt af typen "Notat" og ikke "Tekst". Den sidstnævnte kan nemlig kun indeholde max 255 tegn =:o)
Avatar billede shosho500 Nybegynder
18. august 2005 - 11:03 #6
har fundet ud af det nu.. men nu mangler jeg bare at teksten laver et break, så den ikke fortsætter i uendelighed, så man skal til at scrolle mod højre ?
Avatar billede keysersoze Ekspert
18. august 2005 - 11:21 #7
tænker du på når du hiver teksten ud af databasen igen? i så fald skal du køre en replace;

response.write replace(rs("bskriv"),VbCrLf,"<br>")
Avatar billede shosho500 Nybegynder
24. august 2005 - 08:36 #8
Det var fordi det var et forkert felt i databasen.. smid svar
Avatar billede peter_jensen Nybegynder
25. august 2005 - 09:25 #9
Videre løsning på dit problem mht. break:

---------------------------------------------------------------------

dim textStreng, leng, intLength, x

intLength = 50 'Antal tegn i sætning inden break

MyWord = rs("bskriv")

ordArr = split(MyWord," ") 'Deler teksten op i en array...ord for ord

leng = 0
for x=0 to ubound(ordArr)
  leng = leng + len(ordArr(x)&" ")
 
  if leng > intLength then 'indsæt break hvis længden er over vores definerede parameter
    Response.write "<br>"
    leng = len(ordArr(x)&" ")
  end if
  Response.write ordArr(x) & " "
next

---------------------------------------------------------------------
Avatar billede peter_jensen Nybegynder
25. august 2005 - 09:28 #10
Hov...
i linien...
"dim textStreng, leng, intLength, x"
skulle der naturligvis stå ´
"dim MyWord, leng, intLength, 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