A
alexhans
Unregistered / Unconfirmed
GUEST, unregistred user!
function ExecuteASQL(sSQL:widestring;Pms:array of variant):boolean;var i:integer;begin result:=true; with dm.aqryExecSQL do begin close; Parameters.Clear; SQL.Text:=sSQL; Parameters.ParseSQL(sSQL,true);//D7中这句要不要无所谓 for I := 0 to Parameters.Count - 1 do begin Parameters.Value:=Pms; end; ExecSQL; end;end;procedure TForm1.TestParams;var sSQL:string; s1,s2:string;begin s1:='Param1'; s2:='这是一个参数测试'; sSQL:='insert into ATabel(Fld1,Fld2) valuesp1, 2) '; ExecuteASQL(sSQL,[s1, s2]);end;////以上代码试了无数次,s2只有一半的值看得到表中了改成 s2:widestring; //就正确了问题出在哪里呢? //D7中根本不存在这样的问题,怀疑是D2007的BUG跟踪这个函数 ExecuteASQL在执行ExecSQL之前,所有的参数值都正确,但只要是汉字,执行后到表中的就是一半;不能要求每次都将参数定义为widestring,因为有时是这样用的ExecuteASQL(sSQL,s1,'这是测试');请各位发表高见