summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-08-06 13:57:56 +0000
committerjoost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2>2005-08-06 13:57:56 +0000
commit0f23387e54440a351a345139b7bbf5fd0927ac49 (patch)
tree1025bc791d2508e6c6e77d3ca4f6e273d41d9b71
parenta5a62b03058b39482a22b312374c71af1f0a7094 (diff)
downloadfpc-0f23387e54440a351a345139b7bbf5fd0927ac49.tar.gz
- Fixed date/time formats for sqldb and tdbf
- removed obsolete TSQLConnection.ObtainSQLStatementType - added check for empty sql-statements to sqldb git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@803 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--fcl/db/dataset.inc76
-rw-r--r--fcl/db/db.pp4
-rw-r--r--fcl/db/fields.inc2
-rw-r--r--fcl/db/sqldb/mysql/mysql4conn.pas1
-rw-r--r--fcl/db/sqldb/postgres/pqconnection.pp1
-rw-r--r--fcl/db/sqldb/sqldb.pp59
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;
+begin
+ Result := GetFieldData(Field, Buffer);
+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);
+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)<L) do
- begin
- if not (P^ in [' ',#13,#10,#9]) then
- begin
- if not Cmt then
- begin
- // Check for comment.
- Cmt:=(P^='/') and (((P-PP)<=L) and (P[1]='*'));
- if not (cmt) then
- Break;
- end
- else
- begin
- // Check for end of comment.
- Cmt:=Not( (P^='*') and (((P-PP)<=L) and (P[1]='/')) );
- If not cmt then
- Inc(p);
- end;
- end;
- inc(P);
- end;
- PE:=P+1;
- While ((PE-PP)<L) and (PE^ in ['0'..'9','a'..'z','A'..'Z','_']) do
- Inc(PE);
- Setlength(S,PE-P);
- Move(P^,S[1],(PE-P));
- Cursor.FStatementType := StrToStatementType(s);
-end;
function TSQLConnection.GetSchemaInfoSQL( SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string;
@@ -529,12 +479,6 @@ begin
Result := Assigned(FCursor) and FCursor.FPrepared;
end;
-procedure TSQLQuery.SetFieldData(Field: TField; Buffer: Pointer;
- NativeFormat: Boolean);
-begin
- SetFieldData(Field, Buffer);
-end;
-
Function TSQLQuery.AddFilter(SQLstr : string) : string;
begin
@@ -595,6 +539,9 @@ begin
FSQLBuf := TrimRight(FSQL.Text);
+ if FSQLBuf = '' then
+ DatabaseError(SErrNoStatement);
+
SQLParser(FSQLBuf);
if filtered then