From 6318a55ca98ee933f6461bfcafa36d0731b94c8e Mon Sep 17 00:00:00 2001 From: joost Date: Sat, 6 Aug 2005 13:57:56 +0000 Subject: [PATCH] - Fixed date/time formats for sqldb and tdbf - removed obsolete TSQLConnection.ObtainSQLStatementType - added check for empty sql-statements to sqldb git-svn-id: trunk@803 - --- fcl/db/dataset.inc | 76 +++++---------------------- fcl/db/db.pp | 4 +- fcl/db/fields.inc | 2 +- fcl/db/sqldb/mysql/mysql4conn.pas | 1 - fcl/db/sqldb/postgres/pqconnection.pp | 1 - fcl/db/sqldb/sqldb.pp | 59 ++------------------- 6 files changed, 20 insertions(+), 123 deletions(-) diff --git a/fcl/db/dataset.inc b/fcl/db/dataset.inc index 9c36b74cb2..c11e2a1fc3 100644 --- a/fcl/db/dataset.inc +++ b/fcl/db/dataset.inc @@ -489,78 +489,30 @@ begin Result:=nil; end; +function TDataSet.GetFieldData(Field: TField; Buffer: Pointer): Boolean; + +begin + Result := False; +end; + function TDataSet.GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; - function ConvertData(Field: TField; Source: TDateTimeRec): TDateTime; - var - TimeStamp: TTimeStamp; - begin - case Field.DataType of - ftDate: - begin - TimeStamp.Time := 0; - TimeStamp.Date := Source.Date; - end; - ftTime: - begin - TimeStamp.Time := Source.Time; - TimeStamp.Date := DateDelta; - end; - else - try - TimeStamp := MSecsToTimeStamp(Trunc(Source.DateTime)); - except - TimeStamp.Time := 0; - TimeStamp.Date := 0; - end; - end; -// Result := TimeStampToDateTime(TimeStamp); - Result := (TimeStamp.Date - DateDelta) + (TimeStamp.Time / MSecsPerDay); - end; - -var - d: TDateTimeRec; begin - if NativeFormat then - Result := GetFieldData(Field, Buffer) else - if Field.DataType in [ ftDate, ftDateTime, ftTime ] then begin - Result := GetFieldData(Field, @d); - if Result then - TDateTime(Buffer^) := ConvertData(Field, d); - end else - Result := GetFieldData(Field, Buffer); + Result := GetFieldData(Field, Buffer); +end; + +procedure TDataSet.SetFieldData(Field: TField; Buffer: Pointer); + +begin +// empty procedure end; procedure TDataSet.SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); - function ConvertData(Field: TField; Data: TDateTime): TDateTimeRec; - var - TimeStamp: TTimeStamp; - begin - TimeStamp.Time := Trunc(Frac(Data) * MSecsPerDay); - TimeStamp.Date := DateDelta + Trunc(System.Int(Data)); -// TimeStamp := DateTimeToTimeStamp(Data); - case Field.DataType of - ftDate: Result.Date := TimeStamp.Date; - ftTime: Result.Time := TimeStamp.Time; - else - Result.DateTime := TimeStampToMSecs(TimeStamp); - end; - end; - -var - d: TDateTimeRec; begin - if NativeFormat then - SetFieldData(Field, Buffer) - else - if Field.DataType in [ ftDate, ftDateTime, ftTime ] then begin - d := ConvertData(Field, TDateTime(Buffer^)); - SetFieldData(Field, @d); - end else - SetFieldData(Field, Buffer); + SetFieldData(Field, Buffer); end; Function TDataset.GetField (Index : Longint) : TField; diff --git a/fcl/db/db.pp b/fcl/db/db.pp index 3ff69e049b..0ee52837a5 100644 --- a/fcl/db/db.pp +++ b/fcl/db/db.pp @@ -1062,7 +1062,7 @@ type procedure GetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract; function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag; virtual; abstract; function GetDataSource: TDataSource; virtual; - function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload; virtual; abstract; + function GetFieldData(Field: TField; Buffer: Pointer): Boolean; overload; virtual; function GetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean): Boolean; overload; virtual; function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult; virtual; abstract; function GetRecordSize: Word; virtual; abstract; @@ -1081,7 +1081,7 @@ type function IsCursorOpen: Boolean; virtual; abstract; procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag); virtual; abstract; procedure SetBookmarkData(Buffer: PChar; Data: Pointer); virtual; abstract; - procedure SetFieldData(Field: TField; Buffer: Pointer); overload; virtual; abstract; + procedure SetFieldData(Field: TField; Buffer: Pointer); overload; virtual; procedure SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); overload; virtual; public constructor Create(AOwner: TComponent); override; diff --git a/fcl/db/fields.inc b/fcl/db/fields.inc index 8089ba8669..807a6288c9 100644 --- a/fcl/db/fields.inc +++ b/fcl/db/fields.inc @@ -558,7 +558,7 @@ begin Move (FValueBuffer^,Buffer^ ,DataSize); end else - Result:=FDataset.GetFieldData(Self,Buffer,False); + Result:=FDataset.GetFieldData(Self,Buffer); end; function TField.GetDataSize: Word; diff --git a/fcl/db/sqldb/mysql/mysql4conn.pas b/fcl/db/sqldb/mysql/mysql4conn.pas index 6476a6e3a8..aef5e59ec3 100644 --- a/fcl/db/sqldb/mysql/mysql4conn.pas +++ b/fcl/db/sqldb/mysql/mysql4conn.pas @@ -243,7 +243,6 @@ procedure TMySQLConnection.PrepareStatement(cursor: TSQLCursor; begin if assigned(AParams) and (AParams.count > 0) then DatabaseError('Parameters (not) yet supported for the MySQL SqlDB connection.',self); - ObtainSQLStatementType(cursor,buf); With Cursor as TMysqlCursor do begin FStatement:=Buf; diff --git a/fcl/db/sqldb/postgres/pqconnection.pp b/fcl/db/sqldb/postgres/pqconnection.pp index 494d71c23d..41387d86f6 100644 --- a/fcl/db/sqldb/postgres/pqconnection.pp +++ b/fcl/db/sqldb/postgres/pqconnection.pp @@ -381,7 +381,6 @@ var s : string; i : integer; begin - ObtainSQLStatementType(cursor,buf); with (cursor as TPQCursor) do begin FPrepared := False; diff --git a/fcl/db/sqldb/sqldb.pp b/fcl/db/sqldb/sqldb.pp index f77a2c4a01..4ffc0146c7 100644 --- a/fcl/db/sqldb/sqldb.pp +++ b/fcl/db/sqldb/sqldb.pp @@ -97,7 +97,6 @@ type procedure UpdateIndexDefs(var IndexDefs : TIndexDefs;TableName : string); virtual; function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; virtual; function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; virtual;abstract; - Procedure ObtainSQLStatementType(Cursor : TSQLCursor; SQLStr : string); public property Handle: Pointer read GetHandle; destructor Destroy; override; @@ -198,7 +197,6 @@ type function GetCanModify: Boolean; override; function ApplyRecUpdate(UpdateKind : TUpdateKind) : boolean; override; Function IsPrepared : Boolean; virtual; - procedure SetFieldData(Field: TField; Buffer: Pointer; NativeFormat: Boolean); overload; override; procedure SetFiltered(Value: Boolean); override; public procedure Prepare; virtual; @@ -314,54 +312,6 @@ begin end; {case} end; -Procedure TSQLConnection.ObtainSQLStatementType(Cursor : TSQLCursor; SQLStr : string); - -Var - L : Integer; - cmt : boolean; - P,PE,PP : PChar; - S : string; - -begin - L := Length(SQLstr); - - if L=0 then - begin - DatabaseError(SErrNoStatement); - exit; - end; - - P:=Pchar(SQLstr); - PP:=P; - Cmt:=False; - While ((P-PP)