【发布时间】:2015-10-10 10:48:06
【问题描述】:
是否可以使用 Zeoslib 和 Firebird 在参数化查询中确定参数数据类型?
我正在从 FibPlus 迁移到 Zeoslib。
带有类似“从注册成员中选择姓名、姓氏、年龄> :since and nationality = :country”这样的语句
使用 FibPlus 我这样做:
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;
....
使用 Zeoslib 我已经尝试过:
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;
....
但 Q1.Params[i].DataType 总是 ftUnkown。
【问题讨论】:
-
这是为了允许用户选择一个查询并呈现一个适当的输入表单,以便他们输入参数所需的值。
标签: delphi firebird zeos fibplus