Avatar billede steen_hansen Forsker
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
Avatar billede eagleeye Praktikant
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")) & "', " & _
Avatar billede erikjacobsen Ekspert
12. februar 2004 - 23:30 #2
Hvor kommer variablen firstname fra? Skulle den ikke hentes via request.form ?
Avatar billede steen_hansen Forsker
12. februar 2004 - 23:36 #3
Hej eagleeye! :o)

Fra min form:

<input type="text" name="firstname" size="<%=Size%>" class="input">
Avatar billede eagleeye Praktikant
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")
Avatar billede steen_hansen Forsker
12. februar 2004 - 23:39 #5
Jeg har forøvrigt lavet det før i andre sammenhænge, hvor det virker perfekt.
Avatar billede eagleeye Praktikant
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")
Avatar billede steen_hansen Forsker
12. februar 2004 - 23:41 #7
Hm, E kører ikke sk..godt, hva'? :o)

Det hele bliver da hentet med Request.Form. Eller ...?
Avatar billede steen_hansen Forsker
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.
Avatar billede eagleeye Praktikant
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.
Avatar billede eagleeye Praktikant
12. februar 2004 - 23:45 #10
ok  :)
Avatar billede steen_hansen Forsker
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")))) & "', " & _
Avatar billede steen_hansen Forsker
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)
Avatar billede steen_hansen Forsker
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.
Avatar billede steen_hansen Forsker
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 (" & _
Avatar billede eagleeye Praktikant
12. februar 2004 - 23:53 #15
der mangler lige Gåseøjen omkring input navne

Request.Form(firstname)  -->  Request.Form("firstname")
Avatar billede steen_hansen Forsker
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 ....
Avatar billede eagleeye Praktikant
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 :)
Avatar billede steen_hansen Forsker
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?
Avatar billede eagleeye Praktikant
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) & "', " & _
Avatar billede steen_hansen Forsker
13. februar 2004 - 00:11 #20
YES igen-igen :o)

Læg lige et svar
Avatar billede steen_hansen Forsker
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
Avatar billede eagleeye Praktikant
13. februar 2004 - 00:12 #22
Ok her er et svar :)
Avatar billede steen_hansen Forsker
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
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