Avatar billede iver25 Nybegynder
18. oktober 2001 - 14:08 Der er 17 kommentarer og
1 løsning

SQL problem

Hvad er der galt med følgende kode:

  frmDatabase.QueryBesked.Close;
  frmDatabase.QueryBesked.SQL.Clear;
  frmDatabase.QueryBesked.SQL.Add(\'DELETE FROM besked WHERE (gyldigindtil < \'+datetostr(dagsdato)+\')\');
  frmDatabase.QueryBesked.ExecSQL;

Jeg vil slette de beskeder der er ældre end dags dato. \"gyldigindtil\" er navnet på en kolonne i en access database. Den er af typen \"kort datoformat\".
Variablen \"dagsdato\" indeholder den rigtig værdi, nemlig: \"18-10-01\".
Avatar billede jekk Nybegynder
18. oktober 2001 - 14:27 #1
jeg har også førhen haft problemer med dato, som kriterie i en Where-sætning, såvidt jeg husker hjalp det, hvis dato-formatet var enten mm-dd-åå eller åååå-mm-dd uagtet at windows dato-format var noget andet ! ? prøv at eksperimentere med det. måske kunne det hjælpe, at selecte datofeltet og udskrive det ....
Avatar billede iver25 Nybegynder
18. oktober 2001 - 14:42 #2
Det hjælper ikke noget.:

  dato := FormatDateTime(\'mm-dd-yyyy\',dagsdato);
  frmDatabase.QueryBesked.Close;
  frmDatabase.QueryBesked.SQL.Clear;
  frmDatabase.QueryBesked.SQL.Add(\'DELETE FROM besked WHERE (gyldigindtil < \'+dato+\')\');
  frmDatabase.QueryBesked.ExecSQL;
Avatar billede jekk Nybegynder
18. oktober 2001 - 14:47 #3
har du sikret dig, at begge (samlignings-)datoer har samme format ?
Avatar billede morten_s Nybegynder
18. oktober 2001 - 14:48 #4
Jeg plejer at bruge denne konvertering, med suces:

DateTimeToString(Str1,\'yyyy-mm-dd\',MyDate);
Avatar billede morten_s Nybegynder
18. oktober 2001 - 14:49 #5
Et stykke af min kode som vorker

  DateTimeToString(Str1,\'yyyy-mm-dd\',LogFromDate - 1);
  DateTimeToString(Str2,\'yyyy-mm-dd\',LogToDate + 1);
  .......WHERE ( AlDB.AlDate > (\'\'\' + Str1 + \'\'\'))  and ( AlDB.AlDate < (\'\'\' + Str2 + \'\'\'))\'
Avatar billede morten_s Nybegynder
18. oktober 2001 - 14:50 #6
Måske du bare skal have lidt flere \'\'\'\'\' på ;-)
Avatar billede iver25 Nybegynder
18. oktober 2001 - 14:50 #7
Hvordan skal den så stå i access databasen? skal der stå fx.: \"2001-10-18\"
Avatar billede morten_s Nybegynder
18. oktober 2001 - 15:04 #8
Ovenstående virker i Pardox og MySql, og jeg vil da tro at det også virker i Acess

Prøv det
Avatar billede iver25 Nybegynder
18. oktober 2001 - 15:04 #9
Hvis jeg bruger 3 \' på hver side af variablen i stedet for en, får jeg en \"datatype mismatch\"
Avatar billede iver25 Nybegynder
18. oktober 2001 - 15:13 #10
Er der ikke nogen der kan hjælpe??? Hvad hvis jeg putter lidt flere point på.......
Avatar billede morten_s Nybegynder
18. oktober 2001 - 15:15 #11
Er der ikke noget med at Access bruger [], synes jeg har set det et sted prøv og se i doku.

frmDatabase.QueryBesked.SQL.Add(\'DELETE FROM besked WHERE (gyldigindtil < [\'+dato+\')]\');

måske dette kan hjælpe
Avatar billede jpk Nybegynder
18. oktober 2001 - 15:17 #12
Jeg mener man skal tilføje \'#\' på hver side af datoer i Access!

frmDatabase.QueryBesked.SQL.Add(\'DELETE FROM besked WHERE (#gyldigindtil# < #\'+datetostr(dagsdato)+#\')\');
Avatar billede morten_s Nybegynder
18. oktober 2001 - 15:19 #13
ja jpk har ret der er et eller andet med Acess, har du ikke dokumentationen ?
Avatar billede iver25 Nybegynder
18. oktober 2001 - 15:21 #14
Jeg får en \"Syntax error\" hvis jeg skriver:

  frmDatabase.QueryBesked.SQL.Add(\'DELETE FROM besked WHERE (#gyldigindtil# < #\'+dato+\'#)\');
Avatar billede morten_s Nybegynder
18. oktober 2001 - 15:23 #15
Måske du skulle spørge over under Acess kategorien
Avatar billede jpk Nybegynder
18. oktober 2001 - 15:24 #16
Jeg har selv fornylig brugt \'#\' i Access, så jeg ved det virker...
Avatar billede iver25 Nybegynder
18. oktober 2001 - 15:27 #17
Jeg prøver i Access kategorien. Tak hjælpen.
Avatar billede jekk Nybegynder
18. oktober 2001 - 15:49 #18
udgangspunktet er jo Delphi !
\'#\'-tegnet har jeg selv brugt når jeg skyder SQL af igennem ADO - ellers IKKE !
i Delphi 5 ligger der et BKquery projekt, som skulle være god til at eksperimentere med SQL-skud - se under Programm\\Borland\\Delphi5\\Demos\\Db...
prøv det ...
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