Avatar billede steen_hansen Forsker
23. maj 2004 - 15:26 Der er 28 kommentarer og
2 løsninger

Hvis formularfelt er forskelligt fra ingenting Så

Jeg har et Ja/Nej-felt i MS Access database.

Her vil jeg gerne have krydset feltet af, hvis et formularfelt er forskelligt fra ingenting.

Jeg har i forvejen en syntax error, som jeg tror skyldes mit forsøg på at få krydset dette felt af. Min INSERT INTO ser således ud (den, der giver fejlen):

Conn.Execute("INSERT INTO profiles (username, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner form) VALUES (" & _
    "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _
    "'" & SQLEncode(firstname) & "', " & _
    "'" & SQLEncode(lastname) & "', " & _
    ...........
Conn.Close

Oven over har jeg sat dette ind, og den er ikke holdbar:

Dim vOwner
If Request.Form("form") <> "" Then
    vOwner = True
    owner = vOwner
End If

Hvordan får jeg markeret dette Ja/Nej-felt, hvis form <> ""?
Avatar billede steen_hansen Forsker
23. maj 2004 - 15:27 #1
Ups, tror jeg har fundet fejlen, der mangler et komma. Vender tilbage ...
Avatar billede steen_hansen Forsker
23. maj 2004 - 16:08 #2
Problemet er et helt andet:

Jeg skal have krydset et Ja/Nej-felt af, hvis et formularfelt <> ""

If Request.Form(FormularFelt) <> "" Then
    Kryds af i Ja/Nej-feltet "owner" i databasen
End If

Det skal så klares med ovenstående INSERT INTO. Håber på hjælp.
Avatar billede keysersoze Ekspert
23. maj 2004 - 19:40 #3
If Request.Form(FormularFelt) <> "" Then
    Ffield = "TRUE"
Else
    Ffield = "FALSE"
End If

og så indsætter du bare variablen Ffield i din insert into - fx;

INSERT INTO tabel (owner) VALUES (" & Ffield & ")
Avatar billede steen_hansen Forsker
23. maj 2004 - 19:45 #4
Ok, men hvordan skal det sidste se ud i det overnstående?

Conn.Execute("INSERT INTO profiles (username, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner, form) VALUES (" & Ffield & _
Avatar billede steen_hansen Forsker
23. maj 2004 - 19:48 #5
Eller således?

Dim vOwner
If Request.Form("form") <> "" Then
    vOwner = True
Else
    vOwner = False
End If

Conn.Execute("INSERT INTO profiles (username, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner, form) VALUES (" & vOwner & _
Avatar billede steen_hansen Forsker
23. maj 2004 - 19:53 #6
Jeg har arbejdet på det her on 'n off de sidste 3-4 timer. Håber virkelig, der er én, der kan hjælpe, for jeg tror stirrer mig blind i øjeblikket. Nu får jeg at vide:

Request object error 'ASP 0102 : 80004005'

Expecting string input


The function expects a string as input.

Sætter gerne point op.
Avatar billede keysersoze Ekspert
23. maj 2004 - 19:54 #7
Dim vOwner
If Request.Form("form") <> "" Then
    vOwner = "True"
Else
    vOwner = "False"
End If

Conn.Execute("INSERT INTO profiles (XXXXX, username, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner, form) VALUES (" & vOwner & ", '" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', '" & SQLEncode(firstname) & "', '" & SQLEncode(lastname) & "',......

så skal XXXXX byttes ud med det korrekt formfelt - og så skal sql'en selvfølgelig fortsættes
Avatar billede steen_hansen Forsker
23. maj 2004 - 19:58 #8
Det korrekte formfelt er owner:

Conn.Execute("INSERT INTO profiles (username, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner .................

Hvordan skal det så se ud?
Avatar billede steen_hansen Forsker
23. maj 2004 - 20:01 #9
If JMail.Execute() = True Then
            Conn.Execute("INSERT INTO profiles (username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner, nameofforum) VALUES (" & vOwner & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _
                "'" & SQLEncode(vPassword) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(firstname))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(lastname))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(address1))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(place))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(zip))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(city))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(phone))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(cellphone))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(dateofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(monthofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(yearofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("owner"))) & "', " & _
                "'" & Trim(SQLEncode(SQLEncode(nameofforum))) & "')")
            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

Kommer lige med strukturen i DB, øjeblik
Avatar billede keysersoze Ekspert
23. maj 2004 - 20:02 #10
Dim vOwner
If Request.Form("form") <> "" Then
    vOwner = "True"
Else
    vOwner = "False"
End If

SQL = INSERT INTO profiles (owner, username, firstname) VALUES (" & vOwner & ", '" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', '" & SQLEncode(firstname) & "', '" & SQLEncode(lastname) & "')"
Conn.Execute(SQL)
Avatar billede steen_hansen Forsker
23. maj 2004 - 20:06 #11
Databasen:

userID: Autonr. - primær nøgle
username: Tekst
pass: Tekst
firstname: Tekst
lastname: Tekst
address1: Tekst
place: Tekst
zip: Tekst
city: Tekst
phone: Tekst
cellphone: Tekst
email: Tekst
dateofbirth: Tekst
monthofbirth: Tekst
yearofbirth: Tekst
descrition: Notat
owner: Ja/Nej
nameoffoum: Tekst
Avatar billede steen_hansen Forsker
23. maj 2004 - 20:12 #12
Nope, det er det samme lo.. skidt

Request object error 'ASP 0102 : 80004005'

Expecting string input


The function expects a string as input.

Og det er fra denne linie:

Conn.Execute("INSERT INTO profiles (username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, owner, nameofforum) VALUES (" & vOwner & _
Avatar billede keysersoze Ekspert
23. maj 2004 - 20:22 #13
men... hvorfor bliver du også ved med at lave om i det jeg sender til dig??? som du har lavet det nu forsøger du at sætte TRUE/FALSE ind i kolonnen username og det gør jeg ikke i mit eksempel
Avatar billede steen_hansen Forsker
23. maj 2004 - 20:42 #14
Så skal denne linie tages helt ud?

"'" & Trim(SQLEncode(Request.Form("vOwner"))) & "', " & _
Avatar billede steen_hansen Forsker
23. maj 2004 - 20:44 #15
Jeg roder videre med skidtet. Finder jeg løsningen, poster jeg den her. Kan du ikke lægge et svar?
Avatar billede steen_hansen Forsker
23. maj 2004 - 23:45 #16
Jeg har lavet det nøjagtigt efter dine foreskrifter, men jeg får stadig dette:

Request object error 'ASP 0102 : 80004005'

Expecting string input

default.asp, line 78

The function expects a string as input.

Linie 78:
Conn.Execute("INSERT INTO profiles (owner, username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, nameofforum) VALUES (" & vOwner & _
Avatar billede steen_hansen Forsker
24. maj 2004 - 00:35 #17
- Og jeg har lavet et JMail-script, som henter oplysningerne fint. Alle oplysninger kommer med i mailen, så jeg forstår ikke de manglende data :o(
Avatar billede keysersoze Ekspert
24. maj 2004 - 10:55 #18
idet du skriver _ så fortsætter linien, og dér ved jeg ikke hvordan ASP'en tæller linier... derfor kan fejlen meget vel ligge et andet sted. Hvis du derimod opbygger scriptet på den måde jeg har vist (altså uden brug af _) så kan det være lettere at overskue.

Endelig - hvis du skriver

sql = ...
conn.execute(sql)

så kan du response.write sql'en og dermed se hvilke data der reelt forsøges at lægges ind og det kan også hjælpe rigtig meget
Avatar billede steen_hansen Forsker
24. maj 2004 - 11:19 #19
Når du afslutter en linie med & _ er det udelukkende med det formål at overskueliggøre koden. I realiteten kunne det lige så godt stå på én linie. Og det gør det i realiteten (der bliver ikke talt linier). Så slipper man for en linie på 4 meters længde :o)

Ok, jeg vil prøve at sætte conn.execute(sql) ind
Avatar billede steen_hansen Forsker
24. maj 2004 - 23:00 #20
Jeg har ikke lige kunnet finde tid, og for lige at opdatere, så lægger jeg koden/databasen, som den ser ud nu:

<%
        Dim vPassword
        vPassword = RandomString(8)

        Dim vOwner
        If Request.Form("comunity") <> "" Then
            vOwner = True
        Else
            vOwner = False
        End If

            Conn.Execute("INSERT INTO profiles (owner, username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, comunity) VALUES (" & vOwner & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _
                "'" & SQLEncode(vPassword) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(firstname))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(lastname))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(address1))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(place))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(zip))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(city))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(phone))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(cellphone))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(dateofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(monthofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form(yearofbirth))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _
                "'" & Trim(SQLEncode(SQLEncode(comunity))) & "')")
            Conn.Close
%>

DATABASEN:

userID: Autonr. - primær nøgle
owner: Ja/Nej
username: Tekst
pass: Tekst
firstname: Tekst
lastname: Tekst
address1: Tekst
place: Tekst
zip: Tekst
city: Tekst
phone: Tekst
cellphone: Tekst
email: Tekst
dateofbirth: Tekst
monthofbirth: Tekst
yearofbirth: Tekst
descrition: Notat
comunity: Tekst

Som sagt, så sender jeg brugerens data v.hj.a. et JMail-script, og her kommer alle brugerens data med - mailen bliver afsendt ok.
Avatar billede keysersoze Ekspert
31. maj 2004 - 09:09 #21
Jeg ved ikke om jeg skal kalde det komisk eller tragisk - for du laver om på alle de forslag jeg kommer med, og så er der altså ikke noget at sige til at det fejler...

<%
Dim vPassword
vPassword = RandomString(8)

Dim vOwner
If Request.Form("comunity") <> "" Then
    vOwner = "True"
Else
    vOwner = "False"
End If

Conn.Execute("INSERT INTO profiles (owner, username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, comunity) VALUES (" & vOwner & ", '" & Trim(SQLEncode(Request.Form("username"))) & "', '" & SQLEncode(vPassword) & "', '" & Trim(SQLEncode(Request.Form("firstname"))) & "', '" & Trim(SQLEncode(Request.Form("lastname"))) & "', '" & Trim(SQLEncode(Request.Form("address1"))) & "', '" & Trim(SQLEncode(Request.Form("place"))) & "', '" & Trim(SQLEncode(Request.Form("zip"))) & "', '" & Trim(SQLEncode(Request.Form("city"))) & "', '" & Trim(SQLEncode(Request.Form("phone"))) & "', '" & Trim(SQLEncode(Request.Form("cellphone"))) & "', '" & Trim(SQLEncode(Request.Form("email"))) & "', '" & Trim(SQLEncode(Request.Form("dateofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("monthofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("yearofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("description"))) & "', '" & Trim(SQLEncode(SQLEncode("comunity"))) & "')")
Conn.Close
%>
Avatar billede steen_hansen Forsker
31. maj 2004 - 09:24 #22
keysersoze, my man :o)

Nej, jeg har ikke lavet om på alle dine scripts, jeg har forsøgt at få overblikket, og det virker perfekt. Jeg har sat point op, og undskyld den sene besvarelse. Den er bare pinge-ling nu.

Og dog :o/ Navnet på comunity bliver ikke sendt med i mailen? Og i databasen bliver comunity sat ind i feltet comunity?
Avatar billede keysersoze Ekspert
31. maj 2004 - 09:36 #23
hvis det bliver sat ind det rigtige sted i basen - men ikke kommer med i mailen, så må det være mailscriptet den er gal med... og det kan jeg jo ikke se
Avatar billede steen_hansen Forsker
31. maj 2004 - 12:51 #24
Ok, men mailscriptet er der ikke pillet ved. Prøver at lægge det her senere.

Det er meningen med comnuity-feltet, at man skal navngive sit comunity. Og her skrives der bare "comunity" uanset hvad man navngiver sit comunity.
Avatar billede keysersoze Ekspert
31. maj 2004 - 12:57 #25
det er da klart - for det bliver hardcodet ind i basen ligesom det eksempel du sendte... så mon ikke det skal være sådan;

Conn.Execute("INSERT INTO profiles (owner, username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, comunity) VALUES (" & vOwner & ", '" & Trim(SQLEncode(Request.Form("username"))) & "', '" & SQLEncode(vPassword) & "', '" & Trim(SQLEncode(Request.Form("firstname"))) & "', '" & Trim(SQLEncode(Request.Form("lastname"))) & "', '" & Trim(SQLEncode(Request.Form("address1"))) & "', '" & Trim(SQLEncode(Request.Form("place"))) & "', '" & Trim(SQLEncode(Request.Form("zip"))) & "', '" & Trim(SQLEncode(Request.Form("city"))) & "', '" & Trim(SQLEncode(Request.Form("phone"))) & "', '" & Trim(SQLEncode(Request.Form("cellphone"))) & "', '" & Trim(SQLEncode(Request.Form("email"))) & "', '" & Trim(SQLEncode(Request.Form("dateofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("monthofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("yearofbirth"))) & "', '" & Trim(SQLEncode(Request.Form("description"))) & "', '" & Trim(SQLEncode(Request.Form("comunity"))) & "')")
Avatar billede steen_hansen Forsker
31. maj 2004 - 13:08 #26
NU er den pinge-ling. Tak for hjælpen, keysersoze :o)
Avatar billede keysersoze Ekspert
31. maj 2004 - 13:16 #27
np
Avatar billede steen_hansen Forsker
31. maj 2004 - 14:11 #28
Lige til en orientering: I stedet for at have en 6 meter lang linie, kan du dele den op på denne måde:

Conn.Execute("INSERT INTO profiles (owner, username, pass, firstname, lastname, address1, place, zip, city, phone, cellphone, email, dateofbirth, monthofbirth, yearofbirth, description, comunity) VALUES (" & vOwner & ", " & _
    "'" & Trim(SQLEncode(Request.Form("username"))) & "', " &  _
    "'" & SQLEncode(vPassword) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("firstname"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("lastname"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("address1"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("place"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("zip"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("city"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("phone"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("cellphone"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("dateofbirth"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("monthofbirth"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("yearofbirth"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("description"))) & "', " & _
    "'" & Trim(SQLEncode(Request.Form("comunity"))) & "')")
Conn.Close

Det giver et helt andet overblik :o)
Avatar billede keysersoze Ekspert
31. maj 2004 - 15:04 #29
smag og behag - jeg kan personligt ikke lide den måde at dele det op på.
Avatar billede steen_hansen Forsker
31. maj 2004 - 18:29 #30
keyser, jeg har tilføjet et felt, der hedder "selectcomnuity" (vælges fra drop-down).

Jeg vil gerne have, at hvis man opretter et comunity, så bliver navnet gemt i RS("comunity"). Den del er i orden, men jeg vil også have, at man så er medlem af det community man opretter, og det troede jeg umiddelbart kunne lade sig gøre på denne måde:

Dim selectcomunity
comunity = Request.Form("comunity")
If comunity <> "" Then
    selectcomunity = comnuity
End If

Det kan det så ikke. Hvordan tager jeg navnet på det comunity, jeg opretter og lægger det samme navn ned i selectcomunity?

Altså skal det navn, man indtaster i comunity kopieres over i feltet selectcomunity. Er det til at forstå? :o)

Opretter gerne et spørgsmål.
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