Avatar billede zumi Nybegynder
13. oktober 2005 - 01:11 Der er 11 kommentarer og
1 løsning

database-kartotek

Jeg har hentet kartotek.zip fra http://activedeveloper.dk/download/default.asp?mode=showdownload&id=83

"scriptet" består af
    En databasefil (access)
6 asp filer:
    Default.asp
    vis_alle.asp
    gem_ret_data.asp
    ret_i_data.asp
    slet_data.asp
    vis_data_alt.asp
    adresser.asp

Kartoteket ligger her i org. udgave - jeg har ikke editeret!

http://www33.websamba.com/rakola/adresser.asp

Det virker fint når jeg vil ændre en af de 4 allerede oprettede kontakter, men når jeg forsøger at oprette en ny melder den fejl

- Når jeg trykker send for jeg denne fejl:

INSERT INTO adresse (id_nr,dato,navn,adresse,postnr,city,telefon,telefax,hjemmeside,email,info_om,henviser_til) VALUES (,#10/12/2005 6:07:32 PM#,'','',,'',,0,'','','','')

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

/rakola/gem_data.asp, line 26

Hvad kan der være galt?

Med venlig hilsen Rasmus
Avatar billede softspot Forsker
13. oktober 2005 - 01:15 #1
Du har et par tomme pladser i parameterlisten (dem hvor der står 2 kommaer efter hinanden), altså uden værdi - det må du ikke...

INSERT INTO adresse (id_nr,dato,navn,adresse,postnr,city,telefon,telefax,hjemmeside,email,info_om,henviser_til) VALUES (,#10/12/2005 6:07:32 PM#,'','',,'',,0,'','','','')
Avatar billede softspot Forsker
13. oktober 2005 - 01:16 #2
Faktisk starter VALUES med en tom værdi (hvilket stadig ikke er tilladt) :)
Avatar billede nielle Nybegynder
13. oktober 2005 - 08:41 #3
Der er nogle databse (versioner) som selv kan finde på at indsætte NULL når posten er tom. Men det er nu alligevel, som softspot påpeger, en overtrædelse af SQL-standarden.

For at virke, skal din SQL-sætning enten ændres til at der indsættes NULL-værdier de steder hvor der ikke er data:

INSERT INTO adresse (id_nr,dato,navn,adresse,postnr,city,telefon,telefax,hjemmeside,email,info_om,henviser_til) VALUES (NULL,#10/12/2005 6:07:32 PM#,'','',NULL,'',NULL,0,'','','','')

- eller til at de felter, der ikke har data, slet ikke medtages:

INSERT INTO adresse (dato,navn,adresse,city,telefax,hjemmeside,email,info_om,henviser_til) VALUES (#10/12/2005 6:07:32 PM#,'','','',0,'','','','')
Avatar billede zumi Nybegynder
13. oktober 2005 - 10:45 #4
Lyder som om i ved hvad i snakker om. :)
Det gør jeg bare ikke helt - har ikkerodet med asp før.

MEN jeg kan dog finde: (fra gem_data.asp)

SQLstmt = "INSERT INTO adresse (id_nr,dato,navn,adresse,postnr,city,telefon,telefax,hjemmeside,email,info_om,henviser_til)"
SQLstmt = SQLstmt & " VALUES (" & request.form("telefon") & ",#" & Now & "#,'" & request.form("navn") & "','" & request.form("adresse") & "'," & request.form("postnr") & ",'" & request.form("city") & "'," & request.form("telefon") & "," & telefax & ",'" & request.form("hjemmeside") & "','" & request.form("email") & "','" & request.form("info_om") & "','" & request.form("henviser_til") & "')"

Men jeg ved ikke rigitg hvad jeg skal ændre... Ligner jo ikke denne?
INSERT INTO adresse (dato,navn,adresse,city,telefax,hjemmeside,email,info_om,henviser_til) VALUES (#10/12/2005 6:07:32 PM#,'','','',0,'','','','')

Er sikker på at det er noget ret simpelt, så vil i ikke lige smide et kort pædagogisk svar, så skal jeg ikke stille flere "dumme" spørgsmål..

PFT

MVH Rasmus - og tak for tålmodigheden
Avatar billede nielle Nybegynder
13. oktober 2005 - 11:53 #5
Jeg kan se at dem der har lavet det der script ikke helt har tænkt over tingene :^( Det er i hvert fald en rigtig dårlig ide at bruge folks telefonnummer som deres id - for hvad nu hvis de har flere numre, eller hvis de skifter deres nummer ud?

Nå, men...

I det konkrete tilfælde opstår fejlen fordi at du ikke har udfyldt felterne med telefonnummer og postnummer. Hvis disse udfyldes vil SQL-sætningen gå glat igennem.

Enten kan du gøre alle felterne i din form obligatoriske - det kræver noget JavaScript og/eller noget ASP-script, som afviser formen, hvis felterne ikke er udfyldt. Eller du kan lave om på ASP-koden sådan at den bliver mere tolerant overfor uudfyldte felter. Hvad ville du foretrække?
Avatar billede zumi Nybegynder
13. oktober 2005 - 12:38 #6
En mere tolerant i så fald. Ikke afgørende om alle oplysninger udfyldes.
Avatar billede zumi Nybegynder
13. oktober 2005 - 13:02 #7
Feltet med id (kundenummer) er iøvrigt ikke relevant i mit tilfælde. Databasen skal bruges i forbindelse med et jubilæum på en folkeskole, hvor det var snildt at folk kunne udveksle adresser mobil etc. vha af dette.

Mvh Rasmus
Avatar billede nielle Nybegynder
13. oktober 2005 - 22:55 #8
Det kan godt være at du kan undvære id'et, men det er jo langt fra sikkert at resten af denne samling af scripts kan - umiddelbart er jeg tilbøjelig til at tvivle.

En mulighed er at du eventuelt går ind i databasen og sætter feltet ”id_nr” til at være et autoincrement felt. Hvis dette virker så vil du kunne glemme alt om id'et og lade databasen klare dette selv.

Hvis dette lykkes, kan du som det første ændre din SQL-sætning til:

SQLstmt = "INSERT INTO adresse (dato,navn,adresse,postnr,city,telefon,telefax,hjemmeside,email,info_om,henviser_til)"
SQLstmt = SQLstmt & " VALUES (#" & Now & "#,'" & request.form("navn") & "','" & request.form("adresse") & "'," & request.form("postnr") & ",'" & request.form("city") & "'," & request.form("telefon") & "," & telefax & ",'" & request.form("hjemmeside") & "','" & request.form("email") & "','" & request.form("info_om") & "','" & request.form("henviser_til") & "')"

- hvor det altså er felterne hørende til id_nr som er fjernet.

Hvis denne skal gøres tolerant over for manglende feltet, så kunne dette f.eks. gøres ved at rette den til noget i stil med dette:

PostNr = "" & request.form("postnr")
If PostNr = "" Then PostNr = "NULL"

Telefon = "" & request.form("telefon")
If Telefon = "" Then Telefon = "NULL"

Telefax = "" & Telefax
If Telefax = "" Then Telefax = "NULL"

SQLstmt = "INSERT INTO adresse (dato, navn, adresse, postnr, city, telefon, telefax, hjemmeside, email, info_om, henviser_til)"
SQLstmt = SQLstmt & " VALUES (#" & Now & "#, '" & request.form("navn") & "', '" & request.form("adresse") & "', " & PostNr & ", '" & request.form("city") & "', " & Telefon & ", " & Telefax & ", '" & request.form("hjemmeside") & "', '" & request.form("email") & "', '" & request.form("info_om") & "', '" & request.form("henviser_til") & "')"
Avatar billede nielle Nybegynder
18. oktober 2005 - 22:27 #9
Har du fået kigget på det?
Avatar billede nielle Nybegynder
07. november 2005 - 22:52 #10
?
Avatar billede zumi Nybegynder
07. februar 2006 - 11:36 #11
Hej nielle

så virker det.

Vil du svare?

mvh rasmus
Avatar billede nielle Nybegynder
07. februar 2006 - 17:54 #12
Sure, men måsk kunne der også falde lidt af til softspot?
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