为什么不用dbgrid,用stringgrid要自己写代码来控制显示,给个简单的例子sg就是stringgrid 我是通过循环来保存的 var i:integer; begin for i:=1 to sg.RowCount-1 do with ADQScore do begin sql.Clear; sql.Add('INSERT INTO Score (UserID,UserName,UserGrade,UserClass,Lesson,Exam,Score) VALUES (:v1,:v2,:v3,:v4,:v5,:v6,:v7)'); parameters.ParamByName('v1').Value:=sg.Cells[0,i]; parameters.ParamByName('v2').Value:=sg.Cells[1,i]; parameters.ParamByName('v3').Value:=sg.Cells[2,i]; parameters.ParamByName('v4').Value:=sg.Cells[3,i]; parameters.ParamByName('v5').Value:=CbxLesson.Text; parameters.ParamByName('v6').Value:=CbxExam.Text; parameters.ParamByName('v7').Value:=StrToInt(sg.Cells[4,i]); ExecSql; end; end;
batchmove 是BDE的吧? 自己试了一下,一行一行的保存,循环。我先判断了一下,然后删除表里原来的字段,在保存grid里的内容。 防止出错,然后只要insert into就好了。 dbgrid查询的时候用到了,我要一起保存很多条,感觉还是用stringgrid方便点。防止出现重复的记录。 都是用sql With DM.OraSQL1 do begin SQL.Text:='Delete From TableName where ... and ...'; Execute; end; //判断插入记录的条件 With DM.OraSQL1 do begin SQL.Text:='Insert Into TableName(a1,a2,...)'+ 'Values(:a1,:a2,...)'; ParamByName('a1').:=''; ParamByName('a2').:=''; ... Execute; end;
如何保存stringgrid的数值到oracle数据库。
我是通过循环来保存的
var i:integer;
begin
for i:=1 to sg.RowCount-1 do
with ADQScore do
begin
sql.Clear;
sql.Add('INSERT INTO Score (UserID,UserName,UserGrade,UserClass,Lesson,Exam,Score) VALUES (:v1,:v2,:v3,:v4,:v5,:v6,:v7)');
parameters.ParamByName('v1').Value:=sg.Cells[0,i];
parameters.ParamByName('v2').Value:=sg.Cells[1,i];
parameters.ParamByName('v3').Value:=sg.Cells[2,i];
parameters.ParamByName('v4').Value:=sg.Cells[3,i];
parameters.ParamByName('v5').Value:=CbxLesson.Text;
parameters.ParamByName('v6').Value:=CbxExam.Text;
parameters.ParamByName('v7').Value:=StrToInt(sg.Cells[4,i]);
ExecSql;
end;
end;
如果用dbgrid或cxgrid等控件,可以与数据集关联进行更新,在oraquery中可以写入insert,update,delete相关语桀语句
自己试了一下,一行一行的保存,循环。我先判断了一下,然后删除表里原来的字段,在保存grid里的内容。
防止出错,然后只要insert into就好了。
dbgrid查询的时候用到了,我要一起保存很多条,感觉还是用stringgrid方便点。防止出现重复的记录。
都是用sql
With DM.OraSQL1 do begin
SQL.Text:='Delete From TableName where ... and ...';
Execute;
end;
//判断插入记录的条件
With DM.OraSQL1 do begin
SQL.Text:='Insert Into TableName(a1,a2,...)'+
'Values(:a1,:a2,...)';
ParamByName('a1').:='';
ParamByName('a2').:='';
...
Execute;
end;