線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1264
推到 Plurk!
推到 Facebook!

刪除此欄位就出現錯誤訊息

尚未結案
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-26 10:13:08 IP:61.59.xxx.xxx 未訂閱
請問各位大大當我的欄位A_1,A_2,有一格或兩格欄位沒有填入值時,存入資料庫是可以的,但是要刪除此欄位就出現錯誤訊息。    ◎該如何才可以不管欄位沒有填入值'存入資料庫後,可以刪除此欄位而不出現錯誤訊息 procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.open; Query1.Append; end; procedure TForm1.Button2Click(Sender: TObject); begin Query1.Post; Query1.ApplyUpdates; Query1.CommitUpdates; Query1.CancelUpdates; Query1.Append; end else ShowMessage('儲存資料失敗!'); end; procedure TForm1.Button3Click(Sender: TObject); begin Try Query1.Delete; Query1.ApplyUpdates; Query1.CommitUpdates; Except Query1.CancelUpdates; Showmessage('刪除失敗!'); end; end; end.
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-26 11:10:24 IP:218.15.xxx.xxx 未訂閱
你好:   首先来了解下几个概念: 如果使用BatchUpdate模式的话,首先得将Query的CachedUpdate设为True;使用方法如下:  
procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  with CustomerQuery do
  begin
  Database1.StartTransaction;
    try
      ApplyUpdates; {尝试将更新写入数据库};
      Database1.Commit; {确认写入数据库};
    except
      Database1.Rollback; {如果更新失败,取消更新};
    raise; {raise the exception to prevent a call to CommitUpdates!}
    end;
  CommitUpdates; {如果更新成功,清除客户端缓存数据}
  end;
end;
而普通模式下,直接下Post即可将改动数据更新到数据库。
所以对于你上面的问题,简单来写,可参考:    先将Query1的RequestLive设为True;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;<<--关闭数据源
  Query1.open;<<--打开数据源
  Query1.Append;<<--将数据源处于新增状态
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Post;<<--更新数据源
end;    procedure TForm1.Button3Click(Sender: TObject);
begin
  Query1.Delete;<<--删除当前指针所指记录
end;
建议去翻翻书,了解数据源的新增删除等基本的操作,小弟写得比较乱~~
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-26 11:44:26 IP:61.59.xxx.xxx 未訂閱
引言: 你好: 首先来了解下几个概念: 如果使用BatchUpdate模式的话,首先得将Query的CachedUpdate设为True;使用方法如下:
procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  with CustomerQuery do
  begin
  Database1.StartTransaction;
    try
      ApplyUpdates; {尝试将更新写入数据库};
      Database1.Commit; {确认写入数据库};
    except
      Database1.Rollback; {如果更新失败,取消更新};
    raise; {raise the exception to prevent a call to CommitUpdates!}
    end;
  CommitUpdates; {如果更新成功,清除客户端缓存数据}
  end;
end;
而普通模式下,直接下Post即可将改动数据更新到数据库。
所以对于你上面的问题,简单来写,可参考:    先将Query1的RequestLive设为True;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;<<--关闭数据源
  Query1.open;<<--打开数据源
  Query1.Append;<<--将数据源处于新增状态
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Post;<<--更新数据源
end;    procedure TForm1.Button3Click(Sender: TObject);
begin
  Query1.Delete;<<--删除当前指针所指记录
end;
建议去翻翻书,了解数据源的新增删除等基本的操作,小弟写得比较乱~~
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
deity大大以上沒有結論阿
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-26 15:02:09 IP:218.15.xxx.xxx 未訂閱
你好:
   你要的是什么结论?
   上面是说明了你如果采用BatchUpdate模式的话,可参考我给的那段范例。如果是普通模式的话,也已经给出了完整的代码。你还要什么结论?还是运行不成功。
   你自己写的代码,两种模式相互掺和,重复操作,难免就会报错~
所以对于你上面的问题,简单来写,可参考:
先将Query1的RequestLive设为True;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;<<--关闭数据源
  Query1.open;<<--打开数据源
  Query1.Append;<<--将数据源处于新增状态
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  Query1.Post;<<--更新数据源
end;    procedure TForm1.Button3Click(Sender: TObject);
begin
  Query1.Delete;<<--删除当前指针所指记录
end;
这不是你要的结论吗?
============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-26 16:04:41 IP:61.59.xxx.xxx 未訂閱
這是我要的 ◎該如何才可以不管欄位沒有填入值'存入資料庫後,可以刪除此欄位而不出現錯誤訊息
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-26 16:38:18 IP:218.15.xxx.xxx 未訂閱
你好:   从头到尾你有试过我上述给你的代码吗 上述代码可以:不管栏位有没有填入值,存入数据库后,都可以删除记录而不出现错误信息! <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-26 17:42:18 IP:61.59.xxx.xxx 未訂閱
deity大大 這樣可以但是沒有真正存入,重開Query1後還是空的 可以存入嗎~跟上訴條件一樣 謝謝
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-27 08:26:30 IP:218.15.xxx.xxx 未訂閱
你好:新增或修改后下Post,即按保存即可真正的写入,怎么可能不行呢 你把你的代码全> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-27 08:37:50 IP:61.59.xxx.xxx 未訂閱
真不知那裡有錯
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-10-27 10:25:44 IP:218.15.xxx.xxx 未訂閱
你好:    我试了没有问题,可能你是连续按了“新增”而没按"save"进行操作吧,那它当然不会自动保存了,如你想进行批量新增(即连续新增几笔,最后才传回资料库)的话,可采用ADO的CachedUpdate模式,上面也给了你范例,也可以在站内查找相关的资料,有很多。 另你可以拉一个DBNavigator1(在data controls面板上)设置其DataSource为DBGrid对应的DataSource,就可以利用DBNavigator1进行新增,删除等操作了,这样也比较方便好用,可以试试。 或将 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;//删除此句,试试
  Query1.open;
  Query1.Append;
end;
如还不明白的话,小弟也没办法了 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-10-27 17:25:58 IP:61.59.xxx.xxx 未訂閱
還是不可以 可以給我範例參考謝謝!!
------
Xax
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-10-28 08:57:16 IP:218.15.xxx.xxx 未訂閱
你好: 你要的范例如下: http://delphi.ktop.com.tw/loadfile.php?TOPICID=25227187&CC=564193     ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
20052020
初階會員


發表:121
回覆:79
積分:40
註冊:2005-01-18

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-10-28 10:12:57 IP:61.59.xxx.xxx 未訂閱
非常的感謝deity大大 讓我解開了困擾許久的問題 再次感謝!!
------
Xax
系統時間:2024-07-02 0:25:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!