/ 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
skriv til db
Fra : Martin Jensen


Dato : 06-02-04 14:11

Jeg vil gerne kunne registrere hvornår man sidst er logget ind,
og har prøvet med denne kode:

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/db/stats.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Update brugere set"
strSQL = strSQL & "tid= now "
strSQL = strSQL & " Where Id = " & Request.Querystring("id") & "
"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

Den virker bare ikke... Den melder fejl ved Conn.Execute(strSQL)

Er det fordi jeg bruger now forkert?

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

 
 
Jens Gyldenkærne Cla~ (06-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-02-04 14:26

Martin Jensen skrev:

> strSQL = "Update brugere set"
> strSQL = strSQL & "tid= now "
> strSQL = strSQL & " Where Id = " & Request.Querystring("id") & "

Hvis du udskriver din sql-sætning, vil du opdage at der mangler et
mellemrum. Du kan muligvis se det direkte af koden ovenover, men
prøv alligevel for øvelsens skyld at udskrive resultatet af
strengsammensætningen herover.

> Den virker bare ikke... Den melder fejl ved Conn.Execute(strSQL)

Det gyldne råd når der er fejl ved sql-sætninger: Udskriv den
færdigopbyggede sql-streng. Hver gang. Hver eneste gang.

Med lidt øvelse kan det gøres på under et minut, og i mange
tilfælde vil fejlen være åbenlys når man kan se sql-sætningen i
sammenhæng. Hvis man ikke selv kan se det, er der gode muligheder
for at få hjælp i gruppen her når man sender den færdige sql-
sætning med.

Du kan se hvordan det gøres her: <http://asp-faq.dk/article/?id=41>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Jensen (06-02-2004)
Kommentar
Fra : Martin Jensen


Dato : 06-02-04 15:09

> Hvis du udskriver din sql-sætning, vil du opdage at der mangler et
> mellemrum.

Ja det virker...


> Det gyldne råd når der er fejl ved sql-sætninger: Udskriv den
> færdigopbyggede sql-streng. Hver gang. Hver eneste gang.


Jeg er ikke så trænet i asp... Så HVORDAN???


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

Jens Gyldenkærne Cla~ (06-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-02-04 15:19

Martin Jensen skrev:

>> Det gyldne råd når der er fejl ved sql-sætninger: Udskriv den
>> færdigopbyggede sql-streng. Hver gang. Hver eneste gang.

> Jeg er ikke så trænet i asp... Så HVORDAN???

Prøv at læse den artikel jeg linkede til i sidste indlæg - det er
forklaret der

>> Du kan se hvordan det gøres her:
>> <http://asp-faq.dk/article/?id=41>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Jensen (06-02-2004)
Kommentar
Fra : Martin Jensen


Dato : 06-02-04 16:23

> Prøv at læse den artikel jeg linkede til i sidste indlæg - det er
> forklaret der
>
>> Du kan se hvordan det gøres her:
>> <http://asp-faq.dk/article/?id=41>


Ok... Så har jeg et nyt spørgsmål nu

Jeg vil gerne gøre det muligt for brugerne at opdatere deres
oplysninger. Jeg bruger følgende:

strSQL = "Update brugere set "
strSQL = strSQL & "Fornavn = '" & Request.Form("forn") & "', "
strSQL = strSQL & "Efternavn = '" & Request.Form("eftern") & "', "
strSQL = strSQL & "password = '" & Request.Form("passw") & "', "
strSQL = strSQL & "Adresse = '" & Request.Form("adresse") & "', "
strSQL = strSQL & "Foedselsdato = '" & Request.Form("fodsel") & "',
"
strSQL = strSQL & "Telefon = '" & Request.Form("telefon") & "', "
strSQL = strSQL & "Mobil = '" & Request.Form("mobil") & "', "
strSQL = strSQL & "Email = '" & Request.Form("email") & "', "
strSQL = strSQL & "Posision = '" & Request.Form("pos") & "', "
strSQL = strSQL & "Vægt = '" & Request.Form("vagt") & "', "
strSQL = strSQL & "Højde = '" & Request.Form("hojde") & "', "
strSQL = strSQL & " Where Id = '" & Request.Form("trojenr") & "', "
Response.Write "SQL-sætning bliver: " & strSQL


' SQL sætning eksekveres
Conn.Execute(strSQL) <---linie 31

Den skriver følgende til mig:

SQL-sætning bliver: Update brugere set Fornavn = 'Martin', Efternavn
= 'Jensen', password = '1', Adresse = 'c', Foedselsdato = '000000',
Telefon = '00000000', Mobil = '00000000', Email = 'a', Posision =
'qb', Vægt = '00', Højde = '00', Where Id = '00',
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE
statement.

/senddata.asp, line 31

Hvad gør jeg forkert???



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

Jens Gyldenkærne Cla~ (06-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-02-04 16:36

Martin Jensen skrev:

> Ok... Så har jeg et nyt spørgsmål nu

Fint nok. En lille teknisk note første - angiv venligst hvem du
besvarer - der er ofte flere med i en tråd og det er langt fra
altid man kan regne ud hvem du svarer på.


> SQL-sætning bliver: Update brugere set Fornavn = 'Martin',
> Efternavn = 'Jensen', password = '1', Adresse = 'c',
> Foedselsdato = '000000', Telefon = '00000000', Mobil =
> '00000000', Email = 'a', Posision = 'qb', Vægt = '00', Højde =
> '00', Where Id = '00',


Den aktuelle fejl skal findes i sidste linje herover - begge
kommaer er forkerte. Der skal ikke komma til sidst i en sql-sætning
og der skal heller ikke komma før WHERE.

Kommaet bruges til at adskille listeelementer i sql-koden - fx en
liste af feltnavne:

a)    SELECT felt1, felt2, felt3, ...


b)    INSERT INTO foo (felt1, felt2, felt3, ...


- en liste af tabeller:

c)    ... FROM tabel1, tabel2, tabel3 WHERE tabel1 ...


- en liste af værdier:

d)    ... VALUES ('værdi1', 'værdi2', 'værdi3', ...


- eller (som i dit tilfælde) en liste af felt-værdi-par:

e)    ... SET felt1 = 'værdi1', felt2 = 'værdi2', ...


Lige som i normal tekst skal der ikke komma efter det sidste
element i listen.


Når du har rettet syntaksfejlen, vil du formentlig få en
datatypefejl. Du har sat samtlige værdier i anførselstegn. Det er
kun tekstværdier og (i nogle systemer) datoværdier der skal i
anførselstegn - talværdier skal ikke.

Endnu et par mulige fejlkilder: Du bruger danske tegn i dine
feltnavne. Det går muligvis godt, men det er generelt en god ide at
undgå det. Det samme gælder med reserverede ord som Password. Det
virker måske, men det er bedst at undgå den slags.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Jensen (06-02-2004)
Kommentar
Fra : Martin Jensen


Dato : 06-02-04 17:01

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Den aktuelle fejl skal findes i sidste linje herover - begge
> kommaer er forkerte. Der skal ikke komma til sidst i en sql-sætning
> og der skal heller ikke komma før WHERE.

Jeg havde prøvet både med og uden... Ingen af delene hjalp...


> Når du har rettet syntaksfejlen, vil du formentlig få en
> datatypefejl. Du har sat samtlige værdier i anførselstegn. Det er
> kun tekstværdier og (i nogle systemer) datoværdier der skal i
> anførselstegn - talværdier skal ikke.

Hvad med addresse... Det er både tal og text

Det virker stadig ikke som det skal... Nu skriver den:

SQL-sætning bliver: Update brugere set Fornavn = 'Martin', Efternavn =
'Jensen', password = 00, Adresse = v, Foedselsdato = 000000, Telefon =
00000000, Mobil = 00000000, Email = a, Posision = 'qb', Vægt = 00,
Højde = 00 Where Id = 00
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected
2.

/senddata.asp, line 31

Hvor er det at der er "Too few parameters"?



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

Jesper Stocholm (06-02-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 06-02-04 17:17

Martin Jensen <mrmanden@ofir.dk> wrote in news:c00do5$2gm$1@sunsite.dk:

> Jens GyldenkærneClausen wrote in
> dk.edb.internet.webdesign.serverside.asp:
>> Den aktuelle fejl skal findes i sidste linje herover - begge
>> kommaer er forkerte. Der skal ikke komma til sidst i en sql-sætning
>> og der skal heller ikke komma før WHERE.
>
> Jeg havde prøvet både med og uden... Ingen af delene hjalp...
>
>
>> Når du har rettet syntaksfejlen, vil du formentlig få en
>> datatypefejl. Du har sat samtlige værdier i anførselstegn. Det er
>> kun tekstværdier og (i nogle systemer) datoværdier der skal i
>> anførselstegn - talværdier skal ikke.
>
> Hvad med addresse... Det er både tal og text

Det vigtige er, hvilken type dine data har i din database. Dvs hvis du
gemmer fx "Telefonnummer" som et tekstfelt, så skal der plinger (') udenom
- selvom selve data rent faktisk er et tal.

> Det virker stadig ikke som det skal... Nu skriver den:
>
> SQL-sætning bliver: Update brugere set Fornavn = 'Martin', Efternavn =
> 'Jensen', password = 00, Adresse = v, Foedselsdato = 000000, Telefon =
> 00000000, Mobil = 00000000, Email = a, Posision = 'qb', Vægt = 00,
> Højde = 00 Where Id = 00
> Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

Gør som Jens siger, og gå din tabel igennem, og undersøg hvilke datatyper
de enkelte felter har. Hvis du gemmer Password i et tekst-felt, så skal der
plinger udenom. Følg derefter Jens' råd om at fjerne dine danske tegn i
feltnavne, da du risikerer fejl.


--
Jesper Stocholm
http://stocholm.dk

Jens Gyldenkærne Cla~ (06-02-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 06-02-04 17:29

Martin Jensen skrev:

> Hvad med addresse... Det er både tal og text

Som Jesper skriver, så er det datatypen i tabellen der betyder
noget. Hvis et felt både kan indeholde tal og tekst kan du roligt
regne med at det er et tekstfelt. Tal-felter kan _kun_ indeholde
tal.


> SQL-sætning bliver: Update brugere set Fornavn = 'Martin',
> Efternavn = 'Jensen', password = 00, Adresse = v,

Du har fået slettet for mange anførselstegn. Adresse er garanteret
ikke et talfelt (og "v" er under alle omstændigheder ikke en
talværdi) og password er formentlig heller ikke.

> Foedselsdato = 000000, Telefon = 00000000, Mobil = 00000000,
> Email = a,

Samme herover. Tjek felttyperne i din database og brug
anførselstegn ved tekstværdier, ingenting ved talværdier og
funktionen dateserial ved datoer (se her hvordan:
<http://asp-faq.dk/article/?id=98>).

Bemærk at specielt datoer er drilske - vent evt. med at indsætte
værdier i datofeltet til du har styr på resten.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Jensen (06-02-2004)
Kommentar
Fra : Martin Jensen


Dato : 06-02-04 17:52

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Martin Jensen skrev:
>
> > Hvad med addresse... Det er både tal og text
>
> Som Jesper skriver, så er det datatypen i tabellen der betyder
> noget. Hvis et felt både kan indeholde tal og tekst kan du roligt
> regne med at det er et tekstfelt. Tal-felter kan _kun_ indeholde
> tal.

Ja ok

Det hjælper bare ikke...

SQL-sætning bliver: Update brugere set Fornavn = 'Martin', Efternavn
= 'Jensen', password = '00', Adresse = 'i 9', Foedselsdato = 000000,
Telefon = 00000000, Mobil = 00000000, Email = 'a', Vagt = 89, Hojde
= 89, Posision = 'qb', Where Id = 81
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE
statement.

/senddata.asp, line 31

Fornavn, Efternavn, password, Adresse, Email og Posision er tekst
resten er tal...


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

Martin Jensen (06-02-2004)
Kommentar
Fra : Martin Jensen


Dato : 06-02-04 18:30

Har selv fundet problemet... det sidste ,

Og ja du har rettet det før Jens

Mange tak for hjælpen

--
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 (06-02-2004)
Kommentar
Fra : Jørn Andersen


Dato : 06-02-04 19:28

On Fri, 6 Feb 2004 16:51:51 +0000 (UTC), Martin Jensen
<mrmanden@ofir.dk> wrote:

>Det hjælper bare ikke...
>
>SQL-sætning bliver: Update brugere set Fornavn = 'Martin', Efternavn
>= 'Jensen', password = '00', Adresse = 'i 9', Foedselsdato = 000000,
>Telefon = 00000000, Mobil = 00000000, Email = 'a', Vagt = 89, Hojde
>= 89, Posision = 'qb', Where Id = 81
>Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
>
>[Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE
>statement.
>
>/senddata.asp, line 31
>
>Fornavn, Efternavn, password, Adresse, Email og Posision er tekst
>resten er tal...

Nu så jeg, at du selv havvde fundet fejlen, så det er jo fint.

Hvis det nu *ikke* havde hjulpet, og fejlen havde været i én ud af de
mange felter, så kunne en metode til at komme videre være at nøjes med
at opdatere nogle få felter ad gangen.
På den måde kan man skyde sig ind på en evt. fejl af den type som Jens
tidligere omtalte.

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste