|
| 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
| |
|
|