Avatar billede kkaen Nybegynder
10. marts 2006 - 13:52 Der er 6 kommentarer og
1 løsning

Insert med autonumrering

Jeg har en Accessdatabase med en enkelt tabel. Inde i den tabel, er der: navn(string), alder(int) og id(autonumrering). Så sætter jeg VS2005 til at generere alle sql'er selv. Det funger også fint bortset fra INSERT. INSERT fungerer fint nok, hvis man selv indtaster et id-tal. Men det er jo ikke meningen, når det er et autonumreringsfelt. Hvis jeg holder feltet skjult under indtastningen (som det rigtig skal være), så får jeg en fejl. Noget med "ikke den rigtige variant". Hvad kan fejlen være?
Avatar billede kkaen Nybegynder
10. marts 2006 - 13:54 #1
..fejlmeddelelsen er helt nøjagtig:
"
Du har forsøgt at tildele Null-værdien til en variabel, der ikke er af datatypen Variant.
"
Avatar billede websam Nybegynder
10. marts 2006 - 16:47 #2
Hvordan ser den sql sætning ud som vs 2005 laver ?

/Websam
Avatar billede snepnet Nybegynder
10. marts 2006 - 16:49 #3
well... den sql du har fået genereret er ikke iorden, da du tilsyneladende skal komme anstigende med et autogenereret id i forbindelse med en insert.
kan du ikke sikre dig at feltet er en autogenereret nøgle - og så prøve at få genreret koden igen.
mvh
Avatar billede kkaen Nybegynder
11. marts 2006 - 20:55 #4
Tja, jeg har prøvet med lidt forskellige sql-sætninger.
Min tabel hedder "person" ig har felterne: "id", "navn" og "alder". "id" er primærnøgle.
Jeg har prøvet disse forskellige udgaver af den "same" sql:
INSERT INTO person(navn, alder, id) VALUES (?, ?,)
INSERT INTO person(id, navn, alder) VALUES (,?, ?)
INSERT INTO person(navn, alder) VALUES (?, ?)
Alle giver fejlen:

"Der er en syntaksfejl i INSERT INTO-sætningen.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Der er en syntaksfejl i INSERT INTO-sætningen.
"

Men jeg har lige fundet ud af, at man kan gå ned i Properties-vinduet, vælge "inser-query" og så er der nemlig et insert defaultvalue. Dette felt er tomt. Det nurde det jo også være, når databasefeltet er af typen autoincrement. Men kan det være, at man skal skrive en autoincrementsyntax her?
Avatar billede kkaen Nybegynder
11. marts 2006 - 20:59 #5
Ah...nu virker det vist. Jeg har prøvet med sætningen:
INSERT INTO person(navn, alder) VALUES (?, ?)

og dette virker vist. Jeg mener bare, at jeg har prøvet med den før. Grunden til, at jeg prøver med den nu er, at jeg lige har fundet ud af, at man også kan ændre i sql'en igennem inserqueryfeltet i propertiesvinduet. Kan der være en exception, når man ændrer sqlsætningen gennem AccessDataSourcen?
Avatar billede websam Nybegynder
11. marts 2006 - 21:13 #6
Du skal huske at dit id felt i databasen skal være autonummering og med nøgle så burde "Insert Into Tabel (felt1, felt2) Values (value1, value2)" virke for dig ;o)

/Websam
Avatar billede websam Nybegynder
20. februar 2009 - 00:15 #7
Lukketid ?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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