5.1 ODBC準拠のデータベースの利用
Groupmax Formでは,次に示すODBC準拠のデータベースのファイルを利用できます(以降このファイルをODBCファイルといいます)。
Microsoft SQL Server,Microsoft Access(R),UNIFY 2000,HiRDB,
MIOS7/AS2形式のデータベース,SQL/K,XDM/RD,RDB1,
Sybase SQL Anywhere,SYBASE SQL Server
ODBCファイル使用時のプログラム構成を,図5-1に示します。
図5-1 ODBCファイル使用時のプログラム構成
![[図データ]](figure/zu050101.gif)
- <この節の構成>
- (1) ODBCファイルをGroupmax Formのファイルに変換する
- (2) ODBCファイルを新規に作成する
- (3) Groupmax FormのファイルをODBCファイルに変換する
- (4) ODBCファイル利用時の注意事項
- (5) 接続情報の指定
- (6) SQL文の実行
(1) ODBCファイルをGroupmax Formのファイルに変換する
既存のODBCファイルをアタッチして,Groupmax Formでそのファイルを利用できます。ODBCファイルには,主キーに相当するインデックスが必要です。
ODBCファイルをアタッチするには,マネージャウィンドウで[ファイル]-[外部データベースアタッチ...]を選択します。データソースなどを指定して,アタッチします。ファイルを保存すると,データ定義ファイル(ファイルタイプ「.SDF」)として保存されます。
なお,サーバ側の環境を変えると,アタッチしたファイルを使えなくなることがあります。その場合は,アタッチし直してください。
(2) ODBCファイルを新規に作成する
Groupmax Formで,ODBCファイルを作成できます。作成するファイルには,主キーが必要です。
開発ウィンドウからODBCファイルの作成を始める場合,[新規作成]ダイアログボックスで外部データベースのアイコンを選択します。データベース編集ウィンドウから始める場合は,Groupmax Formのデータベースと同様に[ファイル]-[新規作成...]を選択します。このとき,データベース属性に「外部データベース」を,ファイル種別に「ODBCファイル」を,それぞれ指定します。
データベース定義ウィンドウ及びデータベース編集ウィンドウでは,Groupmax Formのデータベースと同様に,項目を作成したりデータ入力をしたりして,ファイルを保存します。このとき,データ定義ファイルのファイルタイプは,「.SDF」になります。
データベースの作成を始めるための操作や,項目及びデータの編集については,「第2編 4. データベースの作成」を参照してください。
注 SQL/K,RDB1では,ファイルの作成はできません。
(3) Groupmax FormのファイルをODBCファイルに変換する
Groupmax Formのデータファイルの属性を変換して,ODBCファイルに作り替えられます。データファイルには,主キーが必要です。
ODBCファイルに変換するには,データベース編集ウィンドウにデータファイルを開いて,[編集]-[データベース属性...]を選択します。データベース属性には「外部データベース」を,ファイル種別には「ODBCファイル」を,それぞれ指定します。ファイルを保存すると,データ定義ファイル(ファイルタイプ「.SDF」)として保存されます。
データベース編集ウィンドウの操作については,「第2編 4. データベースの作成」を参照してください。
(4) ODBCファイル利用時の注意事項
ODBCファイルを利用するときの注意事項を,次に示します。
- データ属性の対応
ODBCファイルとGroupmax Formファイルとのデータ属性の対応については,「第4編 13.3.2(1) ODBCファイルとのデータ属性の対応」を参照してください。
- 外部データベースオプションの設定
マネージャウィンドウで[オプション]-[外部データベースオプション]-[ODBC...]を選択すると,データベースに接続するための情報や,更新の確定方法などを,外部データベースオプションとして指定できます。
- 項目数などの制限
ODBCファイルを利用するときの,項目数,レコード長,属性などの制限は,データベースによって異なります。各データベースのマニュアルで,確認してください。
- データ処理の制限
ODBCファイルのデータを@レコード入力及び@一括読込で読み込む場合,「読込方向」(A,D)と「占有時の処理」(R)とを同時に指定できません。また,@抽出で集計項目を指定した場合,ODBCファイルとGroupmax Formのファイルとでは,加工結果が異なることがあります。
- 特殊文字の使用
データベースによっては,次に示すように,特定の特殊文字を使えないことがあります。各データベースのマニュアルで,確認してください。
- データ中にシングルクォーテーションを使うとエラーになる
- 検索条件に「*」「%」「_」などを使うと,正しく検索できない など
- 日付型データの格納
日付関数を使って算出した日付データを,データベースの日付型の項目へ格納する場合,西暦年の桁数を一致させるには,日付関数情報を設定します。マネージャウィンドウで[オプション]-[日付関数情報設定...]を選択すると,日付関数情報を設定できます。
- 捺印の格納
伝票の捺印項目とデータベースとの間でデータを入出力する場合,印影と捺印項目の状態のどちらを対象にするかを指定できます。開発ウィンドウで[オプション]-[外部データベースオプション]-[ODBC...]を選択して,[ODBCオプション情報]ダイアログボックスの「電子印の印影」で指定します。
- 浮動小数点変換方法の指定
ODBCファイルの浮動小数点型の項目のデータを,Groupmax Formのデータベース・伝票・書式の数値型又は文字型の項目に取り込む場合,値を丸めるかどうかを指定できます。マネージャウィンドウで[オプション]-[クライアントオプション]を選択し,[ローカルオプション]ダイアログボックスを表示させて,「浮動小数点変換方法」を指定します。値を丸めることを指定すると,倍精度浮動小数点の場合は精度14で丸められ,単精度浮動小数点の場合は精度6で丸められます。値を丸めないことを指定すると,変換後に誤差が発生することがあります。
なお,ODBCファイルの項目を作成するとき,小数点以下のデータを繰り返し計算するような項目は,数値型(パック・固定小数点)にしてください。単精度浮動小数点型や倍精度浮動小数点型にすると,浮動小数点演算が行われて,丸めによる誤差が発生することがあります。数値型にすれば,固定小数点演算が行われるので,丸めによる誤差を避けられます。
- レコード占有の競合
伝票発行業務や手順業務でODBCファイルを更新した後,別の伝票発行業務で同じファイルにアクセスすると,レコードが占有されているために競合が発生することがあります。このような場合,ODBCファイルを更新した後に@SQLコミットを実行するか,又は外部データベースオプションの設定で「自動コミット」を解除しておいてください。
- 接続の高速化
Groupmax Form Client-ODBCを,Windowsの「スタートアップ」に登録するなどの方法で,あらかじめ起動してメモリに常駐させておくと,データベースへの接続が速くなります。
なお,伝票発行業務を直接起動する場合には,常駐をオペランドで指定できます。伝票発行業務の直接起動については,「第1編 2.1(2) Groupmax Formで作成した業務の直接起動」を参照してください。
(5) 接続情報の指定
伝票発行業務や手順業務などでODBCファイルを使うときには,データベースとの接続に必要な情報(データソース名,ユーザID,パスワード)を指定する必要があります。
接続情報の指定方法
接続情報を指定する方法には,次の4種類があります。
- データ定義ファイルに設定しておく(ファイルをアタッチする場合)
ファイルをアタッチするときに指定したデータソース名は,データ定義ファイル(ファイルタイプ「.SDF」)に設定されます。
また,[外部データベースのアタッチ]ダイアログボックスで「ログインIDとパスワードの保存」を選択すると,アタッチするときに指定したユーザID及びパスワードも,データ定義ファイルに設定されます。
- データ定義ファイルに設定しておく(ファイルを新規作成する場合及びGroupmax Formのファイルを変換する場合)
ODBCファイルを新規に作成するときや,Groupmax FormのファイルをODBCファイルに変換するときに,データソース名,ユーザID,及びパスワードを指定します。
[ユーザファイルセレクト]ダイアログボックスで[オプション...]ボタンを選択すると,接続情報を指定できます。指定した情報は,データ定義ファイル(ファイルタイプ「.SDF」)に設定されます。
- 外部データベースオプションで設定しておく
マネージャウィンドウで,外部データベースオプションとして,データソース名,ユーザID,パスワードなどを指定します。この情報は複数設定できるので,それぞれの情報を識別するために,接続識別子も指定しておきます。
マネージャウィンドウで[オプション]-[外部データベースオプション]-[ODBC...]を選択すると,接続情報を指定できます。
- 処理コマンドで指定する
ODBCファイルを使った処理を始める前に,@SQL接続のオペランドで,接続識別子を指定します。これによって,外部データベースオプションとして設定した接続情報を参照して,データベースと接続できます。
@SQL接続では,オペランドでデータソース名・ユーザID・パスワードを指定して,データベースと接続することもできます。
@SQL接続以降に実行するデータベース操作用の処理コマンドでは,同じ接続識別子をオペランドに指定することで,確立された接続状態を利用してファイルを操作できます。
接続情報の参照規則
ODBCファイルを使った処理を実行するときの,データソース名,ユーザID,及びパスワードの参照規則を,次に示します。
- 処理コマンドで接続識別子を指定した場合
データベース操作用の処理コマンドで,オペランドに接続識別子を指定した場合,外部データベースオプションとして設定した接続情報に基づいて,データベースと接続されます。ただし,@SQL接続のオペランドでデータソース名・ユーザID・パスワードも指定してあれば,その指定が優先されます。
なお,外部データベースオプションでの設定も,@SQL接続での指定もない場合は,データソース名・ユーザID・パスワードを問い合わせるダイアログボックスが表示されます。
- 処理コマンドで接続識別子を指定しない場合
データベース操作用の処理コマンドで,オペランドに接続識別子を指定していない場合,外部データベースオプションとして設定した接続情報に基づいて,データベースと接続されます。外部データベースオプションで接続情報が設定されていない場合は,データ定義ファイルに設定した接続情報に基づいて,データベースと接続されます。
なお,外部データベースオプションでの設定も,データ定義ファイルでの設定もない場合は,データソース名・ユーザID・パスワードを問い合わせるダイアログボックスが表示されます。
接続識別子の利用
@SQL接続で接続識別子を指定してデータベースと接続すると,以降に実行する処理コマンドでは,接続識別子を利用してデータベースにアクセスできます。接続識別子を利用すると,処理時間を短くしたり,使用する回線の数を減らしたりできます。
接続識別子を利用しない場合,テーブルごと(伝票発行業務の場合)又は処理コマンドごと(伝票発行業務以外の場合)に接続処理が実行されて,それぞれ異なる回線を使用します。これに対して,接続識別子を利用すると,@SQL接続を実行した後,同じ接続識別子に対して接続処理は実行されません。また,接続を解除するまでは,一つの回線だけを使用します。
なお,SQL文を実行する処理コマンド(@SQL実行)ではなく,データベースを操作する処理コマンド(@DB更新など)で接続識別子を利用する場合,同じデータベースファイルに複数の接続識別子を指定しても,2個目以降の接続識別子は有効になりません。
接続情報を指定するときの注意事項
- スキーマ名,ユーザID,パスワードの指定
スキーマ名,ユーザID,及びパスワードに使える文字は,データベースによって異なります。データベースの違いによる混乱を避けるために,スキーマ名には,英小文字を使わないでください。また,ユーザID及びパスワードには,ダブルクォーテーションを使わないでください。
- ODBCドライバとの整合性
32ビット版のアプリケーションであるGroupmax Form Client - ODBCやGroupmax Form Serverを,16ビット版のODBCドライバと組み合わせて使うと,正常に動作しないことがあります。データベースと接続したときの動作が不安定な場合,次のように対処してください。
- 外部データベースオプションや@SQL接続でデータソース名を指定して接続している場合,32ビット版のODBCドライバ用のデータソースを指定しているかどうか,確認してください。
- アタッチ時に指定したデータソース名に従って接続している場合,32ビット版のODBCドライバ用のデータソースを指定して,アタッチし直してください。
(6) SQL文の実行
ODBCファイルを使う場合,処理定義でSQL文を記述して,データを操作できます。@SQL接続でデータベースと接続した後に,@SQL実行のオペランドでSQL文を指定して,実行します。検索(問い合わせ)結果の取り出し(@SQLフェッチ)や,データ操作の確定(@SQLコミット)・取り消し(@SQLロールバック)などもできます。