我建立了个数据表,是datetime数据类型,我想把stringgrid中的字符串时间格式("2005-5-10")
转化为datetime类型后导入到建立好的数据表中,关键代码如下:for a:=1 to stringgrid1.RowCount-1 do
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('insert into 表X(字段A,字段B) values(:a,:b)'); for b:=0 to stringgrid1.ColCount-1 do
rs1[b]:=stringgrid1.Cells[b,a];
adoquery2.Parameters[0].Value:=rs1[0];//rs1是我定义的数组
adoquery2.Parameters[1].Value:=strtodatetime(rs1[1]);//这是我转化的方式!!! execsql;
end;
end;为什么运行的时候总是报错啊:"插入错误,列名或所提供值的数据与表定义不匹配"我想问题可能是在数据转化没有成功,请各位帮我看下,是不是我的转化方式,语句语法有错误啊????
谢谢啊~~
转化为datetime类型后导入到建立好的数据表中,关键代码如下:for a:=1 to stringgrid1.RowCount-1 do
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('insert into 表X(字段A,字段B) values(:a,:b)'); for b:=0 to stringgrid1.ColCount-1 do
rs1[b]:=stringgrid1.Cells[b,a];
adoquery2.Parameters[0].Value:=rs1[0];//rs1是我定义的数组
adoquery2.Parameters[1].Value:=strtodatetime(rs1[1]);//这是我转化的方式!!! execsql;
end;
end;为什么运行的时候总是报错啊:"插入错误,列名或所提供值的数据与表定义不匹配"我想问题可能是在数据转化没有成功,请各位帮我看下,是不是我的转化方式,语句语法有错误啊????
谢谢啊~~
这样试试...
直接写
Parameters[0].Value:=....就是了,前面不要去指定AdoQuery2
这样写比较好
for b:=0 to stringgrid1.ColCount-1 do
begin
rs1[b]:=stringgrid1.Cells[b,a];
with adoquery2 do
begin
sql.text:='Insert into 表X(字段A,字段B) values ('+quotedstr(rs1[0])+','+quotedstr(strtodatetime(rs1[1]))+')';
try
ExecSQL;
except
inputbox('','',sql.text);//执行失败,输出SQL语句,到查询分析器里执行查看语句错误
end;
end;
end;