DBNavigatorボタンの有効化

解決


yTake  2013-07-25 03:46:13  No: 44919

yTakeといいます

DELPHI XE + Firebirdでデータベースアプリを作成しています
OS:32ビットWin7です。

データベースの構成は次の様な形です。
DBNavigator -> DataSource -> IBQuery -> IBDatabase
DBGrid -> DataSource -> IBQuery -> IBDatabase
IBTransaction - > IBDatabase

アプリを立ち上げDBへ接続すると、DBNavigatorの"First", "Prior", "Next", "Last"ボタンは有効化されますが、"Insert", "Delete", "Post", "Cancel"等は無効化のままです。(見えてはいます)

また、データベースの内容表示は正しくなっています。

各コンポーネントのプロパティは詳しく見たつもりですが、該当する項目は見当たりません。
これらボタンはどの様に有効化するのでしょうか?

過去にも同様な質問はない様でした。どなたか、ご教授頂けると幸いです。


Quest  2013-07-25 04:49:51  No: 44920

そのIBQueryは編集可能ですか?
IBUpdateSQLとかは使ってます?


yTake  2013-07-25 05:02:12  No: 44921

Questさん
ありがとうございます。
すみませんIBQueyが編集可能とはどう言う事でしょうか?
プロパティの設定は変えられます。
コンポーネントなので、ソースコードをいじる事はできないのではないでしょうか?
IBUpdateSQLは使っていません。
データベース内にテーブルが3つあり、DBNavigator, DBGrid, DataSource, IBQueryは各々2つ用意していますが、IBTransaction, IBDatabaseはひとつずつです。


Quest  2013-07-25 09:51:25  No: 44922

IBQueryはそのままでは読み取り専用、つまりテーブルの内容を更新できません。
IBUpdateSQLコンポーネントをフォームに置いて
IBQueryのUpdateObjectプロパティにその名前(IBUpdateSQL1など)を指定します。
関連付けられたIBUpdateSQLをダブルクリックすると設定ダイアログが表示されるので
キー項目のリストからキーになるフィールド(通常はプライマリキー)を
更新する項目のリストから更新したいフィールド(通常はすべて)を選択して
(項目名の大文字小文字を区別する場合は「項目名を"で括る」にチェックを入れて)
「SQL文を生成」ボタンをクリックします。
そうすると、IBQueryで参照するテーブルに挿入、更新、削除などを行うSQLが設定されます。
で、このダイアログのOKボタンをクリックすれば、このIBQueryで参照するテーブルが
編集可能になります。
そうすれば、DBNavigatorでの追加、削除ボタンなどが有効になると思います。

今回の場合、DBNavigator, DBGrid, DataSource, IBQueryのセットが2組あるようなので
それぞれにIBUpdateSQLを用意して、それぞれに設定してください。


yTake  2013-07-25 15:13:31  No: 44923

Questさん
ありがとうございました。
ご教授通りIBUpdateSQLコンポーネントを配しIBQueryから関連付ける事で
うまく行きました。

IBQueryは単体では読み取り専用なのですね。

そこで疑問が生じました。
別のところで、IBQueryで"Update"文や"Insert"文を用いてテーブルを更新していますが(特にエラーにはなりません)、IBUpdateSQLを組み込む前からの事です。
これは”IBQueryはそのままでは読み取り専用で内容を更新できない”と反しませんでしょうか?
特に問題になっていませんので良いのですが、少し気になりました。


Quest  2013-07-25 16:34:12  No: 44924

そうですね。ちょっと説明不足でした。
”IBQueryはそのままでは読み取り専用で内容を更新できない”というのは
SQLプロパティに「SELECT文を設定した」場合です。
UPDATE文やINSERT文、DELETE文を指定してExecSQLを実行した場合は
テーブルに対する更新、挿入、削除が可能です。


yTake  2013-07-25 17:32:02  No: 44925

Questさん
大変ありがとうございました。

些細な質問にもお答えいただきありがとうございます。

この件は解決しましたので閉めさせて頂きます。


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

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






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