procedure Toverh.LbButton2Click(Sender: TObject);
var
 ptrow:integer;
begin
 for ptrow:=1 to stringgrid1.RowCount -1 do;
//PTROW:=1;
     begin
       Edit1.text:=StringGrid1.Cells[1,ptrow];
       Edit2.text:=StringGrid1.Cells[2,ptrow];
       Edit3.text:=StringGrid1.Cells[3,ptrow];
       Edit4.text:=StringGrid1.Cells[4,ptrow];
       Edit5.text:=StringGrid1.Cells[5,ptrow];
       Edit6.text:=StringGrid1.Cells[6,ptrow];
       Edit7.text:=StringGrid1.Cells[7,ptrow];
       Edit8.text:=StringGrid1.Cells[8,ptrow];
     end;
当ptrow单独定义为1或者是2的时候可以读出数据来...加循环后至少编辑框里的内容应该为最后一条的数据
但加上循环后根本读不出数据

解决方案 »

  1.   

    检查一下stringgrid1.RowCount的值呢?
    或者在循环体里下断点,看看是执行进去了吗?
      

  2.   

    ptrow = stringgrid1.RowCount -1 能读到数据吗?
      

  3.   

    ptrow = stringgrid1.RowCount -1 能读到数据吗?
    能够读到数据....晕死了...我.
      

  4.   

    真是奇了怪了....一样的循环一样语句改用 
        
        StringGrid1.RowCount:=StringGrid1.RowCount-1;
        if StringGrid1.Cells[6,StringGrid1.row]='' then
          showmessage('数量不能为空!')    else
          ADOTable1.Active:=true;
          for A:=1 to StringGrid1.RowCount-1 do
           begin
           ADOtable1.Append;
           ADOtable1.FieldValues['编号']:=Groupbox4.Caption;
           ADOtable1.FieldValues['编码']:=StringGrid1.Cells[1,a];
           ADOtable1.FieldValues['名称']:=StringGrid1.Cells[2,a];
           ADOtable1.FieldValues['规格']:=StringGrid1.Cells[3,a];
           ADOtable1.FieldValues['单位']:=StringGrid1.Cells[4,a];
           ADOtable1.FieldValues['单价']:=StringGrid1.Cells[5,a];
           ADOtable1.FieldValues['数量']:=StringGrid1.Cells[6,a];
           ADOtable1.FieldValues['金额']:=StringGrid1.Cells[7,a];
           ADOtable1.FieldValues['性质']:=StringGrid1.Cells[8,a];
          end;
         ADOtable1.post;
    就OK...狂晕
    本来是想用INSERT into 来保存数据到access就是因为这个循环读不出数据,SQL提示表达式有问题...
    改成ADOtable1居然一次通过...STRINGGRID表中的数据居然能正常读出.....虽然成功了.但是仍然没明白是什么回事.
      

  5.   

    问题是:
    for ptrow:=1 to stringgrid1.RowCount -1 do; 最后多了一个分号,去掉就可以,象:
    for ptrow:=1 to stringgrid1.RowCount -1 do
    begin
    ……
    end;
      

  6.   

    是呀,楼主,for do 后面多了个;号
      

  7.   

          Edit1.text:=StringGrid1.Cells[1,ptrow]; 
          Edit2.text:=StringGrid1.Cells[2,ptrow]; 
          Edit3.text:=StringGrid1.Cells[3,ptrow]; 
          Edit4.text:=StringGrid1.Cells[4,ptrow]; 
          Edit5.text:=StringGrid1.Cells[5,ptrow]; 
          Edit6.text:=StringGrid1.Cells[6,ptrow]; 
          Edit7.text:=StringGrid1.Cells[7,ptrow]; 
          Edit8.text:=StringGrid1.Cells[8,ptrow]; 
    当年我也和楼主一样,1,2,3,4,5,。写下去过。。