接続文字列の他、スキーマフィルタ設定。論理名表示のためのテーブル設計書とリンク設定を行います。

接続設定

DB接続の場合、まず接続設定を作成します。

DB接続の設定

新規プロジェクトなどで表示される接続の選択画面のDB接続セクションにある「修正」「新規」ボタンで接続設定画面が表示されます。
この画面で選択する接続方式により様々な設定を行います。
接続方式を切り替えることにより、以下のような表示になります。

ADO接続

OLE DBによる接続です。

ビルトボタンでADO標準の接続設定画面が表示されます。

接続文字列の作り方

接続文字列を作るのは結構難しいのですが、ビルトボタンで表示される画面を使えば簡単に作成できます。 

こんな画面が出ます。ここに表示されるドライバーはお使いのパソコンによって異なりますが、この中から適当なドライバを選択し後は指示通り設定します。

例えばOracleクライアントをインストールされているとオラクル製のドライバも表示されますが、オラクル純正の方が良いかと言えばそうでもないのが厄介なところです。

接続文字列について

接続文字列について重要なのはどのプロバイダ(OleDBドライバ)を使用するかです。ADOを規格が甘いせいか、同じサーバーでもドライバによりかなり挙動が異なります。QueryBookがうまく動作しないような場合は、ドライバを変えてみてください。(経験的には困ったときのODBC経由接続かな)

UniDAC接続

UniDAC接続では主要なDBおよびODBCをサポートします。
事実上あらゆるDBに接続可能です。
詳しくないけど補足説明

サポートしているDBは以下の通り(全部試した訳ではないので使ってみてね。)

  • Access
  • Advantage
  • ASE
  • DB2
  • DBF
  • InterBase/FireBird
  • MySQL
  • MongoDB
  • ODBC
  • Oracle
  • PostgreSQL
  • Redshift
  • SQL Server
  • SQLite

一杯設定項目がありますが、通常は「基本設定」と「接続設定」だけ気にすればいいはずです。

※Unicodeを使用する場合は UseUnicode を True にしてください。
※Oracleでダイレクト接続する場合はUnicodeEnvironment もTrue にしてください。
画面の下にある補足の記述も気にしてくださいね。

接続設定の画面 の共通部(その他の設定)

ここでは各接続に共通な設定を行います。

接続情報
  トランザクション分離レベル トランザクション分離レベルを指定します。

スキーマ取得フィルタ
※接続ユーザの権限が強く、取得可能がスキーマ情報が多すぎる場合に指定します。カタログ名、スキーマ名のサポートはDBにより異なります。

  カタログ名 スキーマ取得時のフィルタ用カタログ名です。
スキーマ名 スキーマ取得時のフィルタ用スキーマ名です。
全カラム情報事前取得

DB接続時にスキーマ情報を取得するときの動作を指定します。
True: DBの全スキーマを一括取得します。
False: テーブル一覧でテーブルを選択するときにテーブル単位でスキーマを取得します。

※TrueにしておくとSQLの入力支援機能が便利に使えますが、DBによってはスキーマ取得に時間がかかります。

データセット設定
  オートトランザクション Trueの場合、データ保存時に自動的にトランザクションを開始し、成功時は自動的にコミット、エラー時は自動的にロールバックします。
オートコミット Trueの場合、オートトランザクション開始後、正常に実行されたときに自動的にコミットします。
キャッシュアップデート Trueの場合、保存するまでDBに保存されません。Falseではカーソルが行移動した瞬間にDBに保存されます。
※UniDAC接続のInterBase/FireBirdでは常に有効です。
非同期接続 Trueの場合、レコード取得やSQL実行が非同期で行われ、実行中も他の操作が可能になります。
SQLの実行時間は非同期接続の方が正確に表示されます。
※ADO接続のみサポート。
空文字はNULLをセット Trueの場合、空文字が入力された場合に、NULLをセットします。
固定長文字列をTRIMして表示 Trueの場合、固定長文字列フィールドの後ろ半角スペースを除去して表示します。
取得したレコードをコピペして保存するとき、余分なスペースのためサイズエラーになるのを防ぎます。
(データに日本語が入っている時の文字数とバイト数の数え方の問題です)
取得レコード制限 Trueの場合、下記の取得レコード制限数を有効にします。
取得レコード制限数 上記の取得レコード制限がTrueの場合、ここで指定されたレコード数以上のレコードを取得しません。
(制限以上のレコードがある場合はメッセージが表示されます。)
フェッチオンデマンド Trueの場合、グリッド表示に必要なレコードのみフェッチしますので、どんな巨大なテーブルでも一瞬でデータが表示されます。ただし、集計グリッドとカード表示では常に全データフェッチします。
※UniDAC接続ののみサポート。
レコード数取得 Trueの場合、与えられたSQLに SELECT COUNT(*) を追加して別途件数を取得します。フェッチオンデマンド、取得レコード制限時に有効です。
※UniDAC接続ののみサポート。
SQL囲い記号 自動生成するSQL文中のテール名、フィールド名に囲い記号が必要な場合に前後の2文字で指定します。  例) ""  ,  []

テーブル定義設定

QueryBookの目玉機能であるテーブル設計書とリンクさせ物理名表示させれる設定です。詳しくはテーブル定義を参照してください。

権限について

QueryBookは初回接続時に、スキーマ情報まとめて取得する方式のため、接続権限が強すぎるとDB内の全ユーザーのスキーマ情報を取得してしまいます。このため、接続に非常に時間がかかったり場合によってはハングしたように見えます。この辺りの事情もDBやドライバによってかなり挙動が異なるのですが、なるべく接続権限は必要最小限のものし、接続文字列でスキーマやカタログを限定してください。接続文字列内に指定できない場合は、スキーマ取得フィルタを設定してみてください。

※取得したスキーマ情報はローカルファイルに保存し再利用するので次回接続時は高速です。