unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, SqlTimSt;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
btnReadRecord: TButton;
btnWriteRecord: TButton;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
procedure btnReadRecordClick(Sender: TObject);
procedure btnWriteRecordClick(Sender: TObject);
private
AcctID : Integer;
TimeSt : String;
AcctName : String;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Type
SQLTimestamp = array [0..7] of Byte;
PSQLTimestamp = ^SQLTimestamp;
implementation
{$R *.dfm}
function TimeStampToStr(const vTS: Variant): string;
var p: PSQLTimestamp;
begin
p := VarArrayLock(vTS);
try
Result := Format('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x', [p^[0], p^[1], p^[2], p^[3], p^[4], p^[5], p^[6], p^[7]]);
finally
VarArrayUnlock(vTS);
end;
end;
procedure TForm1.btnReadRecordClick(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT ID, Name, timestamp_column FROM Resource' );
ADOQuery1.SQL.Add(' WHERE Name = ''Chicago''');
ADOQuery1.Active := TRUE;
AcctID := ADOQuery1.FieldByName('ID').AsInteger;
AcctName := ADOQuery1.FieldByName('Name').AsString;
TimeSt := TimeStampToStr(ADOQuery1.FieldByName('timestamp_column').AsVariant);
end;
procedure TForm1.btnWriteRecordClick(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE [Resource] SET [Name] = ' + QuotedStr(AcctName));
ADOQuery1.SQL.Add(' WHERE ID = ' + IntToStr(AcctID) );
ADOQuery1.SQL.Add(' AND timestamp_column = ' + TimeSt );
ADOQuery1.ExecSQL;
end;
end.
see
http://dn.codegear.com/article/32337
meikl ;-)