如题,用stringgrid来显示oracle数据库中的表,并且能对表进行编辑和修改,如何实现?连数据库使用了odac组件。

解决方案 »

  1.   

    有没有人睬我呀?
    如何保存stringgrid的数值到oracle数据库。
      

  2.   

    是一条一条来操作的吧你可以用BATCHMOVE这个控件试下,也可以一条条判断后再导入,理清丝路不难的,我做的一个三列十万多条记录,要处理半个小时
      

  3.   

    为什么不用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;
      

  4.   

    如果用stringgrid就需要一条条的进行处理(插入,更新,删除等)
    如果用dbgrid或cxgrid等控件,可以与数据集关联进行更新,在oraquery中可以写入insert,update,delete相关语桀语句
      

  5.   

    既然用StringGrid ,那就只能转成SQL了吧
      

  6.   

    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;
      

  7.   

    batchmove 在三层中的客户端就不好用,没有数据直联