webForumDet fria alternativet

Fel igen!

ASP

15 svar · 338 visningar · startad av Firegamez.com

Medlem sedan juli 2002231 inlägg
Frågan#1

Tack så mycket för all hjälp! Själv är jag rätt ny i asp! (Som ni kanske märker), men jag behöver hjälp igen! Det handlar fortfarande om gästboken, men denna gång e det när man ska skriva! Detta felmeddelande får jag:

Microsoft JET Database Engine error '80004005' 

Field 'gb.fran' cannot be a zero-length string. 

/community/gbskriv.asp, line 33

Hela koden:

<%
Option Explicit
Dim sql, username, se, Rs, password, gbmessage, timme, minut, d, no, fran

username = Request.Cookies("username")

if username = "" then
  Response.Redirect("nologin.asp?page=gb.asp")
end if

%>
<!--#include file="conn.asp"-->
<%username=session("username")
password=session("password")

se=request("se")
gbmessage=request("gbmessage")

gbmessage = Replace(Trim(gbmessage), "'", "''")
gbmessage = Replace(gbmessage, "|", "")

'************ tiden *****************
timme=datepart("h", time) + 1
minut=datepart("n", time)
d=date & " " & timme & ":" & minut
'************************************

no="no"

SQL="INSERT INTO gb (till, message, skickat, fran, las)"
SQL = SQL & "VALUES('" & se & "','" & gbmessage & "','" & d & "','" & username & "','" & no & "');"
Conn.Execute(SQL)

response.redirect("gb.asp?se=" & se)
%>
Medlem sedan maj 20023 372 inlägg
#2

Heter fältet i databasen "'gb.fran " ? och inte "fran", är det möjligt att du har både och, så att gb.fran inte får ngt värde, och fältet är inställt på att det måste få ett värde?

Medlem sedan feb. 20022 594 inlägg
#3

Det betyder precis som det står.

Field 'gb.fran' cannot be a zero-length string.

DVS

Fältet gb.fran får inte vara en nollängds-sträng :)

Variabeln username är alltså tom.

Medlem sedan maj 20023 372 inlägg
#4

Aha, så username behövs inte fyllas i i gästboken. I så fall, gå in i designläget i Access för detta fältet och ändra till

obligatoriskt:nej
tillåt nollängd: ja

Medlem sedan juli 2002231 inlägg
#5

Men man måste se vem som har skickat in inlägget på communiyt!

Medlem sedan feb. 20022 594 inlägg
#6

Detta är bara för att testa:

Ändra:

Conn.Execute(SQL)

till:

'Conn.Execute(SQL)
Response.Write SQL

Du behöver inte ha något semikolon (;) i slutet av SQL-satsen.

Berätta sedan gärna vad som skrivs ut på sidan.

Medlem sedan juli 2002231 inlägg
#7

Man kom bara tillbaka till gb:n utan att något hände! Det var allt!

Medlem sedan feb. 20022 594 inlägg
#8

Oops, sätt en enkelfnutt före response.redirect("gb.asp?se=" & se) också.

Medlem sedan juli 2002231 inlägg
#9

det blev så här! :

INSERT INTO gb (till, message, skickat, fran, las)VALUES('KeNNy','Tja!','2002-09-14 17:38','','no');

Inge mer!

Medlem sedan juni 200032 967 inlägg
#10

Dåså. Du försöker sätta in en tom sträng i fältet fran, vilket tabelldefinitionen i access inte tillåter. Ändra i designläget i Access, eller se till att alltid sätta in ett värde.

Medlem sedan juli 2002231 inlägg
#11

Men kan man inte skriva så här?

SQL="INSERT INTO gb (till, message, skickat, fran, las)"
SQL = SQL & "VALUES('" & se & "','" & gbmessage & "','" & d & "','" & username & "','" & no & "','" & fran & "');"
Conn.Execute(SQL)

Men hur hämtar man ut namnet???? Från den som skickar????

Medlem sedan feb. 20022 594 inlägg
#12

Jag skulle spara en session som innehåller den inloggades id på din sida. Sen hämtar du ut namnet typ såhär:

SELECT userName FROM members WHERE id = "& Session("uid")

Medlem sedan mars 20015 287 inlägg
#13

Det ser ut som om du först försöker kolla i en cookie om username finns, sen kollar du i en session...

OT: Är det bra att lägga in datumet på det sätt som du gör? Är det inte bättre att lägga in ett "riktigt" datumformat?

Medlem sedan feb. 20022 594 inlägg
#14

solbulle skrev:

OT: Är det bra att lägga in datumet på det sätt som du gör? Är det inte bättre att lägga in ett "riktigt" datumformat?

Spelar väl egentligen ingen roll. Bara han får ut det han vill ha. Jag brukar alltid spara now() och sedan plocka ut det jag vill ha från det.

Medlem sedan juni 200032 967 inlägg
#15

Firegamez.com skrev:

Men kan man inte skriva så här?

SQL="INSERT INTO gb (till, message, skickat, fran, las)"
SQL = SQL & "VALUES('" & se & "','" & gbmessage & "','" & d & "','" & username & "','" & no & "','" & fran & "');"
Conn.Execute(SQL)

Nej. Du har specificerat fem fält, men du ger sex värden. Det kommer inte att fungera, och det ska inte fungera.

Men hur hämtar man ut namnet???? Från den som skickar????
Det beror ju på hur du lagrar namnet på den som skickar...

Medlem sedan juli 2002231 inlägg
#16

det fungerar nu! Jag tog bort session username och de! Då fungerade det! tack för hjälpen :D :birp

255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)