要求就是人员我要一次性输完。假如有10个人的名字都记录在Edit1(DBEdit1)中,用什么符号隔开还请指点,公司名字记录在Edit2(DBEdit2)中,然后点击保存。分成10行保存。公司名字都是一样
我用的是:ADOTable1和DBGrid1和ADODatasource想想办法怎么做?
一次添加一个很简单,我现在要这样做不知道怎么办?关键是我还要检查名字有没有重复。我用的是Locate。

解决方案 »

  1.   

    这和一次添加一个没什么两样,要学会变通不过在一个Edit中输入N个名字,保存时要重新的拆开来,不觉得多次一举吗?
    要是老师叫你这么做的,叫他下课吧;用MEMO倒是可以,每一行当作是一个名字,循环添加就行了var
      i:Integer;
    for i:=0 to memo.Lines.Count-1 do
      if Trim(memo.Lines.Strings[i])<>'' then
       begin
        ADOTable1.Append;
        ADOTable1.FieldByName('姓名').Asstring:=memo.Lines.Strings[i];
        ADOTable1.FieldByName('公司名称').Asstring:=Edit2.Text;
        ADOTable1.Post;
       end;
      

  2.   

    你既然用DBEDIT,那直接一次添加一行记录就可以,方便的很,保存按钮里面只需要写
    try
      post;
    except
      cancel;
    end;就可以了。在新建按钮里面写:append;
      

  3.   

    每个名字用特殊符号分隔,比如':',然后保存时,用TStringList根据':'提取名字列表,依次写入数据库
      

  4.   

    麻烦给个详细的列子!我理解一下,我没有用过TSTRINGLIST 谢谢!
      

  5.   

    var
      vList: TStringList;
      i: integer;
    begin
      vList := TStringList.Create;
      try
        vList.Delimiter := ','; //默认为","根据需要可以更改
        vList.DelimitedText := Edit1.Text; //edit1中添加的数据使用","来分割;
        i := 0;
        while (i < vList.Count) do
        begin
          ADOTable1.Append;
          ADOTable1.FieldByName('姓名').Asstring := vList.Strings[i];
            ADOTable1.FieldByName('公司名称').Asstring := Edit2.Text;
          ADOTable1.Post;
          inc(i);
        end;
      finally
        vList.Free;
      end;
    end;
      

  6.   

         for i:=0 to memo1.Lines.Count-1 do
      if Trim(memo1.Lines.Strings[i]) <>'' then
       begin
          ADOTable1.Append;
         //ADOTable1.Edit;
          ADOTable1.FieldByName('name').Asstring:=memo1.Lines.Strings[i];
          ADOTable1.FieldByName('GS').Asstring:=dbEdit5.Text;
          GL_main_ZYJM_Edit.Enabled:=False;
          ADOTable1.Edit;
          ADOTable1.Post;
        end;
      

  7.   

    ADOTable1.Append删除就要出错,我怀疑是这个地方。