我使用的是ADODataSet进行编程的!

解决方案 »

  1.   

    检查该ADODataSet的其他事件处理程序,看看是不是在POST之后还修改表。
      

  2.   

    1:Query要执行(对insert ,update,delete) .ExecSQL的操作;
    2:没有指定数据库
      

  3.   

    主要看看AfterPost事件,如不清楚,就把你的代码贴出来吧,大家才好找问题。
      

  4.   

    AfterPost 中是不是有编辑操作 ?
      

  5.   

    adodataset.edit;
    ADODataset.Commandtext:='update.....
      

  6.   

    整个编程,我只用ADODataSet控件!没有用其他任何控件!代码如下:procedure CreateDBConnection()
    begin
    ADODataSet1.Close;
    strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;
    ADODataSet1.Edit;
    ADODataSet1.CommandText:=strSQL;
    ADODataSet1.Open;
    end;procedure t2()
    begin
       CreateDBConnection;
       ADODataSet1.Append;
       ADODataSet1.Edit;
       Memstream.Position:=0;
       TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
       ADODataSet1.Post;
       ADODataSet1.Close;
    end;
      

  7.   

    adodataset1.edit;
    adodataset1.FieldByName('Field1').AsString := 'The Value';
    adodataset1.post;
      

  8.   

    试试这样……procedure t2()
    begin
       CreateDBConnection;
       ADODataSet1.Append;
       ADODataSet1.Edit;
       Memstream.Position:=0;
       TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
       if (ADODataSet1.State =dsedit) or (ADODataSet1.State =dsinsert) then
      begin
        ADODataSet1.Post;  end;
       ADODataSet1.Close;
    end;
      

  9.   

    procedure CreateDBConnection()
    begin
    ADODataSet1.Close;
    strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;ADODataSet1.Edit;  //这句什么意思? 为什么要加到这?ADODataSet1.CommandText:=strSQL;
    ADODataSet1.Open;
    end;procedure t2()
    begin
       CreateDBConnection;
       ADODataSet1.Append;   ADODataSet1.Edit;  //还有这一个, Append后就已经是新增状态了,为什么还要Edit?   Memstream.Position:=0;
       TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
       ADODataSet1.Post;
       ADODataSet1.Close;
    end;
      

  10.   

    应该是少了这么几句:
       adodataset1.insert;
    或 adodataset1.edit;
      

  11.   

    试试看 :procedure CreateDBConnection()
    begin
      ADODataSet1.Close;
      strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;
      ADODataSet1.CommandText:=strSQL;
      ADODataSet1.Open;
    end;procedure t2()
    begin
       CreateDBConnection;
       ADODataSet1.Edit;
       Memstream.Position:=0;
       TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
       ADODataSet1.Post;
    end;
      

  12.   

    现在的提示还多了一个,"Stack Overflow"!!!
      

  13.   

    好象要edit先,才能用append.否则就出错。我以前也碰到过,你试试看。
      

  14.   

    Stack Overflow?
    你的Memstream是怎么取得内容的,每次取值是否都Memstream.Clear。
      

  15.   

    检查代码肯定是多了一个POST.
      

  16.   

    我昨天也遇到类似问题:不过,我改过如下(类似代码),就成功了:
    procedure CreateDBConnection()
    begin
    ADODataSet1.Close;
    strSQL:='SELECT * FROM TB_Test WHERE FileID= '+sFileID ;
    ADODataSet1.Edit;  //删除此行
    ADODataSet1.CommandText:=strSQL;
    ADODataSet1.Open;  //改为:ADODataset1.acive:=true;
    end;procedure t2()
    begin
       CreateDBConnection;
       ADODataSet1.Append;//删除此行
       ADODataSet1.Edit;
       Memstream.Position:=0;
       TBlobField(ADODataSet1.FieldByName('FileBody')).LoadFromStream(Memstream);
       ADODataSet1.Post;
       ADODataSet1.Close;
    end;