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"等は無効化のままです。(見えてはいます)
また、データベースの内容表示は正しくなっています。
各コンポーネントのプロパティは詳しく見たつもりですが、該当する項目は見当たりません。
これらボタンはどの様に有効化するのでしょうか?
過去にも同様な質問はない様でした。どなたか、ご教授頂けると幸いです。
そのIBQueryは編集可能ですか?
IBUpdateSQLとかは使ってます?
Questさん
ありがとうございます。
すみませんIBQueyが編集可能とはどう言う事でしょうか?
プロパティの設定は変えられます。
コンポーネントなので、ソースコードをいじる事はできないのではないでしょうか?
IBUpdateSQLは使っていません。
データベース内にテーブルが3つあり、DBNavigator, DBGrid, DataSource, IBQueryは各々2つ用意していますが、IBTransaction, IBDatabaseはひとつずつです。
IBQueryはそのままでは読み取り専用、つまりテーブルの内容を更新できません。
IBUpdateSQLコンポーネントをフォームに置いて
IBQueryのUpdateObjectプロパティにその名前(IBUpdateSQL1など)を指定します。
関連付けられたIBUpdateSQLをダブルクリックすると設定ダイアログが表示されるので
キー項目のリストからキーになるフィールド(通常はプライマリキー)を
更新する項目のリストから更新したいフィールド(通常はすべて)を選択して
(項目名の大文字小文字を区別する場合は「項目名を"で括る」にチェックを入れて)
「SQL文を生成」ボタンをクリックします。
そうすると、IBQueryで参照するテーブルに挿入、更新、削除などを行うSQLが設定されます。
で、このダイアログのOKボタンをクリックすれば、このIBQueryで参照するテーブルが
編集可能になります。
そうすれば、DBNavigatorでの追加、削除ボタンなどが有効になると思います。
今回の場合、DBNavigator, DBGrid, DataSource, IBQueryのセットが2組あるようなので
それぞれにIBUpdateSQLを用意して、それぞれに設定してください。
Questさん
ありがとうございました。
ご教授通りIBUpdateSQLコンポーネントを配しIBQueryから関連付ける事で
うまく行きました。
IBQueryは単体では読み取り専用なのですね。
そこで疑問が生じました。
別のところで、IBQueryで"Update"文や"Insert"文を用いてテーブルを更新していますが(特にエラーにはなりません)、IBUpdateSQLを組み込む前からの事です。
これは”IBQueryはそのままでは読み取り専用で内容を更新できない”と反しませんでしょうか?
特に問題になっていませんので良いのですが、少し気になりました。
そうですね。ちょっと説明不足でした。
”IBQueryはそのままでは読み取り専用で内容を更新できない”というのは
SQLプロパティに「SELECT文を設定した」場合です。
UPDATE文やINSERT文、DELETE文を指定してExecSQLを実行した場合は
テーブルに対する更新、挿入、削除が可能です。
Questさん
大変ありがとうございました。
些細な質問にもお答えいただきありがとうございます。
この件は解決しましたので閉めさせて頂きます。
ツイート | ![]() |