DBEDITの入力変更がうまくいかない。


yu  2011-05-19 20:31:23  No: 40534

FIREBIRD、DBEXPRESSを利用しております。SQLDATASET,Datasetprovider、ClientDataSetと接続をしてDBEDITを利用してデータの入力を行い一度DBに登録した後再度レコードを呼び出し登録内容の変更をDBEDITで行った場合、入力がうまくいかない場合が、多いです。一度DBEDITをダブルクリックすると入力領域がブルーに変わり入力できるのですが、すんなり入力内容の変更ができません。
特に登録済みの内容に追加をする場合は、うまくいきません。スムーズに登録内容の変更をする方法ありましたら教えてください。


HOta  2011-05-21 05:02:46  No: 40535

Transactionは、どのようにしていますか?


YU  2011-05-23 19:59:26  No: 40536

Transaction処理をしている場合としていない場合でも、同じ現象です。
イメージといたしましては、一度作成した伝票を再度呼び出し変更するような場合です。DBのテーブルの項目が、多すぎるせいでしょうか?現在は、仕方なくClientDataSetの内容をDBEDITでは、なく通常のEDIT.TEXTに入れて変更された内容を画面を閉じる段階で最後にClientDataSetの項目に入れております。


  2011-06-04 08:34:57  No: 40537

亀レスで、既に解決済みかもしれませんが
05/19(木)の質問の
>入力がうまくいかない場合が、多いです。
は、どのように入力がうまくゆかないのか理解できません。

>すんなり入力内容の変更ができません。
は、変更内容のDBへの適用がうまく行かないと言うことと理解しますが、
dbExpressを使用した場合は、ClientDataSetのApplyUpdateメソッドが働かないということでしょうか?
更新適用のタイミングはどのようにしていますか?  [適用]ボタンなどで編集後更新するのでしょうか?
更新適用のコードはどのようにしていますか?

05/23(月) の発言で、現在は
>DBEDITでは、なく通常のEDIT.TEXTに入れて変更された内容を画面を閉じる段階で最後にClientDataSetの項目に入れております。
ともいわれていますが、ClientDataSetに入れた変更内容をどのようなコードでDBへ更新をかけているのでしょうか?

小生の場合は、IBXでの接続ですがApplyUpdateで問題なく更新できています。
FB2.1 - TIBDataBase - TIBQuery - Datasetprovider - ClientDataSet - DataSource - DBGridで現在運用中ですが
DBGridの画面へDBEditを追加、ClientDatasetの一部のFieldをDBEditでも表示、編集出るようにチョット改造して確認してみました。
DBEditの追加とプロパティ(DataSource,Field)の設定のみで他のコードは一切手を加えることなくデータの編集、更新可能でした。

更新適用は、DBGrid内での行移動時に変更の有無をChangeCountで判定して処理しています。
TDataModule1.ClientDataSet1BeforeScroll(DataSet: TDataSet);
begin
  if ClientDataset1.ChangeCount > 0 then
    ClientDataSet1.ApplyUpdates(-1);
  ClientDataSet1.Refresh;
end;
また、行移動なしで閉じる場合を考慮し、BeforeCloseイベントにも(Refreshの行なしで)同じコードを書いてます。
DBEditで編集し、別の場所へマウスカーソルを移すとDBGrid内の同一データが更新されるのが眼の前で確認できます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加