/ 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
Hvor er fejl?
Fra : N9


Dato : 28-04-03 21:16

Hej

Min SQL sætning:

SQL = "INSERT INTO [count1] (image, userid)VALUES('"& [fil] &"', '"& [ID1]
&"')"
conn.Execute (SQL)

Når jeg laver en response.write:

INSERT INTO [count1] (image, userid)VALUES('178udp.rar', '1')

Og her er min fejlmelding:
_______________________________________________________
Microsoft JET Database Engine fejl '80040e14'

Der er en syntaksfejl i INSERT INTO-sætningen.

__________________________________________________

Hvor er det der galt? Håber at i kan hjælpe

N9





 
 
Jesper Stocholm (28-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 28-04-03 21:22

N9 wrote :

> Hej
>
> Min SQL sætning:
>
> SQL = "INSERT INTO [count1] (image, userid)VALUES('"& [fil] &"', '"&
> [ID1] &"')"
> conn.Execute (SQL)
>
> Når jeg laver en response.write:
>
> INSERT INTO [count1] (image, userid)VALUES('178udp.rar', '1')
>
> Og her er min fejlmelding:
> _______________________________________________________
> Microsoft JET Database Engine fejl '80040e14'
>
> Der er en syntaksfejl i INSERT INTO-sætningen.

hhar du prøvet at sætte mellemrum imellem ordet "VALUES" og ordene
omkring det ? Altså bliver den

INSERT INTO [count1] (image, userid) VALUES ('178udp.rar', '1')



--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk: FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html: Skriv under det du svarer på
Svar venligt til gruppen og ikke til mig privat !

N9 (28-04-2003)
Kommentar
Fra : N9


Dato : 28-04-03 21:26


> INSERT INTO [count1] (image, userid) VALUES ('178udp.rar', '1')

Ja det har jeg prøvet, men stadig samme fejl.

Mvh
N9



Jesper Stocholm (28-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 28-04-03 21:33

N9 wrote :

>> INSERT INTO [count1] (image, userid) VALUES ('178udp.rar', '1')
>
> Ja det har jeg prøvet, men stadig samme fejl.

har du prøvet at fjerne de kantede parenteser om tabelnavnet ? Klammerne
bruges normalt kun omkring attributnavne og ikke tabelnavne.



--
Jesper Stocholm - http://stocholm.dk

Svar til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

N9 (28-04-2003)
Kommentar
Fra : N9


Dato : 28-04-03 21:38


> har du prøvet at fjerne de kantede parenteser om tabelnavnet ? Klammerne
> bruges normalt kun omkring attributnavne og ikke tabelnavne.

ja, det har jeg lige prøvet, men stadig samme fejl.

Mvh
N9



Jens Gyldenkærne Cla~ (28-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-03 21:32

N9 skrev:

> Når jeg laver en response.write:
>
> INSERT INTO [count1] (image, userid)VALUES('178udp.rar', '1')

a) Brug mellemrum før og efter VALUES.
b) Hvis userid er et talfelt skal der ikke anførselstegn om
værdien.
--
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

N9 (28-04-2003)
Kommentar
Fra : N9


Dato : 28-04-03 21:46


> a) Brug mellemrum før og efter VALUES.

Det har jeg også prøvet men samme fejl

> b) Hvis userid er et talfelt skal der ikke anførselstegn om
> værdien.

Userid er tal og har kovertere det med cint() og i DB er det sat til
talværdi.
Har også prøvet med uden anførelses tegn.

Mvh
Nhi



Kasper Katzmann (29-04-2003)
Kommentar
Fra : Kasper Katzmann


Dato : 29-04-03 08:07

N9 skrev
> Hej
>
> Min SQL sætning:
>
> SQL = "INSERT INTO [count1] (image, userid)VALUES('"& [fil] &"', '"&
> [ID1] &"')"
> conn.Execute (SQL)
>

Den burde i virkeligheden se sådan ud:

SQL = "INSERT INTO count1(image, userid) VALUES('" & fil & "', " & ID1 & ")"
Conn.Execute(SQL)

Altså væk med de kantede paranteser (som kun er nødvendige når du benytter
feltnavne der er reserveret af databasen).

--
Mvh
Kasper Katzmann
------------------------------
Katzmann Consulting
http://www.katzmann.dk



N9 (29-04-2003)
Kommentar
Fra : N9


Dato : 29-04-03 08:25


> SQL = "INSERT INTO count1(image, userid) VALUES('" & fil & "', " & ID1 &
")"
> Conn.Execute(SQL)

Hej

jeg har ændret det til:
strSQL = "Insert into taeller (Userid, billede) values("& ID1 &",'"& fil1
&"')"

Jeg ved ikke hvad det er som gik galt, men jeg tro at det er IMAGE som er et
reserveret ord???
Nu virker det ihverfald og tak til Jens, Jesper og dig Kapser for jeres
hjælp.

Mvh
N9



Jens Gyldenkærne Cla~ (29-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-04-03 09:22

Kasper Katzmann skrev:

> Altså væk med de kantede paranteser (som kun er nødvendige når
> du benytter feltnavne der er reserveret af databasen).

Kantede parenteser skader ikke. Hvis man er i tvivl er det bedre at
sætte dem ind overalt (ved alle objektnavne) end at undlade dem.

N9 har fået løst problemet nu, men det kunne formentlig have været
løst netop ved at bruge kantede parenteser:

SQL = "INSERT INTO [count1] ([image], [userid]) VALUES('" & _
   fil & _
   "', " & ID1 & ")"
--
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

Jesper Stocholm (29-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 29-04-03 09:40

Jens Gyldenkærne Clausen <jens@gyros.invalid> skrev:
>Kasper Katzmann skrev:
>
>> Altså væk med de kantede paranteser (som kun er nødvendige når
>> du benytter feltnavne der er reserveret af databasen).
>
>Kantede parenteser skader ikke. Hvis man er i tvivl er det bedre at
>sætte dem ind overalt (ved alle objektnavne) end at undlade dem.

Det var da et lidt pudsigt svar ... specielt fra dig, må jeg indrømme.


Naturligvis kan det være en hjælp at gøre som du beskriver, men det
bør
under alle omstændigheder undersøges, hvorfor der kommer en
uforståelig
fejl. At sætte klammer om alle tabelnavne samt attributnavne er efter

min bedste overbevisning en "work-around" og ikke en løsning. Det er
klart, at resultatet er det samme - om man bruger klammer eller ej,
men
det er imo meget dårlig kodeskik, da koden ved introduktion af flere
tegn sandsynligvis afvikles langsommere.

En analogi - der nok er sat lidt på spidsen - kunne være at vælge
Longtext/Notat-typen for alle felter i en tabel. Det har nemlig den
charmerende fordel, at stort set alle data kan indsættes i det - og så

længe man sætter gåseøjne om værdierne af variablerne i SQL-
sætningerne, så er det totalt transperant for brugeren om der
indsættes
tal, bitværdier eller tekst i felterne. Så er man også fri for
problemer med datatype mismatch'es, overflows, afskæring etc, da alle

data blot kyles ind i felter på størrelse med KB-hallen.

--
* Jesper Stocholm *
* http://stocholm.dk *
* Svar til gruppen og ikke til mig privat ! *
* Hvor svært kan det være ? *


Jens Gyldenkærne Cla~ (29-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-04-03 12:11

Jesper Stocholm skrev:

>> I mine øjne er noget af det vigtigste i kodeskrivning at man
>> er konsekvent. Derfor kan det være kønnere at skrive klammer
>> alle steder i stedet for kun de steder hvor det er nødvendigt.
>
> Eller ... imo smartere ... vælge attributnavne, der ikke
> kræver klammer.

Vi er da helt enige. Jeg skrev før:

,----
| Jeg vil også til enhver tid anbefale at man bruger "sikre"
| objektnavne så man slet ikke behøver at bruge klammer.
`----


> Det gør også skift imellem forskellige db-systemer nemmere.

Hvis man skal være bedst muligt forberedt til et db-skift er "sikre
navne" et endnu mere snævert begreb. Det kræver efter min erfaring
lidt øvelse at spotte potentielle reserverede ord - men det er
bestemt både muligt og anbefalelsesværdigt. Det kan desværre støde
lidt sammen med et andet godt råd - nemlig at man skal vælge
deskriptive feltnavne. "By" ville for eksempel være et glimrende
feltnavn hvis det ikke lige var sammenfaldende med et engelsk ord
der er brugt i SQL-sproget.


> Jeg kan ikke se, hvad der kan retfærdiggøre at man bruger
> navne på attributter, der kræver klammer. "Læsbarhed" er imo
> slet ikke argument nok.

Jeg tror du har misforstået min anbefaling (se evt. mit selvcitat
længere oppe). Min pointe med "indklamningsindlægget" var blot at
når man allerede *har* feltnavne der kræver klammer, så kan
klammerne være den bedste måde at få det til at virke på kort sigt
(som du selv har erfaret er det ikke altid ligetil at ændre et
feltnavn).

Mere specifikt var det en kommentar til et indlæg der foreslog at
fjerne klammerne for at løse problemet - her ville jeg bare
indskyde at man aldrig kan fjerne en syntaksfejl ved at undlade
klammer om et feltnavn.


> Måske ikke ... men jeg forsøgte også at fokusere på
> kodeskikken. Som de fleste "øvede" herinde nok vil nikke
> genkendende til, så er god kodeskik alfa og omega i
> programmering. Hvis man på et tidligt tidspunkt introducerer
> dårlig skik som "jeg laver bare lige en work-around i stedet
> for at finde fejlen", så har dette en tendens til at gribe om
> sig.

Der er både øvede og uøvede herinde. Det er korrekt at god kodeskik
er en god ting (tm). Men hvis man i forvejen har en meget løst
struktureret kode (for nu at udtrykke det diplomatisk) så er det
ikke sikkert at et velstruktureret løsningsforslag i gruppen her
vil gøre den store forskel.

Jeg vil til enhver tid gerne reklamere for god kodeskik - men jeg
synes ikke det bør være sådan at man skal slå folk i hovedet med
deres dårlige vaner (fx ved at påpege det uhensigtsmæssige i
"SELECT * ..." hver gang den kommer op).


> Grunden til at det altid er en fornøjelse at læse dine svar
> til andre er, at de altid er velovervejede i forhold til
> optimering af den foreslåede kode. Dette er du heldigvis ikke
> ene om herinde, og det er dette, der gør gruppen så nyttig -

Tak for kommentaren - jeg kan kun tilslutte mig billedet af denne
gruppe som ganske velfungerende.


> Derfor var jeg blot overrasket over dit svar, der kunne tolkes
> i retning af "lad være med at bruge tid på det - lav en
> workarround og kom videre".

Jeg beklager hvis det er sådan du har læst mit indlæg. Men jeg vil
nok fortsat også komme med "hurtige" løsninger en gang imellem.


> Nej, men der er sammenhæng imellem at vælge den "rigtige" vej
> og den nemme vej. Jeg vil til enhver tid vælge den første.

Du valgte alligevel at vente lidt med at omdøbe dit feltnavn. Jeg
mener at man må have lov til at se på omkostningerne ved at vælge
den rigtige vej i forhold til den nemme løsning.


>> NB: Hvad er der sket med din ombrydning?
>
> Spørg TDC ... jeg ved ikke helt, hvad der gik galt ... :)

Den er fin nu - til gengæld kommer dine indlæg (stadig) ikke frem
på Sunsite - øv. Det har jeg nu kommenteret til TDC (aner ikke om
det har nogen effekt).
--
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

Jesper Stocholm (29-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 29-04-03 12:49

Jens Gyldenkærne Clausen <jens@gyros.invalid> skrev:
>Jesper Stocholm skrev:

>Der er både øvede og uøvede herinde. Det er korrekt at god
kodeskik
>er en god ting (tm).

(tm) ?

>Men hvis man i forvejen har en meget løst
>struktureret kode (for nu at udtrykke det diplomatisk) så er det
>ikke sikkert at et velstruktureret løsningsforslag i gruppen her
>vil gøre den store forskel.

nope ... men man kan altid prøve at skubbe i den rigtige retning :)

>Jeg vil til enhver tid gerne reklamere for god kodeskik - men jeg
>synes ikke det bør være sådan at man skal slå folk i hovedet med
>deres dårlige vaner (fx ved at påpege det uhensigtsmæssige i
>"SELECT * ..." hver gang den kommer op).

Det er jo derfor der skal laves en artikel på www.asp-faq.dk om
anvendelsen af *-udtræk fra databaser. Faktisk har både Jakob og
jeg på stort set samme tid skrevet sådan en artikel, men den er
endt i "støvet" på min desktop. Det kunne jo være, at jeg skulle
få sendt den videre.



>>> NB: Hvad er der sket med din ombrydning?
>>
>> Spørg TDC ... jeg ved ikke helt, hvad der gik galt ... :)
>
>Den er fin nu - til gengæld kommer dine indlæg (stadig) ikke frem
>på Sunsite - øv. Det har jeg nu kommenteret til TDC (aner ikke om
>det har nogen effekt).

Jeg skrev også til dem, og svaret var, at
nyhedsgrupper.tdconline.dk poster direkte ned i news.tele.dk
(eller hvad den nu hedder). Jeg kan dog se, at det specifikt er
dtext01.news.tele.dk der postes til. Mon ikke det i stedet er
sunsite, der skal have en mail ? Indlæggene kommer jo fx fint frem
til news.uni-c.dk samt den danske newsserver der feeder den
amerikanske newsserver jeg tilgår dele af det danske usenet-
hierarki vmed, når jeg er på arbejde. Til gengæld ser der heller
ikke ud til, at mine indlæg når frem til Google ...

.... og hvor skal vi nu FUTe hen med denne diskussion ?



--
* Jesper Stocholm *
* http://stocholm.dk *
* Svar til gruppen og ikke til mig privat ! *
* Hvor svært kan det være ? *


Jens Gyldenkærne Cla~ (29-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-04-03 20:09

Jens Gyldenkærne Clausen skrev:

> Den er fin nu - til gengæld kommer dine indlæg (stadig) ikke
> frem på Sunsite - øv. Det har jeg nu kommenteret til TDC (aner
> ikke om det har nogen effekt).

Indlæggene mangler også hos Cybercity og på Google.

10 minuspoint til TDC.
--
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

Jens Gyldenkærne Cla~ (29-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 29-04-03 10:01

Jesper Stocholm skrev:

> Naturligvis kan det være en hjælp at gøre som du beskriver,
> men det bør under alle omstændigheder undersøges, hvorfor der
> kommer en uforståelig fejl.

Bestemt. Jeg vil også til enhver tid anbefale at man bruger "sikre"
objektnavne så man slet ikke behøver at bruge klammer.


> At sætte klammer om alle tabelnavne samt attributnavne
> er efter min bedste overbevisning en "work-around" og ikke en
> løsning.

Det er ikke altid så let at rette et feltnavn i en færdig eller
næsten færdig applikation.

I mine øjne er noget af det vigtigste i kodeskrivning at man er
konsekvent. Derfor kan det være kønnere at skrive klammer alle
steder i stedet for kun de steder hvor det er nødvendigt.


> Det er klart, at resultatet er det samme - om man bruger
> klammer eller ej, men det er imo meget dårlig kodeskik, da
> koden ved introduktion af flere tegn sandsynligvis afvikles
> langsommere.

Det tror jeg ikke er mærkbart. SQL-sætningerne bliver marginalt
større - og den ekstra datamængde skal selvfølgelig sendes til
databasen. Men jeg tror ikke at databasen vil være spor langsommere
til at behandle en forespørgsel med klammer.


> En analogi - der nok er sat lidt på spidsen - kunne være at
> vælge Longtext/Notat-typen for alle felter i en tabel. Det har
> nemlig den charmerende fordel, at stort set alle data kan
> indsættes i det

Det er sat *meget* på spidsen. Der er ingen sammenhæng mellem valg
af datatyper og hvordan man skriver sql-syntaksen.

Jeg foretrækker bestemt at skrive SQL uden brug af klammer - og jeg
vælger selv feltnavne som sikrer at jeg aldrig behøver at bruge
klammerne. Men klammerne (eller nødvendigheden af samme) har ingen
reel betydning for effektiviteten af en database - det har
strukturen (herunder felttyperne) derimod i høj grad.

NB: Hvad er der sket med din ombrydning?
--
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

Jesper Stocholm (29-04-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 29-04-03 10:23

Jens Gyldenkærne Clausen <jens@gyros.invalid> skrev:
>Jesper Stocholm skrev:
>
>> Naturligvis kan det være en hjælp at gøre som du beskriver,
>> men det bør under alle omstændigheder undersøges, hvorfor der
>> kommer en uforståelig fejl.
>
>Bestemt. Jeg vil også til enhver tid anbefale at man
bruger "sikre"
>objektnavne så man slet ikke behøver at bruge klammer.
>
>
>> At sætte klammer om alle tabelnavne samt attributnavne
>> er efter min bedste overbevisning en "work-around" og ikke en
>> løsning.
>
>Det er ikke altid så let at rette et feltnavn i en færdig eller
>næsten færdig applikation.

Det er korrekt, jeg har fx selv haft problemer med et feltnavn,
der kom til at hedde intSomeName, da vi i starten af designet
regnede med, at feltet kun skulle indeholde tal. Dette viste sig
dog senere ikke at være tilfældet, men da var det for sent. Der
gik 3 måneder før vi i forbindelse med et større code-review og
skift af db-backend kunne få rettet fejlen "tilbage".

>I mine øjne er noget af det vigtigste i kodeskrivning at man er
>konsekvent. Derfor kan det være kønnere at skrive klammer alle
>steder i stedet for kun de steder hvor det er nødvendigt.

Eller ... imo smartere ... vælge attributnavne, der ikke kræver
klammer. Det gør også skift imellem forskellige db-systemer
nemmere. Jeg kan ikke se, hvad der kan retfærdiggøre at man bruger
navne på attributter, der kræver klammer. "Læsbarhed" er imo slet
ikke argument nok.

>> Det er klart, at resultatet er det samme - om man bruger
>> klammer eller ej, men det er imo meget dårlig kodeskik, da
>> koden ved introduktion af flere tegn sandsynligvis afvikles
>> langsommere.
>
>Det tror jeg ikke er mærkbart. SQL-sætningerne bliver marginalt
>større - og den ekstra datamængde skal selvfølgelig sendes til
>databasen. Men jeg tror ikke at databasen vil være spor
langsommere
>til at behandle en forespørgsel med klammer.

Måske ikke ... men jeg forsøgte også at fokusere på kodeskikken.
Som de fleste "øvede" herinde nok vil nikke genkendende til, så er
god kodeskik alfa og omega i programmering. Hvis man på et tidligt
tidspunkt introducerer dårlig skik som "jeg laver bare lige en
work-around i stedet for at finde fejlen", så har dette en tendens
til at gribe om sig.

Grunden til at det altid er en fornøjelse at læse dine svar til
andre er, at de altid er velovervejede i forhold til optimering af
den foreslåede kode. Dette er du heldigvis ikke ene om herinde, og
det er dette, der gør gruppen så nyttig - meget lig "tonen" i
dotnet-gruppen. Derfor var jeg blot overrasket over dit svar, der
kunne tolkes i retning af "lad være med at bruge tid på det - lav
en workarround og kom videre".

>> En analogi - der nok er sat lidt på spidsen - kunne være at
>> vælge Longtext/Notat-typen for alle felter i en tabel. Det har
>> nemlig den charmerende fordel, at stort set alle data kan
>> indsættes i det
>
>Det er sat *meget* på spidsen. Der er ingen sammenhæng mellem valg
>af datatyper og hvordan man skriver sql-syntaksen.

Nej, men der er sammenhæng imellem at vælge den "rigtige" vej og
den nemme vej. Jeg vil til enhver tid vælge den første. Jeg skal
dog erkende, at mit indlæg nok er farvet af, at jeg i de sidste
uger har arbejdet med nogle projekter, hvor performance og
optimering har været ekstremt vigtige. Her har udfordringen ikke
været at finde en løsning på et problem - opgaven var i princippet
triviel - men at finde den bedste løsning. Pludselig ses megen af
den kode man tidligere har lavet i et meget dårligt lys ... :)


>NB: Hvad er der sket med din ombrydning?

Spørg TDC ... jeg ved ikke helt, hvad der gik galt ... :)

--
* Jesper Stocholm *
* http://stocholm.dk *
* Svar til gruppen og ikke til mig privat ! *
* Hvor svært kan det være ? *


N/A (29-04-2003)
Kommentar
Fra : N/A


Dato : 29-04-03 10:23



N/A (29-04-2003)
Kommentar
Fra : N/A


Dato : 29-04-03 12:49



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

Månedens bedste
Årets bedste
Sidste års bedste