先从一个表中读出一些数据,存入中间数组(都是字符串类型): var stufield:array[1..10] of string; ... adoquery1.sql.add('select sno,sname... from educant'); adoquery1.open; stufield[0]:=adoquery1.fieldbyname('sno').asstring; stufield[1]:=adoquery1.fieldbyname('sname').asstring; .. 然后把这些数据传入insert语句中: ... adoquery2.sql.add('insert into student values(:data1,:data2,..)'); adoquery2.parameters[0].value:=stufield[0]; adoquery2.parameters[1].value:=stufield[1]; ... adoquery2.prepared; adoquery2.execsql;运行时程序报错:字符串类型,右截断 调试时发现凡是中文字符的域在stufield中是正常的, 但是在adoquery2.parameters[].value中的值就变成了奇怪的字符,而且没有右引号请问各位这是怎么回事?如果代码不对的话应该怎么写?多谢!!
如此的程序写法岂不太麻烦? 应该这么写: var a,b,c:string;With ADOQuery2 do begin close; SQL.text:='insert into tablename(f1,f2,f3) values('''+a+''','''+b+''','+c+')'; 或 SQL.text:='insert into tablename(f1,f2,f3) select sno,sname,sex from student where 条件'; execSQL; end;
var stufield:array[1..10] of string;
...
adoquery1.sql.add('select sno,sname... from educant');
adoquery1.open;
stufield[0]:=adoquery1.fieldbyname('sno').asstring;
stufield[1]:=adoquery1.fieldbyname('sname').asstring;
..
然后把这些数据传入insert语句中:
...
adoquery2.sql.add('insert into student values(:data1,:data2,..)');
adoquery2.parameters[0].value:=stufield[0];
adoquery2.parameters[1].value:=stufield[1];
...
adoquery2.prepared;
adoquery2.execsql;运行时程序报错:字符串类型,右截断
调试时发现凡是中文字符的域在stufield中是正常的,
但是在adoquery2.parameters[].value中的值就变成了奇怪的字符,而且没有右引号请问各位这是怎么回事?如果代码不对的话应该怎么写?多谢!!
应该这么写:
var a,b,c:string;With ADOQuery2 do
begin
close;
SQL.text:='insert into tablename(f1,f2,f3) values('''+a+''','''+b+''','+c+')';
或
SQL.text:='insert into tablename(f1,f2,f3) select sno,sname,sex from student where 条件';
execSQL;
end;
ADOQuery2.Parameters.ParamByName('data1').Value
试试
我希望用过这方面编程的人给点建议和方法?