全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:987
推到 Plurk!
推到 Facebook!

删除数据集

答題得分者是:Chance36
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-02 13:49:40 IP:222.183.xxx.xxx 未訂閱
各位大大: 我在删除数据记录的 时候遇到: 'row cannot be located for updating some values may been changed since it was last read'的错误。这是怎么回事呢?参考前辈的方法也没有成功< >< > < class="code"> if DBYFGraphyFindPropDM <> nil then begin with DBYFGraphyFindPropDM.YFObjDelDataset do begin close; Parameters.ParamByName('MI_PRINX').Value := ObjMI; open; if Locate('MI_PRINX', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then begin [/b]参考前辈的方法,但是试了不行 bok:= Bookmark; Requery(); Bookmark:=bok;[/b] edit; Delete; //报错 // post; if fieldbyname('OBJECTID').AsString <> '' then begin if Locate('OBJECTID', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then begin edit; Delete; //删除当前绑定的属性信息 end; end; post; layerObj.selection.clearSelection; //图层刷新 layerobj.Refresh; end; close; end; end
 
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-02 15:08:53 IP:211.20.xxx.xxx 未訂閱
zzmbeyond01 你好
 
if DBYFGraphyFindPropDM <> nil then
  begin
    with DBYFGraphyFindPropDM.YFObjDelDataset do
    begin
      close;
      Parameters.ParamByName('MI_PRINX').Value := ObjMI;
      open;
      if Locate('MI_PRINX', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then
      begin
[/b]参考前辈的方法,但是试了不行
{  //以下這幾可以不需要
      bok:= Bookmark;
      Requery();
      Bookmark:=bok;[/b]
        edit;  // Delete之前不須Edit;
}
        Delete;
        // 以下這段不解為何意思 
        if fieldbyname('OBJECTID').AsString <> '' then
        begin
          if Locate('OBJECTID', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then
          begin
            //  edit;  <==== 這行拿掉
             Delete; //删除当前绑定的属性信息
           
          end;
        end;
        //  post;  <==== 這行拿掉
        layerObj.selection.clearSelection;
      //图层刷新
        layerobj.Refresh;
      end;
      close;
    end;
  end 
發表人 - chance36 於 2004/07/02 15:11:21
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-02 15:50:51 IP:222.183.xxx.xxx 未訂閱
大大:
引言:
 
//改称这样之后为什么还是不行?
if DBYFGraphyFindPropDM <> nil then
  begin
    with DBYFGraphyFindPropDM.YFObjDelDataset do
    begin
      close;
      Parameters.ParamByName('MI_PRINX').Value := ObjMI;
      open;
      if Locate('MI_PRINX', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then
      begin  
        Delete;  
      layerObj.selection.clearSelection;
      //图层刷新
        layerobj.Refresh;
      end;
      close;
    end;
  end 
發表人 - chance36 於 2004/07/02 15:11:21
我现在ADOQuery写得sql语句做的,运行可以,但是不明白为什么上面的改了还是报列已经变化的错误。< >< >
// 下面运行成功
 with DBYFGraphyFindPropDM.YFObjDelQuery do
    begin
      close;
      //删除图形
      prepared;
      sql.Clear;
      sql.Add('DELETE FROM YFFDLAYER WHERE MI_PRINX='   ObjMI);
      ExecSQL;
      //删除属性
      close;
      sql.Clear;
      sql.Add('DELETE FROM YFFD WHERE OBJECTID='   ObjMI);
      ExecSql;
      close;
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-02 16:29:15 IP:211.20.xxx.xxx 未訂閱
zzmbeyond01 你好 不是很懂你的問題??可以再詳細點嗎?
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-02 16:40:41 IP:222.183.xxx.xxx 未訂閱
先感谢Chance36大大了 我是想用ADODataset删除一条记录。应用您说的方法改过之后为什么还是不行呢?实在是没有想明白。。  
 
if DBYFGraphyFindPropDM <> nil then
  begin
    with DBYFGraphyFindPropDM.YFObjDelDataset do
    begin
      close;
      Parameters.ParamByName('MI_PRINX').Value := ObjMI;
      open;
      if Locate('MI_PRINX', strtoint(ObjMI), [loCaseInsensitive, loPartialKey]) then
      begin  
        Delete; 还是这里出老问题  
      //图层刷新
        layerobj.Refresh;
      end;
      close;
    end;
  end     
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-02 17:02:02 IP:211.20.xxx.xxx 未訂閱
zzmbeyond01 你好     最近這類的問題好像不少,是否該Table內有DataTime型態的欄位? 若真有時間型態的欄位,那麼你還是使用SQL指令作delete的動作(如你前一篇所述),而不要用Query後再用Delete 的方式刪除(當然還是可以處理,只是比較麻煩罷了) 參考這篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=52303 發表人 - chance36 於 2004/07/02 17:08:18
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-02 18:42:10 IP:222.183.xxx.xxx 未訂閱
里面没有时间的栏位,但是有一个对象类型栏位(MDSYS.SDO_GEOMETRY)存储图形记录
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-02 18:55:22 IP:211.20.xxx.xxx 未訂閱
zzmbeyond01 你好 对象类型栏位 是否會成為更新時的比對欄位,或許會或許不會,若會的話,那它的比對原則又是如何呢?說實在的這點我就不是很清楚了,這要求教於其他網友了。 不過我認為你還是使用SQL指令的方式來刪除記錄吧!(至少目前確定是OK的)。
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-02 18:58:38 IP:222.183.xxx.xxx 未訂閱
多谢Chance36大大!
系統時間:2024-09-01 19:25:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!