传入的值有文本、数字、日期等,如何用array of const自动将值赋给Parameters.Item.Value?
procedure TDB.ExecSQL(SQL: String; const Params: array of const);
var
i: ShortInt;
begin
FADOComm.CommandText := SQL;
FADOComm.Parameters.ParseSQL(SQL,True);
for i := Low(Params) to High(Params) do
begin
FADOComm.Parameters.Items[i].Value := Params[i];(这里该如何写?用“PVariant(TVarRec(Params[I]).VVariant)^”提示类型不正确) end;
FADOComm.Execute;
end;
procedure TDB.ExecSQL(SQL: String; const Params: array of const);
var
i: ShortInt;
begin
FADOComm.CommandText := SQL;
FADOComm.Parameters.ParseSQL(SQL,True);
for i := Low(Params) to High(Params) do
begin
FADOComm.Parameters.Items[i].Value := Params[i];(这里该如何写?用“PVariant(TVarRec(Params[I]).VVariant)^”提示类型不正确) end;
FADOComm.Execute;
end;
解决方案 »
- 买本本
- 实现顺序播放两个avi文件,用一个线程判断播放器播放完一个,再播另一个
- 在服务器端数据库(access)中数据转换xml格式后传到客户端显示,高分请教,问题解决再加分!!急急急!!
- 怎样用sql语句连接不同域里的数据库?再线等待,马上给分!
- 飞人乔丹,篮球上帝离开了?谈谈心请吧。(请版主别删,留一天吧)
- 奇怪的Socet组件问题!
- InstallScript相关问题
- adoquery的refresh问题?
- 请问在应用中,创建窗口的过程不执行,这是什么原因。
- 谁有Delphi 5 开发人员指南电子图书,给我一份
- 用StringList还是GridList合适?
- 请教如何向DBGridEh单元格中写数据?比如想把23这个数写到行为4,列为5的单元格中。
select * from table1 where field1=:a ........FADOComm.Parameters.paramname('a').AsString:=edit1.text; ///////用类似的方式传递好了
已找到方法,用Case判断类型后处理.
但日期形无法处理,日期在Delphi为Double类型,在此会转成VExtended,无法处理.但这个类型中没有单独的日期类型,Delphi中定义如下:
PVarRec = ^TVarRec;
TVarRec = record { do not pack this record; it is compiler-generated }
case Byte of
vtInteger: (VInteger: Integer; VType: Byte);
vtBoolean: (VBoolean: Boolean);
vtChar: (VChar: Char);
vtExtended: (VExtended: PExtended);
vtString: (VString: PShortString);
vtPointer: (VPointer: Pointer);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (VClass: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: Pointer);
vtCurrency: (VCurrency: PCurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: Pointer);
vtWideString: (VWideString: Pointer);
vtInt64: (VInt64: PInt64);
end;
如何可以自动传递日期类型?