/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Kan ikke tilføje til en database
Fra : Ole Moe


Dato : 28-11-01 15:36

Jeg er løbet ind i endnu et problem. Jeg prøver at lave en simpel
telefonbog, udfra eksemplet i HTML.dk's tutorial, men jeg kan
ikke få den til at opdatere. Min asp fil ser ca. sådan her ud:

strSQL = "Insert into personer ("
strSQL = strSQL & "Fornavn, "
strSQL = strSQL & "Efternavn, "
strSQL = strSQL & "Telefon, "
strSQL = strSQL & "Foedselsdato) "

strSQL = strSQL & "values( "
strSQL = strSQL & Request.Form("Fornavn") & ", "
strSQL = strSQL & Request.Form("Efternavn") & ", "
strSQL = strSQL & Request.Form("Telefon") & ", "
strSQL = strSQL & Request.Form("Foedselsdato") & ")"

Conn.Execute(strSQL)

Jeg får en fejlmeddelelse der ser sådan ud:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få
parametre. Der var ventet 2.

- Hjælp ønsket, synes syntaksen er svær, måske jeg bare skulle
læse lidt mere om ASP...

På forhånd tak.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Anders Roy Christian~ (28-11-2001)
Kommentar
Fra : Anders Roy Christian~


Dato : 28-11-01 16:36

Ole Moe wrote in dk.edb.internet.webdesign.serverside.asp:
> Jeg er løbet ind i endnu et problem. Jeg prøver at lave en simpel
> telefonbog, udfra eksemplet i HTML.dk's tutorial, men jeg kan
> ikke få den til at opdatere. Min asp fil ser ca. sådan her ud:
>
> strSQL = "Insert into personer ("
> strSQL = strSQL & "Fornavn, "
> strSQL = strSQL & "Efternavn, "
> strSQL = strSQL & "Telefon, "
> strSQL = strSQL & "Foedselsdato) "
>
> strSQL = strSQL & "values( "
> strSQL = strSQL & Request.Form("Fornavn") & ", "
> strSQL = strSQL & Request.Form("Efternavn") & ", "
> strSQL = strSQL & Request.Form("Telefon") & ", "
> strSQL = strSQL & Request.Form("Foedselsdato") & ")"


Prøv det her:

strSQL = strSQL & "Fornavn, "
strSQL = strSQL & "Efternavn, "
strSQL = strSQL & "Telefon, "
strSQL = strSQL & "Foedselsdato) "

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & request.form("Fornavn") & "', "
strSQL = strSQL & "'" & request.form("Efternavn") & "', "
strSQL = strSQL & "'" & request.form("Telefon") & "', "
strSQL = strSQL & "'" & request.form("Foedselsdato") & "')"


Dette her burde virke, jeg har selv haft samme problem!
Hvis det ikke virker så sig til!!

Jeg håber det hjælper

Med venlig hilsen Anders Roy Christiansen
-------------------------------------------------------------
Hjemmeside: http://www22.brinkster.com/jesand
E-mail: anders.roy@christiansen.mail.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ole Moe (28-11-2001)
Kommentar
Fra : Ole Moe


Dato : 28-11-01 16:47

Vidunderligt...

Tak Anders. Det virkede lige som det skulle, men så kommer der et
tillægsspørgsmål... Hvorfor?

Jeg mener selvfølgelig Hvorfor alle de ekstra apostrofer og
anførselstegn, er det fordi at det svar der kommer fra mit
request.form("xxx") skal i apostrofer ligesom hvis jeg havde skrevet
almindelig tekst ind i stedet for at hente det fra en form?

Endnu engang tak... Det er rart med en hjælpende hånd, når nøden er
størst.

Hilsen
Ole Moe

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Tumlehund (28-11-2001)
Kommentar
Fra : Tumlehund


Dato : 28-11-01 18:20

"Ole Moe" <ole.moe@tdcspace.dk> wrote in message
news:9u30ts$jji$1@sunsite.dk...
> Vidunderligt...
>
> Tak Anders. Det virkede lige som det skulle, men så kommer der et
> tillægsspørgsmål... Hvorfor?

hvorfor hvorfor dit og hvorfor hvorfor dat

Ja, det er jo altid rart med en forklaring på tingene! Grunden til du skal
bruge apostroffer er, at dine felter i DB'en (fornavn, efternavn osv.) højst
sandsynlig er af datatypen string. Når man i SQL skal indsætte en string,
skal der apostroffer rundt om den værdi man prøver at indsætte.

Hvis dine felter i DB'en derimod havde været af datatype int, skulle du IKKE
bruge apostroffer, men dine værdier skulle jo så selvføleglig være tal....

Håber det hjalp

Mvh
T



Ole Moe (29-11-2001)
Kommentar
Fra : Ole Moe


Dato : 29-11-01 01:12

Tak Tumlehund

Selvfølgelig hjalp det... Det er dejligt at få svar på mine halvdumme(?)
spørgsmål.

Hilsen
Ole Moe

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Simon (29-11-2001)
Kommentar
Fra : Simon


Dato : 29-11-01 13:38

Hmmm...jeg er sgu' ked af det, men jeg forstår det stadig ikke

strSQL = strSQL & "'" & request.form("Fornavn") & "', "
^^^
|||||

Det er disse paranteser og &-tegn jeg ikke forstår!!??

Håber på svar!


Tumlehund wrote in dk.edb.internet.webdesign.serverside.asp:
> "Ole Moe" <ole.moe@tdcspace.dk> wrote in message
> news:9u30ts$jji$1@sunsite.dk...
> > Vidunderligt...
> >
> > Tak Anders. Det virkede lige som det skulle, men så kommer der et
> > tillægsspørgsmål... Hvorfor?
>
> hvorfor hvorfor dit og hvorfor hvorfor dat
>
> Ja, det er jo altid rart med en forklaring på tingene! Grunden til du skal
> bruge apostroffer er, at dine felter i DB'en (fornavn, efternavn osv.)
højst
> sandsynlig er af datatypen string. Når man i SQL skal indsætte en string,
> skal der apostroffer rundt om den værdi man prøver at indsætte.
>
> Hvis dine felter i DB'en derimod havde været af datatype int, skulle du
IKKE
> bruge apostroffer, men dine værdier skulle jo så selvføleglig være tal....
>
> Håber det hjalp
>
> Mvh
> T
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Simon (29-11-2001)
Kommentar
Fra : Simon


Dato : 29-11-01 13:41

Hmmm... det gik jo ikke skide godt med det indlæg! :)

Det jeg mente var, at det er den første omgang gåseøjne og &-tegn jeg ikke
forstår skal være der!??

strSQL = strSQL & "'" & request.form("Fornavn") & "', "

På forhånd tak

VH
Simon






Tumlehund wrote in dk.edb.internet.webdesign.serverside.asp:
> "Ole Moe" <ole.moe@tdcspace.dk> wrote in message
> news:9u30ts$jji$1@sunsite.dk...
> > Vidunderligt...
> >
> > Tak Anders. Det virkede lige som det skulle, men så kommer der et
> > tillægsspørgsmål... Hvorfor?
>
> hvorfor hvorfor dit og hvorfor hvorfor dat
>
> Ja, det er jo altid rart med en forklaring på tingene! Grunden til du skal
> bruge apostroffer er, at dine felter i DB'en (fornavn, efternavn osv.)
højst
> sandsynlig er af datatypen string. Når man i SQL skal indsætte en string,
> skal der apostroffer rundt om den værdi man prøver at indsætte.
>
> Hvis dine felter i DB'en derimod havde været af datatype int, skulle du
IKKE
> bruge apostroffer, men dine værdier skulle jo så selvføleglig være tal....
>
> Håber det hjalp
>
> Mvh
> T
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (29-11-2001)
Kommentar
Fra : Jørn Andersen


Dato : 29-11-01 15:44

On Thu, 29 Nov 2001 12:41:15 +0000 (UTC), Simon
<s_lytting@hotmail.com> wrote:

Hej Simon,

>Hmmm... det gik jo ikke skide godt med det indlæg! :)

Prøv med fast tegnbredde næste gang (fx Courier) ...

>Det jeg mente var, at det er den første omgang gåseøjne og &-tegn jeg ikke
>forstår skal være der!??
>
>strSQL = strSQL & "'" & request.form("Fornavn") & "', "

Det simple svar:
Fordi værdien af request.form("Fornavn") er en tekststreng.

Den udvidede udgave:
Det du gerne vil have til slut er en SQL-streng, der (lidt forsimplet)
ser sådan ud:

INSERT INTO personer (Fornavn, Efternavn) VALUES ("Jens", "Hansen");

- og vi husker så lige, at der skal anførsels tegn om tekststrenge
(her altså om "Jens" og "Hansen").

Ovenstående er helt standard SQL.

Når vi så vil opbygge tekst strengen i ASP, så har vi det problem, at
man her også bruger anførselstegn til at omkranse tekststrenge. Så for
at det ikke skal drille, så ændrer vi lige ovenstående
dobbelt-anf.tegn til enkelt-anf.tegn:

strSQL = "INSERT INTO personer (Fornavn, Efternavn) VALUES ('Jens',
'Hansen');"

og da vi kan forudse, at den bliver for lang til linien, deler vi lige
et par gange:
strSQL = "INSERT INTO personer" & _
" (Fornavn, Efternavn) VALUES" & _
" ('Jens'," & _
" 'Hansen');"


Herefter er det bare at udskifte navnene (altså Jens og Hansen) med
variable:
- i stedet for:
Jens
skriver vi:
" & request.form("Fornavn") & "
- og i stedet for:
Hansen
skriver vi:
" & request.form("Efternavn") & "


strSQL = "INSERT INTO personer" & _
" (Fornavn, Efternavn) VALUES" & _
" ('" & request.form("Fornavn") & "'," & _
" '" & request.form("Efternavn") & "');"



Hvorfor går det i øvrigt altid galt med at opbygge SQL-strenge?
---------------------------------------------------------------

Som regel fordi man glemmer, at det det man skal have ud af det hele
jo er en *tekststreng*. Så man laver altså sin SQL-streng af en række
små tekst-stumper - opbygget af variable.


Hvad kan man gøre, når man har sådan et problem?
------------------------------------------------
Når man lige har lært grundreglerne, kan det nemt gå galt alligevel.
Men der er nogle helt simple ting, man kan gøre:

1. Prøv at udskrive SQL-strengen, inden du eksekverer:
--------------------------------
strSQL = "blabla"
Response.Write strSQL
Response.End

- så er det ofte let at se, hvor den går galt.

2. Gem formular-værdier i en variabel
-------------------------------------
I stedet for at indsætte Request.Form(blabla) direkte i SQL-strengen,
så gem dem i en variabel først. Så er det lettere at lave en
tjek-procedure eller evt. udskrive de enkelte variable (og koden er
ofte også lettere at overskue, hvis man vælge fornuftige navne).

Fx i stedet for:

strSQL = "INSERT INTO personer" & _
" (Fornavn, Efternavn) VALUES" & _
" ('" & request.form("Fornavn") & "'," & _
" '" & request.form("Efternavn") & "');"

skriver du:

strFornavn = Request.Form("Fornavn")
strEfternavn = Request.Form("Efternavn")

If Trim(strFornavn) = "" Or Trim(strEfternavn) = "" Then
' - der var en fejl
Else
strSQL = "INSERT INTO personer" & _
" (Fornavn, Efternavn) VALUES" & _
" ('" & strFornavn & "'," & _
" '" & strEfternavn & "');"
End If


Det kan man så udbygge efter behov.

Håber det hjalp lidt.


Good luck,
Jørn

--
Jørn Andersen
Brønshøj

Ole Moe (30-11-2001)
Kommentar
Fra : Ole Moe


Dato : 30-11-01 00:01

Hej Jørn

Det må jeg sige... simpelthen et kanont indlæg, det skal være en lille del af
min kommende ASP-dokumentation. Tak for din viden og tid.

Hilsen
"Ole Moe"

PS: det var jo en tekststreng, derfor anførselstegnene.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste