[delphi-users:4805] DbCtrlGridで新規レコード追加をしない方法

177 views
Skip to first unread message

ストラテジー鈴木

unread,
Jan 10, 2018, 12:18:42 AM1/10/18
to delphi...@freeml.com
 今年もよろしくお願いいたします。鈴木です。

 現在、Firebird Embedded版を使用してローカルDBにアクセスするVCLプログラムを作成しています。DBへのアクセスにはDelphiに付属していたFireDACを使用しています。

 プログラムではテーブルの内容をTFDQueryを経由して取得し、TDBCtrlGridに貼り付けたDBコントロールに表示しています。

 TFDConnection - TFDQuery - TDataSource - TDBCtrlGrid

 新規レコードの追加はしたくないので、TFDQueryのプロパティを、オブジェクトインスペクタから変更しました。

  「TFDQuery.UpdateOptions.EnableInsert」を「False」へ変更


 この状態で、最後のレコードを表示中に「↓キー」を入力すると(またはスクロールバーの▼ボタンをクリック)、新規レコードの追加処理を呼び出してしまうようで、次の例外が発生してしまいます。

[FireDAC][Comp][DS]-214. データセット [T_TestQry] のレコードの挿入はできません.


 この例外を出さないようにするにはどのようにすれば良いでしょうか。
 例外を補足して無視する方法でもかまいません。

 DBCtrlGridのOnKeyDownイベントでKeyに0を設定して、キー入力自体をなかったことにしようとしてみたのですが、うまく動作しませんでした。

procedure TForm1.DBCtrlGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if T_TestQry.Active then begin
if T_EqTelegQry.Eof then begin
Key := 0;
end;
end;
end;

 何かヒントでもいただけると助かります。
 よろしくお願いいたします。

■開発環境
Windows 10 Pro 64bit
Delphi 10.2.1 Tokyo
Firebird 2.5.7 Embedded


MLホームページ: https://www.freeml.com/delphi-users

----------------------------------------------------------------------
Powered by freeml -- https://www.freeml.com/ --
------------------------------------------------------[freeml byGMO]--

あなたの街のチラシがいつでも無料で見放題!
チラシをクリックしてチラシが拡大されたらポイントゲット♪
まずはかんたん登録♪ -ポイントタウン-
https://www.pointtown.com/ptu/rd.cgi?cid=8912
----------------------------------------------------------------------

のべ

unread,
Jan 10, 2018, 1:44:40 AM1/10/18
to delphi...@freeml.com
鈴木さん、こんにちは。
渡辺です。

T_TestQryのBefore Insertイベントで、abortすれば良いのでは?

procedure TForm1.T_TestQryBeforeInsert(DataSet: TDataSet);
begin
abort;
end;

DeleteやUpdateも同様に行けると思います。

あだち

unread,
Jan 10, 2018, 2:08:23 AM1/10/18
to delphi...@freeml.com
あだちです


DBCtrlGridのAllowInsertプロパティを、Falseにすればできたような。



On Wed, 10 Jan 2018 14:18:38 +0900 (JST)
ストラテジー鈴木 <delphi...@freeml.com> さんは書きました。:
--
http://www.thinksoft.co.jp
ML用 <adac...@thinksoft.co.jp>

ストラテジー鈴木

unread,
Jan 10, 2018, 4:21:37 AM1/10/18
to delphi...@freeml.com
あだちさん

鈴木です。
ありがとうございます!
望み通りの動作をいたしました。
AllowInsertプロパティを見落としていました。

鈴木

ストラテジー鈴木

unread,
Jan 10, 2018, 4:25:53 AM1/10/18
to delphi...@freeml.com
 渡邊さん

 こんばんは鈴木です。

 ありがとうございます。
 教えていただいたコードで、目的の動作をすることが出来ました。
 
 今回はあだちさんから教えていただいた方法(DbCtrlGridのAllowInsertを変更)で対応したいと思います。

 久しぶりのDBの処理で難儀していますが、助かりました。

鈴木 

あだち

unread,
Jan 10, 2018, 5:18:59 AM1/10/18
to delphi...@freeml.com
あだちです
余談ですが。

DBCtrlGridは、機能的にもいまいちだし、使いにくいのもあるのですが、
AllowDeleteあわせこのプロパティは、良いなと思っています。
TDBGridにも欲しいなと。


On Wed, 10 Jan 2018 18:21:33 +0900 (JST)
ストラテジー鈴木 <delphi...@freeml.com> さんは書きました。:

> あだちさん
>
> 鈴木です。
> ありがとうございます!
> 望み通りの動作をいたしました。
> AllowInsertプロパティを見落としていました。
>
> 鈴木
>


のべ

unread,
Jan 10, 2018, 6:52:47 PM1/10/18
to delphi...@freeml.com

渡辺です。

DBCtrlGridにはこんな便利なプロパティーがあったんですね。
DBGridばっかり使ってたので知らなかったです。

私も次からは使おうと思います。
Reply all
Reply to author
Forward
0 new messages