假设memo1有12行数据,分别为:
A
B
C
D
E
F
G
H
I
J
K
L
现在有一个DBGrid组件,如何将其分别写DBGrid组件里(DBGrid固定为4列,行随上述记录进行增加),效果如下:
DBGrid第1列  DBGrid第2列  DBGrid第3列  DBGrid第4列
     A            B           C            D
    E            F           J            H
    I            J           K            L

解决方案 »

  1.   


    直接手寫的,可能有誤,不過算法應該是這樣的。:)for i := 0 to memo1.lines.count -1 do 
    begin
      if i = 0 then dbgrid.datasource.dataset.append;  if ((i+1) Mod 4 <> 0) then  begin
       dbgrid.datasource.dataset.fields[i mod 4].value := memo1.lines.string[i];
      end else dbgrid.datasource.dataset.append;
    end;
      

  2.   


    //用这个方子,不行么?
    with DBGrid1.DataSource.DataSet do
    begin
      Append;
      FieldByName('').value:= memo1.Lines.Strings[0];
      //...
      post;
    end;
      

  3.   

    列是固定的,行是随memo1里相应记录增加的
      

  4.   

    就是每四行进行一次insert
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      s: String;
    begin
      s:= ' Insert into table1(a,b,c,d) values(';
      for i:=0 to memo1.Lines.Count-1 do
      begin
        if (i+1) mod 4=0 then
        begin
          s := s+memo1.Lines[i]+')';
          Memo2.Lines.Add(s);
          s:= ' Insert into table1(a,b,c,d) values(';
        end else
        begin
          s := s+memo1.Lines[i]+',';
        end;
      end;
    end;
      

  5.   

    测试有点没有对,不知道是什么原因?
    需要的是这样:
    DBGrid第1列  DBGrid第2列  DBGrid第3列  DBGrid第4列 
        A            B          C            D 
        E            F          G            H 
        I            J          K            L 
    结果是这样:
    DBGrid第1列  DBGrid第2列  DBGrid第3列  DBGrid第4列 
        A            C          B             
        E            G          F             
        I            K          J            最后一列没有信息,第2列与第3列整反了! 
      

  6.   


    for i := 0 to memo1.lines.count -1 do 
    begin
      if i = 0 then dbgrid.datasource.dataset.append;  if ((i+1) Mod 5 <> 0) then  begin
       dbgrid.datasource.dataset.fields[i mod 5].value := memo1.lines[i]
      end else dbgrid.datasource.dataset.append;
    end;
      

  7.   

    奇了怪了,按照你的方法改了之后,DBGrid第二行第一列单元格的值没有等于memo1第5列的值,而是等于memo1第6列的值了
      

  8.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
      str : String;
    begin
      for I := 0 to Memo1.Lines.Count-1 do begin
        if (i+1) mod 4 <> 0  then begin
          str := str + memo1.Lines[i];
        end else  begin
           str := str + memo1.Lines[i];
           Memo2.lines.Append(str) ;
           str := '';
        end;  end;end; 改進下
      

  9.   


    var
      i : integer;
      str : String;
    begin    if i = 0 then DBGrid.Datasource.dataset.append;
        for i := 0 to Memo1.lines.count -1 do begin
          if (i+1) mod 4 <> 0 then begin
            DBgird.dataSource.dataset.fields[i mod 4].value := Memo1.lines[i];
          end else begin
            DBGrid.datasource.dataset.fields[i mod 4].value := memo1.lines[i];
            DBGrid.datasource.dataset.append;
          end;      
        end;
      end;
      

  10.   


    var
      i : integer;
      str : String;
    begin    if i = 0 then DBGrid.Datasource.dataset.append;
        for i := 0 to Memo1.lines.count -1 do begin
          if (i+1) mod 4 <> 0 then begin
            DBgird.dataSource.dataset.fields[i mod 4].value := Memo1.lines[i];
          end else begin
            DBGrid.datasource.dataset.fields[i mod 4].value := memo1.lines[i];
            DBGrid.datasource.dataset.append;
          end;      
        end;
      end;