Autor Beitrag
t.norge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Mi 12.05.04 18:06 
Hallo Zusammen,
ich habe eine Tabelle erstellt die unter anderem eine Spalte Zeitstempel enthält, diesen habe ich als Standarddatum mit dem Standardwert Jetzt() festgelegt.

Das sieht unter Access wie folgt aus: 12.05.2004 17:53:19

Ich habe ein Problem beim Update, ich weiß nicht wie ich das Datum richtig anzusprechen habe. Beim probieren habe ich herausgefunden, dass man ein Datum mit #05/12/2004# ansprechen kann. bei der zeit habe ich nichts herausfinden können. Mein Versuch war bislang:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
...
with ADOQuery
 do 
  begin
   with SQL
    do
     begin
      clear;
      add('Update Segment');
      add('set Kategorie = 4'); //Alle Zeilen die nach dem 12.05.2004 um 17:53:19 geschrieben wurden 
      add('where TimeStamp > #05/12/2004 17:57:33#');// sollen geändert werden
     end//END DO
   execsql;
  end//END WITH
...


und was dabei rauskommt ist eine Fehlermeldung:

Ein Parameter ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben.

Als ich die Spalten für Testzwecke umdefiniert hatte (nur Datum), gab es die Fehlermeldung nicht, es muß also mit der Konvertierung zu tun haben, speziell mit der Zeit, schätze ich.

kann mir da jemand weiterhelfen?

Schöner Gruß

Torge Wendt
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 12.05.04 19:21 
Vorsicht!: In solchen Queries bedeutet der Doppelpunkt ":" ein Parameter, sprich, deine Query sucht nach den Parametern: :57 und :33.

Versuchs mal so:
Zitat:
where TimeStamp>:ParameterTimeStamp;


und in deiner SQL-Query:
ausblenden Delphi-Quelltext
1:
Qerry.ParamMeters.ParamByName('ParameterTimeStamp').Value:= {TDatetime-Wert}					

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
t.norge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Do 13.05.04 09:27 
Erstmal vielen Dank!

...aber jetzt gibt es leider eine neue Fehlermeldung:

ADOQuery: Parameter 'ParameterTimestamp' nicht gefunden

Muß ich noch was ändern oder einstellen?
t.norge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Do 13.05.04 09:52 
Habe es nun doch noch hinbekommen:


habe alles beibehalten, wie es zunächst war, nur die Where-Klausel in der SQL-Abfrage verändert

ausblenden Quelltext
1:
2:
...
where Timestamp > datevalue("{DatetimeString}");


Trotzdem vielen Dank der Mühen!


schöner Gruß

Torge
t.norge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Do 13.05.04 14:25 
Habe jetzt leider doch nochmal eine Frage, habe mich jetzt doch dazu entschlossen es mit der Parameter-version zu versuchen, nur bekomme ich jetzt so 'ne Fehlermeldung:

ADOQuery: Parameter 'Timestamp' nicht gefunden.

muß ich den noch irgendwie/irgendwo deklarieren?

Die ganz oben genannte SQL-Abfrage ist unter Access möglich, aus Delphi heraus an Access gesandt leider nicht... kann mir bitte jemand helfen, ich verbringe nun schon fast den ganzen Tag mit dieser einen b... Anweisung :cry:

Schöner Gruß

torge
t.norge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Do 13.05.04 17:09 
So, jetzt klappts denn doch wirklich, habe folgenden Code hier im Forum finden können und den auf mein Projekt umgebastelt, es tuts...


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var 
  qry: TADOQuery; 

begin 

  qry := TADOQuery.Create(nil
  qry.Connection := YourADOConnection; 

  qry.SQL.Text := 'UPDATE info SET ws = :WS WHERE datum = :DATUM '
  qry.Parameters.ParamByName('WS').DataType := ftInteger; 
  qry.Parameters.ParamByName('WS').Value := 4
  qry.Parameters.ParamByName('WS').DataType := ftDate; 
  qry.Parameters.ParamByName('WS').Value := Now; 
  qry.ExecSQL; 

  qry.Free;


Danke dem Verfasser
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 14.05.04 07:29 
Hallo,

@t.norge

Die ist da ein kleiner Fehler unterlaufen:

Statt
ausblenden Delphi-Quelltext
1:
2:
  qry.Parameters.ParamByName('WS').DataType := ftDate;  
  qry.Parameters.ParamByName('WS').Value := Now;

müsste es doch
ausblenden Delphi-Quelltext
1:
2:
  qry.Parameters.ParamByName('DATUM').DataType := ftDate;  
  qry.Parameters.ParamByName('DATUM').Value := Now;

heissen? Oder?

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
t.norge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48

Win XP
D5 Enterpr., D7 Prof., D8 Prof.
BeitragVerfasst: Fr 14.05.04 09:20 
Ja, da hast Du recht!

Habe ich aber in meinem Programm auch so geschrieben, der Source da oben war nur eine kopie eines Fundstückes aus dem Netz. Habe den auf mein Programm angepasst.

*Sich natürlich dennoch über die Resonance (wenn man's so schreibt) freut*

Schöner Gruß

Torge