Groupmax Form Version 6 for Active Server Pages 使用の手引
処理定義に関する詳細な相違について説明します。処理コマンドの相違については,オンラインヘルプを参照してください。
- <この項の構成>
- (1) 処理全般
- (2) 処理の流れ
- (3) データ操作
- (4) 案件処理
- (5) SQL操作
(1) 処理全般
処理全般の相違について説明します。
(a) メッセージ
Groupmax Form Clientでは,伝票発行業務を実行しているとき,エラーメッセージや通知メッセージが表示されるため,処理定義の実行状況を知ることができます。
Groupmax Form for ASPでは,エラーメッセージや通知メッセージが表示されません。また,処理定義でエラーが発生した場合,処理はそのまま続行されます。そのため,処理定義で\ERRTNや\ERMSGを使って,エラーが発生した場合の処理を作成してください。
(b) 後処理
Groupmax Form Clientでは,後処理を実行するには,データが入力されていなければなりません。
Groupmax Form for ASPでは,データが入力されていなくても,後処理は実行されます。
(2) 処理の流れ
処理の流れの相違について説明します。
(a) 空白を含んだ文字列の判定
Groupmax Form Clientでは,データの後ろの空白は無視して判定されます。このため,「A」と「A'△'」は一致します。ただし,「''(空文字列)」と「'△'」は不一致となります。
Groupmax Form for ASPでは,データの後ろの空白も含めて判定されます。このため,「A」と「A'△'」は一致しません。
(b) 項目の未入力の判定
Groupmax Form Clientでは「@判定開始 項目='△'」及び「@判定開始 項目=\NIL」で判定できます。
Groupmax Form for ASPでは,未入力項目を判定できません。
(3) データ操作
データ操作の相違について説明します。
(a) 項目の属性
Groupmax Form Clientでは,項目の属性(数値・文字)の組み合わせによって,代入文,演算文,及び条件文の規則が異なります。
Groupmax Form for ASPでは,項目の属性(数値・文字)に関係なく,項目の内容によって,代入文,演算文,及び条件文の規則が異なります。
(b) 項目の桁数
Groupmax Form Clientでは,入力されたデータの長さが項目長に足りない場合,項目長まで空白が追加されます。
Groupmax Form for ASPでは,入力されたデータの長さが項目長に足りなくても,空白は追加されません。
(c) スペースの表示
Groupmax Form Clientでは,データの最後の空白は無視されます。「A'△'」と入力しても,表示上は「A」となります。
Groupmax Form for ASPでは,「A'△'」と入力すると,表示も「A'△'」となります。
(d) 演算方法
Groupmax Form Clientでは,10進演算で演算します。
Groupmax Form for ASPでは,浮動小数演算で演算します。Groupmax Form Clientとの演算方法の違いのため,演算誤差が発生する場合があります。
(e) 文字列操作
Groupmax Form Clientでは,コンボボックスの文字列を操作できます。
Groupmax Form for ASPでは,コンボボックスの文字列は操作できません。
(4) 案件処理
案件処理の相違について説明します。
(a) 伝票終了時の案件遷移
Groupmax Form Clientでは,伝票を終了すると自動的に案件が遷移します。
Groupmax Form for ASPでは,伝票を終了しても自動的に案件は遷移しません。
(5) SQL操作
SQL操作の相違について説明します。
(a) 接続情報
Groupmax Form Clientでは,@SQL接続でデータソース名,ユーザID,及びパスワードを省略すると,マネージャウィンドウで設定した値が使用されます。
Groupmax Form for ASPでは,マネージャウィンドウで設定できないため,@SQL接続でデータソース名,ユーザID,及びパスワードを必ず指定してください。
(b) トランザクション
Groupmax Form for ASPでは,WWWサーバ上のADOを経由してデータベースにアクセスします。アクセス中にクライアントとADOとの接続が切れると,すべてのトランザクションはロールバックされ,データベースとの接続が解除されます。このため,Groupmax Form ClientとGroupmax Form for ASPでは,次に示すような相違が生じます。
- データベース接続中での伝票の終了
Groupmax Form Clientでは,データベースに接続したまま伝票を終了すると,トランザクションがすべてコミットされてから,データベースへの接続が解除されます。
Groupmax Form for ASPでは,トランザクションがすべてロールバックされてから,データベースへの接続が解除されます。
- 処理定義の作成
Groupmax Form Clientでは,開始処理や前処理でデータベースに接続して,伝票終了時にトランザクションをコミットして接続を終了できます。
Groupmax Form for ASPでは,セッションタイムアウトが発生してデータベースへの接続が切れることがあるため,「接続,更新,コミット,接続解除」などのコマンドをまとめて記述してトランザクションを短くしてください。
なお,セッションタイムアウトが発生すると,セッションオブジェクトはすべて破棄されます。セッションオブジェクトが破棄されると,ADOとの接続も破棄されるため,それ以降のADOと通信するSQLコマンドはほかのASP処理と同様にエラーになります。
(c) NULL値の扱い
Groupmax FormClientでは,データベースからnullを検索すると格納先の項目や変数に,スペース(文字属性の場合)又は0(数値属性の場合)が設定されます。
Groupmax Form for ASPでは,属性に関係なく常に""(空文字列)が設定されます。
(d) SQL文の構成要素
Groupmax Form Clientでは,一つのSQL文中に指定できるバインド指定(項目名や変数名の前に「:」を付けたもの)やINTO句の数に制限があります。
Groupmax Form for ASPでは,一つのSQL文中に指定できるバインド指定やINTO句の数に制限はありません。
(e) 入力件数が0件の場合のレコードの追加
Groupmax Form Clientでは,入力件数が0件の場合,レコードは追加されません。
Groupmax Form for ASPでは,入力件数が0件の場合でも,レコードは追加されます。
- (例)
- 次に示す処理定義を実行したとします。
- @SQL実行ODBC1,@C
- ' INSERT INTO テーブル名 (DB項目1,DB項目2)' @C
- ' VALUES(:明細項目1, ''AAA'')'
- Groupmax Form Clientでは,1件も追加されません。
- Groupmax Form for ASPでは,DB項目1にnullを,DB項目2に'AAA'を設定してレコードが追加されます。
(f) 検索結果の代入
検索結果の代入に関する相違について説明します。
- 不正なデータの代入
Groupmax Form Clientでは,数値項目に対して桁数が上回るデータは,代入されません。
Groupmax Form for ASPでは,桁数が上回るデータも代入されます。
(g) SQL文の解析結果
@SQL実行を実行したとき,SQL文中のINTO句の解析結果がGroupmax Form ClientとGroupmax Form for ASPでは異なります。
- INTO句に結果の格納先を複数記述した場合の区切り文字
Groupmax Form Clientでは「,」だけでなく「:」も区切り文字として扱われます。
Groupmax Form for ASPでは「:」は区切り文字として扱われないため,複数の格納先を記述する場合は「,」で区切ってください。
(h) ORACLEデータベースに付属されているODBCドライバの使用
Groupmax Form for ASPでORACLEデータベースを使う場合,ORACLEに付属されているODBCドライバでは,文字型の項目を条件に指定した検索ができないことがあります。これは,検索条件に指定した内容が,次に示す条件をすべて満たしている場合に発生します。
- 検索条件に指定するデータベース側の項目の属性がCHAR型(固定長文字列)である
- 検索値がデータベース側の項目の定義長より短い
- 検索値をバインド指定(:項目名,:変数名)で指定している
この場合の対策を次に示します。
- 検索値を置換指定(::項目名,::変数名)にする
@SQL実行 ODBC1,'SELECT DB項目2 FROM TBL ' @C
'WHERE DB項目1=::伝票項目1 ' @C
'INTO :伝票項目2'
- ORACLEのテーブルの項目属性をCHARからVARCHARに変更する
- 常に検索条件に指定する値を定義長と同じにする
- 検索条件にlikeを使う
次に示すように,SQL文を実行する前に条件となる文字列に%を追加して非表示項目に代入しておき,それをlikeの検索値に指定します。
@代入 伝票非表示項目1 =伝票項目1&&'%'
@SQL実行 ODBC1,'SELECT DB項目2 FROM TBL ' @C
'WHERE DB項目1 LIKE :伝票非表示項目1 ' @C
'INTO:伝票項目2'
(i) Microsoft SQL Serverの数値型項目に対する指定
Groupmax Form for ASPで Microsoft SQL Serverを使う場合,Microsoft SQL Serverの数値型項目に対してデータをバインド指定(:項目名,:変数名)したSQL文を実行するとエラーになることがあります。これは,次に示す条件をすべて満たしている場合に発生します。
- 検索条件や追加・更新する値をバインド指定している
- バインド指定の対象となるデータベース側の項目の属性が数値型(INT,SMALLINT,DEC,FLOAT,SMALLFLT)である
この場合には,CONVERTを使ってデータベースの型に変換するようなSQL文に変更します。例を次に示します。
- (例1)
- テーブルTBLのINT型の項目DB_AとFLOAT型の項目DB_Bに,伝票上の項目F_AとF_Bの値を追加します。
- 対策前:
- @SQL実行 ODBC3,'INSERT INTO TBL(DB_A,DB_B) '@C
- 'VALUES (:F_A,:F_B)'
- 対策後:
- @SQL実行 ODBC3,'INSERT INTO TBL (DB_A,DB_B)'@C
- 'VALUES (CONVERT(INT,:F_A),'@C
- 'CONVERT(FLOAT,:F_B))'
- (例2)
- テーブルTBLのINT型の項目DB_Aの値が伝票上の項目F_Aの値と一致するレコードを検索します。
- 対策前:
- @SQL実行 ODBC3,'SELECT DB_A,DB_B FROM TBL'@C
- 'WHERE DB_A=:F_A INTO :F_A,:F_B'
- 対策後:
- @SQL実行 ODBC3,'SELECT DB_A,DB_B FROM TBL'@C
- 'WHERE DB_A=CONVERT(INT,:F_A)'@C
- ' INTO:F_A,:F_B'
All Rights Reserved. Copyright (C) 2001, 2004, Hitachi, Ltd.