unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    adocn: TADOConnection;
    ds1: TADODataSet;
    ds2: TADODataSet;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  a,b:Real;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ds1.Open;ds2.Open;
ds2.Edit; ds1.Edit;
ds1.First;
while not ds1.Eof do
  begin
    a:=ds1.Fields[1].AsFloat;    ds1.Fields[0].Text:='kkk';    while not ds2.Eof do
      begin
        b:=ds2.Fields[1].AsFloat;
        if a=b then
         begin           ds1.Fields[0].Text:='';           break;
         end;
         ds2.Next;
      end;
      ds1.Next;
  end;end;end.
连接没有问题,可以查看mdb的数据这是我的原代码,为什么用ds1.Fields[0].Text:='kkk'不行呀?总是说不在可编辑或插入状态,我初学delphi,帮忙了大家,谢谢

解决方案 »

  1.   

    if a=b then
             begin
               ds1.edit;
               ds1.Fields[0].asstring:='';
               ds1.post;
               break;
             end;
      

  2.   

    首先你的书写不规范,刚开始的时候代码规范很重要
    你的意思是从ds2读数据和ds1相应字段比较如果有相等情况就把ds1.Fields[0]置空[原始负值kkk]
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ds1.Open;
    ds2.Open;
    while not ds1.Eof do
      begin
        a:=ds1.Fields[1].AsFloat;
        ds1.edit;
        ds1.Fields[0].asstring:='kkk';
        ds1.post;
        ds2.first;
        while not ds2.Eof do//循环查找?
          begin
            b:=ds2.Fields[1].AsFloat;
            if a=b then
             begin
               ds1.edit;
               ds1.Fields[0].asstring:='';
               ds1.post;
               break;
             end;
             ds2.Next;
          end;
          ds1.Next;
    end;
      

  3.   

    ds1.Fields[0].Text 要看你的字段类型是什么。没测试应该可以的
      

  4.   

    你的意思是从ds2读数据和ds1相应字段比较如果有相等情况就把ds1.Fields[0]置空[原始负值kkk]
    不错,是这样的,要历遍查找是文本型的
      

  5.   

    ds1.Fields[0].Text:='KKK'
    改为
    ds1.Fields[0].asstring:='kkk';
      

  6.   

    改为以下试试:  
      ds1.Open;
      ds2.Open;
      //ds2.Edit;
      //ds1.Edit;
      ds1.First;
      while not ds1.Eof do
      begin
        a:=ds1.Fields[1].AsFloat;
        ds1.Edit;
        ds1.Fields[0].Text:='kkk';
        ds1.Post;
        while not ds2.Eof do
        begin
          b:=ds2.Fields[1].AsFloat;
          if a=b then
          begin
            ds1.Edit;
            ds1.Fields[0].Text:='';
            ds1.Post;
            break;
          end;
          ds2.Next;
        end;
        ds1.Next;
      end;
      

  7.   

    哦,还有一个地方来改一下:
    ds1.Fields[0].Text:='';   ---->ds1.Fields[0].AsString:='';
    ds1.Fields[0].Text:='kkk';---->ds1.Fields[0].AsString:='kkk';
      

  8.   

    ds1.Open;
      ds2.Open;
      //ds2.Edit;
      //ds1.Edit;
      ds1.First;
      while not ds1.Eof do
      begin
        a:=ds1.Fields[1].AsFloat;
        ds1.Edit;
        ds1.Fields[0].AsString:='kkk';
        ds1.Post;
        ds2.First;//add!
        while not ds2.Eof do
        begin
          b:=ds2.Fields[1].AsFloat;
          if a=b then
          begin
            ds1.Edit;
            ds1.Fields[0].AsString:='';
            ds1.Post;
            //break;去掉,不然只能查一个!
          end;
          ds2.Next;
        end;
        ds1.Next;
      end;