是否可以使用Zeoslib和Firebird在参数化查询中确定参数数据类型?
我正在从FibPlus迁移到Zeoslib。
带有“选择姓名、姓氏、注册成员的年龄”、“自名称和国籍=:国家”之类的字句
在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.Paramsi.DataType永远是ftUnkown。
发布于 2015-10-10 13:14:00
你不能用婴儿车来做这件事,因为它们现在还没有设定好。我建议你使用TZSQLMetadata;
ZSQLMetadata1 := TZSQLMetadata.Create(Self);
try
ZSQLMetadata1.Connection := ZConnection1; //Your connection to db
ZSQLMetadata1.MetadataType := mdColumns; //What kind of meta data get you want column types so we get columns metadata
ZSQLMetadata1.TableName := 'MYTABLE'; //from which table metadata to get
ZSQLMetadata1.Open;
//After open ZSQLMetadata1 rows contains information about table columns
while not ZSQLMetadata1.Eof do
begin
if ZSQLMetadata1.FieldByName('TYPE_NAME').AsString = 'char' then
begin
//Do something
end;
{ if you do not like working with strings
if ZSQLMetadata1.FieldByName('DATA_NAME').AsInteger = 9 then
begin
//Do something
end;
}
ZSQLMetadata1.Next;
end;
finally
ZSQLMetadata1.Free;
end;ZSQLMetadata1类似于dataset,您可以将它分配给数据源,并查看dbgrid中的所有列和值。
/编辑/列名和字段值是DB的具体内容--我的示例在MySQL数据库中
https://stackoverflow.com/questions/33053123
复制相似问题