Is it possible to determine the data type of parameters in a parameterized query using Zeoslib and Firebird?
I am transitioning from FibPlus to Zeoslib.
with words like "select first name, last name, age from members, where is registration>: since then and nationality =: country"
With FibPlus, I do this:
for i := 0 to Q1.Params.Count - 1 do
begin
t := Q1.Params[i].ServerSQLType;
case t of
SQL_TYPE_DATE, SQL_TYPE_DATE + 1:
begin
with TsDateEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
sql_short, sql_long, sql_int64, sql_short + 1, sql_long + 1, sql_int64 + 1:
begin
with TsSpinEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
....
With Zeoslib, I tried this:
for i := 0 to Q1.Params.Count - 1 do
begin
if Q1.Params[i].DataType = ftDate then
begin
with TsDateEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
if Q1.Params[i].DataType in [ftInteger, ftShortInt, ftLargeInt, ftLongWord] then
begin
with TsSpinEdit.Create(self) do
begin
Left := lblleft + MaxWidth + 10;
Top := lbltop + (25 * i) - (height - LabelHeight);
Parent := f;
Tag := i + 1;
TabOrder := i;
end;
end;
....
but Q1.Params [i]. The data type is always available.
source
share