12. februar 2004 - 23:25
Der er
22 kommentarer og 1 løsning
cannot be a zero-length string - Det er den heller ikke?
Min database MS Access 2000 (profiles.firstname): firstname - Tekst Feltstørrelse - 30 Obligatorisk - Ja TilladNullængde - Nej Indekseret - Ja, dubletter tillades UnicodeKomprimering - Nej Dim Dato Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time If JMail.Execute() = True Then Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _ "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _ "'" & SQLEncode(firstname) & "', " & _ "'" & SQLEncode(middlename) & "', " & _ "'" & SQLEncode(lastname) & "', " & _ "'" & SQLEncode(address1) & "', " & _ "'" & SQLEncode(address2) & "', " & _ "'" & SQLEncode(zip) & "', " & _ "'" & SQLEncode(city) & "', " & _ "'" & SQLEncode(vPassword) & "', " & _ "'" & SQLEncode(phone1) & "', " & _ "'" & SQLEncode(phone2) & "', " & _ "'" & SQLEncode(cellphone) & "', " & _ "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _ "'" & Dato & "', " & _ "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')") Conn.Close Else Conn.Close Response.Redirect "/error.asp?msg=E-mailen+med+dine+brugeroplysninger+kunne+ikke+sendes+til+din+e-mail+(" & Trim(Request.Form("email")) & ")+og+din+bruger+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+du+har+indtastet+den+korrekte+e-mail+adresse+eller+indtast+en+anden+og+prøv+igen." End If Set JMail = Nothing Response.Redirect "/default.asp?msg=Du+er+blevet+oprettet.+Du+vil+inden+for+kort+tid+modtage+en+e-mail+med+dine+brugeroplysninger,+som+du+skal+bruge+første+gang+du+logger+ind." Jeg indtaster mit fornavn i firstname, men får denne fejl: Microsoft JET Database Engine error '80004005' Field 'profiles.firstname' cannot be a zero-length string. /newuser/default.asp, line 61 Linie 61: Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _ Så vidt jeg kan se, skulle firstname blive smidt ned i profiles.firstname
Annonceindlæg fra Deloitte
12. februar 2004 - 23:29
#1
Hvor sætter du variablen firstname ?? Umiddelbart mangler der: Request.Form("XXX") ved de fleste af dem som du skriver: Request.Form("username") Så denne: "'" & SQLEncode(firstname) & "', " & _ Bliver til: "'" & SQLEncode(Request.Form("firstname")) & "', " & _
12. februar 2004 - 23:30
#2
Hvor kommer variablen firstname fra? Skulle den ikke hentes via request.form ?
12. februar 2004 - 23:36
#3
Hej eagleeye! :o) Fra min form: <input type="text" name="firstname" size="<%=Size%>" class="input">
12. februar 2004 - 23:37
#4
ok :) men for at hendte det som er skrevet skal man bruger Request.Form("firstname") Præsis som du hendter username: Request.Form("username")
12. februar 2004 - 23:39
#5
Jeg har forøvrigt lavet det før i andre sammenhænge, hvor det virker perfekt.
12. februar 2004 - 23:40
#6
ok, men har du så ikke også nogle linjer før du laver SQL sætningen som disse: firstname = Request.Form("firstname")
12. februar 2004 - 23:41
#7
Hm, E kører ikke sk..godt, hva'? :o) Det hele bliver da hentet med Request.Form. Eller ...?
12. februar 2004 - 23:44
#8
UNDSKYLD, det er jo dét! :o) Jeg prøver lige at rette det til og vender straks tilbage.
12. februar 2004 - 23:44
#9
Nej det køre ikke for godt :) den har også været nede 2-3 timer her til aften. I det kode du har vist er det kun username, email og description som bliver hendtet med Request.Form. De skal alle sammen hendtes med Request.Form hvis det er input felter for form'en.
12. februar 2004 - 23:45
#10
ok :)
12. februar 2004 - 23:46
#11
Nej, der var ikke gevinst alligevel :o/ Bliver alle Request.Forms ikke udført med denne? "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _
12. februar 2004 - 23:48
#12
S'føli! Det er fordi jeg har lagt en masse felter til, uden at benytte Request.Form på dem. Prøver lige igen :o)
12. februar 2004 - 23:52
#13
Nu ser koden således ud: If JMail.Execute() = True Then Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _ "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(firstname))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(middlename))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(lastname))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(address1))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(address2))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(zip))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(city))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(vPassword))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(phone1))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(phone2))) & "', " & _ "'" & Trim(SQLEncode(Request.Form(cellphone))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _ "'" & Dato & "', " & _ "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')") Conn.Close Else Conn.Close Response.Redirect "/error.asp?msg=E-mailen+med+dine+brugeroplysninger+kunne+ikke+sendes+til+din+e-mail+(" & Trim(Request.Form("email")) & ")+og+din+bruger+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+du+har+indtastet+den+korrekte+e-mail+adresse+eller+indtast+en+anden+og+prøv+igen." End If Og jeg får nu denne fejl: Request object error 'ASP 0102 : 80004005' Expecting string input /newuser/default.asp, line 61 The function expects a string as input.
12. februar 2004 - 23:53
#14
Linie 61 er stadig den samme: Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _
12. februar 2004 - 23:53
#15
der mangler lige Gåseøjen omkring input navne Request.Form(firstname) --> Request.Form("firstname")
12. februar 2004 - 23:58
#16
Det går somme tider galt på denne tid af dagen. Nu begynder det at ligne noget, men jeg mangler af få det automatisk genererede pasword med: Microsoft JET Database Engine error '80004005' Field 'profiles.pass' cannot be a zero-length string. /newuser/default.asp, line 61 Tjekker lige ....
13. februar 2004 - 00:01
#17
hvis vPassword er en variable som sætte til noget i koden, skal der ikke være Request.Form omkring så er det rigtigt som vist i spørgsmålet :)
13. februar 2004 - 00:06
#18
Jeg har denne function, der genererer et password på 8 karakterer: Function RandomString(vLength) Dim vChar Randomize For I = 1 To vLength vChar = Int(Rnd * 57) + 65 If vChar < 65 Then vChar = 65 If vChar > 122 Then vChar = 122 If vChar < 91 Or vChar > 96 Then RandomString = RandomString & Chr(vChar) Else I = I - 1 End If Next End Function Den ligger i functions.asp, som jeg inkluderer på siden (default.asp) default.asp: Dim vPassword vPassword = RandomString(8) [En masse JMail] Dim Dato Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time If JMail.Execute() = True Then Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _ "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("firstname"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("middlename"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("lastname"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("address1"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("address2"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("zip"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("city"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("vPassword"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("phone1"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("phone2"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("cellphone"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _ "'" & Dato & "', " & _ "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')") Conn.Close Else Conn.Close Response.Redirect "/error.asp?msg=E-mailen+med+dine+brugeroplysninger+kunne+ikke+sendes+til+din+e-mail+(" & Trim(Request.Form("email")) & ")+og+din+bruger+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+du+har+indtastet+den+korrekte+e-mail+adresse+eller+indtast+en+anden+og+prøv+igen." End If Set JMail = Nothing Response.Redirect "/default.asp?msg=Du+er+blevet+oprettet.+Du+vil+inden+for+kort+tid+modtage+en+e-mail+med+dine+brugeroplysninger,+som+du+skal+bruge+første+gang+du+logger+ind." Burde den ikke være OK?
13. februar 2004 - 00:07
#19
Næste det eneste er at når det er en variable i koden skal der ikke bruges Request.Form så skal det skrives som du skrev først. Så ret denne linje: "'" & Trim(SQLEncode(Request.Form("vPassword"))) & "', " & _ Tilbage :) til denne: "'" & SQLEncode(vPassword) & "', " & _
13. februar 2004 - 00:11
#20
YES igen-igen :o) Læg lige et svar
13. februar 2004 - 00:12
#21
Det skulle bare ændres :o) Dim Dato Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time If JMail.Execute() = True Then Conn.Execute("INSERT INTO profiles (username, firstname, middlename, lastname, address1, address2, zip, city, pass, phone1, phone2, cellphone, email, description, created, lastIP) VALUES (" & _ "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("firstname"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("middlename"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("lastname"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("address1"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("address2"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("zip"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("city"))) & "', " & _ "'" & SQLEncode(vPassword) & "', " & _ "'" & Trim(SQLEncode(Request.Form("phone1"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("phone2"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("cellphone"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _ "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _ "'" & Dato & "', " & _ "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')") Conn.Close Else Conn.Close Response.Redirect "/error.asp?msg=E-mailen+med+dine+brugeroplysninger+kunne+ikke+sendes+til+din+e-mail+(" & Trim(Request.Form("email")) & ")+og+din+bruger+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+du+har+indtastet+den+korrekte+e-mail+adresse+eller+indtast+en+anden+og+prøv+igen." End If Set JMail = Nothing Response.Redirect "/default.asp?msg=Du+er+blevet+oprettet.+Du+vil+inden+for+kort+tid+modtage+en+e-mail+med+dine+brugeroplysninger,+som+du+skal+bruge+første+gang+du+logger+ind." End If
13. februar 2004 - 00:12
#22
Ok her er et svar :)
13. februar 2004 - 00:14
#23
Jeg har snart siddet her 24 timer. Godt der er nogen, der er vågne endnu. Bedste ven og kammersjuk :o) Takker igen-igen
Kurser inden for grundlæggende programmering