Avatar billede kmjk Nybegynder
13. december 2001 - 14:41 Der er 5 kommentarer og
1 løsning

SQL via ODBC mod Access

Jeg forsøger at opdatere poster i en Access DB med et SQL kald.
sqlEXP ser således ud

UPDATE rykkerliste SET rykkerdato=\'1980-01-01\' WHERE ((datediff(dd,overfort,\'01-12-2001\')<0) AND (bruger=\'KMK\'));

overfort = dato for hvornår posten er overført

Dette virker ikke, men hvis jeg fjerner datediff, virker forespørgelsen.
Det jeg ønsker er at opdatere alle poster hvor overfort er mindre end 1/12 (reelt dagsdato - 7 dage) og brugeren er KMK

Kaj
Avatar billede kmjk Nybegynder
13. december 2001 - 15:07 #1
Når jeg bruger datediff får jeg en fejl der hedder
07001 [ms][odbc[ms access-driver] der er for få parametre. Der var ventet 1.
Avatar billede jesperthomsen Nybegynder
13. december 2001 - 15:55 #2
Jeg ville lave en sql i stil med:

\"UPDATE rykkerliste SET rykkerdato=\'1980-01-01\' WHERE overfort < \'\" & format$(Now, \"yyyy-mm-dd\") & \"\'AND (bruger=\'KMK\';\"

Altså, hvor du holder dig fra datediff, der er access-specifik og i stedet laver en \'ren\' sql-sætning.
Avatar billede jesperthomsen Nybegynder
13. december 2001 - 15:57 #3
For resten, hvis du vil lege lidt eller det er en forespørgsel der skal køre tit og er langsom, så kan du bruge en parametriseret forespørgsel. Den har i øvrigt den fordel at du slipper for at slås med dato-formater.
Til gengæld er de lidt mere drilske at arbejde med og hvis du skruer dem forkert sammen og bruger dem tit får de din database til at vokse uhæmmet.
Avatar billede jesperthomsen Nybegynder
13. december 2001 - 15:58 #4
Hov - en smutter - der skal naturligvis stå format$(Now - 7, \"yyyy-mm-dd\") hvis det skal være dags dato - 7 dage.
Avatar billede kmjk Nybegynder
13. december 2001 - 16:09 #5
linien kom til at se sådan ud:
UPDATE rykkerliste SET rykkerdato=\'1980-01-01\' WHERE ( (overfort < format$(Now - 7, \'yyyy-mm-dd\')) AND (bruger=\'KMK\') );
og så virker det
Tak skal du have. Kender du et godt sted på nettet med ren SQL beskrivelse??
Avatar billede jesperthomsen Nybegynder
13. december 2001 - 16:13 #6
Ikke rigtigt. Men hvis du søger på ANSI SQL skal du nok finde masser. Jeg ville nu nok overveje en lærebog for den specifikke database du bruger.
Langt de fleste databaser overholder stort set ANSI-standarden, men mange stiller langt mere til rådighed end hvad ANSI byder på.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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