VBMan Controls for Btrieve Programming manual Version 3.30 目次 目次 .............................................................................................................2 製品概要........................................................................................................8 はじめに .......................................................................................................8 システムの構造について ...............................................................................9 MICROSOFT .NET対応について ..................................................................9 対応言語について.......................................................................................10 VBMANツール・ボックス .............................................................................10 VBMAN DDFビルダー ..............................................................................11 BTRIEVEデータ型について..........................................................................11 データ・アクセス・メソッド/関数 .....................................................................12 使用権........................................................................................................12 ユーザー・サポート......................................................................................13 保証規定 ....................................................................................................15 販売元........................................................................................................16 開発元、ユーザーサポート ..........................................................................16 インストール .................................................................................................18 システム条件 ..............................................................................................18 コピープロテクト・ハードウェアのインストール ...............................................18 センチネル・ハードウェアのインストール ...................................................19 USBセンチネルの設置................................................................................... 19 パラレルポート接続センチネルの設置 ............................................................. 19 センチネル・ドライバーのインストール ......................................................20 センチネル・ドライバーの更新について ............................................................ 21 VBMAN CONTROLS FOR BTRIEVEのインストール .....................................21 インストールされるファイルについて ............................................................22 添付のBTRIEVE 6.15 ワークステーションエンジンについて .........................24 システム設定ファイル..................................................................................25 VBMAN.INIファイル..............................................................................25 Btrieveエンジンの設定 .................................................................................. 26 Pervasive.SQL対応について......................................................................... 26 チュートリアル ..............................................................................................28 BTRIEVEデータベースの定義......................................................................28 概要........................................................................................................28 VBMan DDFビルダーによるレコード定義..............................................28 Visual C# .NETでデータ参照フォームを作成 .......................................31 Visual Basicでデータ入力フォームを作成..............................................35 サンプルプログラムについて .........................................................................42 2 .NET用サンプルについて...........................................................................42 VISUAL BASIC 6.0 用サンプルプログラムについて .....................................43 ASP用サンプルプログラムについて ............................................................44 コンパチビリティ............................................................................................45 VISUAL BASIC.NETへの移行 ....................................................................46 VBMAN ACTIVEX CONTROL FOR BTRIEVE バージョン 3.Xからの移行....46 VBMAN FOR BTRIEVE/OCX32 バージョン 2.0 からの移行........................46 変換ツール..............................................................................................47 手動によるフォーム変換 ..........................................................................47 VBMAN FOR BTRIEVE/VBX バージョン 1.Xからの移行.............................49 フォームの変換 .......................................................................................49 データアクセス関数の移行 ......................................................................50 VBMan DDFビルダーの機能................................................................52 カスタム・コントロール・リファレンス ................................................................53 データベース・コントロール ......................................................................53 ボタン・コントロール ................................................................................55 エディット・コントロール............................................................................57 スクロール・コントロール .........................................................................58 チェック・ボックス・コントロール ................................................................59 オプション・ボタン・コントロール ...............................................................60 リスト・ボックス・コントロール ...................................................................61 コンボ・ボックス・コントロール ..................................................................63 ピクチャー・コントロール ..........................................................................65 拡張リスト・ボックス・コントロール ............................................................67 拡張コンボ・ボックス・コントロール ...........................................................70 グリッド・コントロール ..............................................................................73 カスタム・プロパティ・リファレンス ...................................................................76 Abort ............................................................................................................ 76 AlignFixedCells ........................................................................................... 76 AllOpen ........................................................................................................ 77 AllowDelete.................................................................................................. 77 AllowUpdate ................................................................................................ 78 AllowUserResizing ...................................................................................... 78 AutoFirst...................................................................................................... 78 BlobPath ...................................................................................................... 79 CacheDDF.................................................................................................... 80 CellMaxLength ............................................................................................ 80 ClearControlData ........................................................................................ 80 ConfirmMsg ................................................................................................. 81 DbCompareCase .......................................................................................... 81 DbConditions ............................................................................................... 82 3 DbDelimitChar ............................................................................................ 83 DbExOperation............................................................................................ 84 DbField ........................................................................................................ 84 DbIndex........................................................................................................ 85 DbLeaveResults........................................................................................... 85 DbListFields ................................................................................................ 86 DbListIndex ................................................................................................. 86 DbListSource ............................................................................................... 87 DbListTable ................................................................................................. 87 DbLocks ....................................................................................................... 88 DbMaxRecords............................................................................................. 88 DbOperation ................................................................................................ 89 DbPhysicalPosition...................................................................................... 90 DbResultID .................................................................................................. 90 DbSavePosition............................................................................................ 91 DbSkipRecords ............................................................................................ 91 DbSource...................................................................................................... 92 DbTable........................................................................................................ 92 DbTabStops ................................................................................................. 92 DbUpdateOption ......................................................................................... 93 DbValueFalse .............................................................................................. 93 DbValueIndetraminate ............................................................................... 94 DbValueTrue ............................................................................................... 94 DDFDir ........................................................................................................ 95 DistName ..................................................................................................... 95 Format ......................................................................................................... 95 FormatOption .............................................................................................. 96 FormatString ............................................................................................... 97 NumericMask .............................................................................................. 97 OpenMode .................................................................................................... 98 OwnerName................................................................................................. 98 ReadOnly ..................................................................................................... 99 SetColNames ............................................................................................... 99 SetColWidth................................................................................................. 99 SetRecordNumber ....................................................................................... 99 TextAlign ................................................................................................... 100 UpperCase ................................................................................................. 101 カスタム・イベント・リファレンス ....................................................................102 AfterColUpdate.......................................................................................... 102 AfterDelete................................................................................................. 102 AfterUpdate ............................................................................................... 102 BeforeColUpdate ....................................................................................... 103 BeforeDelete .............................................................................................. 103 BeforeUpdate............................................................................................. 104 BtrieveError .............................................................................................. 104 Format ....................................................................................................... 105 SetData ...................................................................................................... 106 カスタム・メソッド・リファレンス......................................................................108 DbAbortTransaction.................................................................................. 108 4 DbAccess .................................................................................................... 108 DbAccessByID ........................................................................................... 109 DbBeginConCurTransaction..................................................................... 111 DbBeginTransaction ................................................................................. 111 DbClearControlData ................................................................................. 111 DbClearFieldBuffer ................................................................................... 112 DbClose ...................................................................................................... 112 DbCloseAll ................................................................................................. 113 DbCreate.................................................................................................... 113 DbEndTransaction .................................................................................... 114 DbExAccess................................................................................................ 114 DbExFree ................................................................................................... 118 DbExGetFieldData .................................................................................... 118 DbExGetPosition ....................................................................................... 119 DbExSetMode ............................................................................................ 119 DbFindPercentage..................................................................................... 120 DbGetByPercentage .................................................................................. 121 DbGetDataSize .......................................................................................... 122 DbGetDataType......................................................................................... 122 DbGetDirect............................................................................................... 123 DbGetFieldData ........................................................................................ 124 DbGetFieldDataByID................................................................................ 125 DbGetFieldName....................................................................................... 125 DbGetIndexName...................................................................................... 126 DbGetModulePath..................................................................................... 126 DbGetNumOfField .................................................................................... 127 DbGetNumOfIndex ................................................................................... 128 DbGetNumOfRecords................................................................................ 128 DbGetNumOfTable ................................................................................... 129 DbGetPosBlock .......................................................................................... 129 DbGetPosition............................................................................................ 130 DbGetRecord.............................................................................................. 130 DbGetRecordImage ................................................................................... 131 DbGetRecordLength.................................................................................. 132 DbGetTableName ...................................................................................... 133 DbIsNull .................................................................................................... 133 DbIsOpen ................................................................................................... 134 DbLoadDDF............................................................................................... 134 DbLogIn ..................................................................................................... 135 DbLogOut .................................................................................................. 135 DbOpen ...................................................................................................... 135 DbOpenAll ................................................................................................. 136 DbReset...................................................................................................... 137 DbSetFieldData ......................................................................................... 137 DbSetFieldDataByID ................................................................................ 138 DbSetFileName ......................................................................................... 139 DbSetLockBias .......................................................................................... 139 DbSetRecord .............................................................................................. 141 DbSetRecordImage.................................................................................... 142 DbTransferFromControl ........................................................................... 143 DbTransferToControl ................................................................................ 143 5 DbUnlock ................................................................................................... 144 バージョン 1.Xデータ・アクセス関数.............................................................145 DbAbortTransaction.................................................................................. 147 DbAccess .................................................................................................... 148 DbAttachControl ....................................................................................... 150 DbBeginTransaction ................................................................................. 151 DbClearControlData ................................................................................. 152 DbClearFieldBuffer ................................................................................... 153 DbEndTransaction .................................................................................... 154 DbExAccess................................................................................................ 155 DbExFree ................................................................................................... 159 DbExGetFieldData .................................................................................... 160 DbExGetPosition ....................................................................................... 161 DbExSetFormattedString ......................................................................... 162 DbFindPercentage..................................................................................... 163 DbGetByPercentage .................................................................................. 164 DbGetDataSize .......................................................................................... 165 DbGetDataType......................................................................................... 166 DbGetDirect............................................................................................... 167 DbGetFieldData ........................................................................................ 168 DbGetFieldName....................................................................................... 169 DbGetPosition............................................................................................ 170 DbGetVersion ............................................................................................ 171 DbSetFieldData ......................................................................................... 172 DbSetFormattedString.............................................................................. 173 DbTransferFromControl ........................................................................... 174 DbTransferToControl ................................................................................ 175 DbUnlock ................................................................................................... 176 作成したアプリケーションの配布..................................................................177 DDFビルダー・リファレンス .........................................................................180 DDFビルダーの起動 ................................................................................180 新規DDFの作成 ......................................................................................180 フィールドの定義.......................................................................................182 インデックスの定義 ...................................................................................183 既存DDFの編集 ......................................................................................185 データ変換モードの動作について ..............................................................185 テーブルの搬入・搬出 ...............................................................................186 DBMAGICデータ辞書を搬入 ......................................................................186 VISUAL BASIC用フォームの生成 ..............................................................187 フィールドIDリストの生成 ..........................................................................187 システム・オプションについて.....................................................................188 APPENDIX ..............................................................................................193 A. MICROSOFT VISUAL STUDIO.NET 制約事項.....................................193 6 B. ACTIVE SERVER PAGESからの利用 ....................................................193 概要・制約事項 .....................................................................................193 ASPスクリプトの作成手順 .....................................................................194 C. FAQ – よくあるご質問 ........................................................................196 エラー・メッセージ .......................................................................................205 VBMANエラー・コード................................................................................214 DDFビルダー・メッセージ............................................................................217 BTRIEVEステータス・コード.......................................................................227 VBMAN CONTROLS FOR BTRIEVE 調査依頼フォーム ....................231 7 製品概要 はじめに VBMan Controls for Btrieve ver 3.30をお買い上げくださりまことにありがとう ございます。当製品はPervasive Software社のBtrieveデータ・ベース・エンジン をアプリケーションから容易にハイ・パフォーマンスで利用できるように設計され たCOMコンポーネントです。(以下、VBMan Controls for BtrieveをVBManと記 述する場合があります)VBManは13個のカスタム・コントロールと日本語DDFビ ルダー、バージョン1.xコンパチブル・データ・アクセス関数で構成されます。当カ スタムコンポーネントはVisual Basicや.NET Windows Formsの標準のコントロ ールにBtrieveデータベース・アクセス機能を追加したコントロールです。VBMan におけるアプリケーションの開発ではのDDF定義が終了後、フォームにVBMan カスタム・コントロールを配置し、必要なプロパティを選択するだけで、実行可能 なBtrieveアプリケーションが完成します。簡単なアプリケーションであれば、1行 もコードせずにプログラムを完成することも可能です。 以下はVBMan Controls for Btrieve ver 3.30で追加された機能です。 ① ② ③ ④ Microsoft Visual Studio .NET 2005に対応。 Pervasive.SQL V8 セキュアデータベース対応。 Pervasive.SQL V8.6 SP3対応。 ATL version 7.1を採用。 以下はVBMan Controls for Btrieve ver 3.20で追加された機能です。 ① ② ③ ④ ⑤ Microsoft .NET framework のWindows Forms対応 Microsoft Visual Studio .NET 開発環境に対応。 BIT型,8byte Integer型データに対応。 ATL version 7.0を採用。 USB Sentinelのサポート。 以下は従来からのVBMan Controls for Btrieve の特徴です。 ① ② ③ ATLで作成された軽量コントロールです。MFC等サイズが大きいランタイム への依存はありません。イントラネットでの配布が簡単になりました。 アパートメント・スレッド形式をサポート。サーバー・コンポーネントとして利 用可能。 Pervasive.SQL 2000i (SP3)対応。 8 ④ ⑤ ⑥ ⑦ DDFに準拠したBtrieve呼び出しが簡単に記述できます。DDFに準拠したア プリケーションは他のアプリケーションとDDFを介してデータ交換が可能で す。 DDFキャッシングを実現。複数コントロールが同じDDFを参照している場合 はDDFをロードしないのでパフォーマンスが向上します。 豊富なコントロール・プロパティにより、アプリケーションの開発工程を短縮 できます。 dbMagicのデータ辞書からのDDF定義移行機能。 システムの構造について VBManは マイクロソフト社のCOM/ActiveX Control仕様に沿って作成されてい ます。カスタム・コントロールとしては、グリッド・コントロール以外はWindowsの標 準コントロールをサブ・クラスした形で実現しています。ランタイム関数、クラス・ ライブラリはマイクロソフトVisual C++ .NET ATL version 7.1を使っています。 以下はシステム構造の概略図です。 COM コ ン ト ロ ー ル サ ポ ー ト 言 語 ( V B .N E T C # な ど ) V B M a n C o n tr o ls f o r B tr ie v e 3 2 b it B t r ie v e エ ン ジ ン Microsoft .NET 対応について 当 version 3.30 から Microsoft Visual Studio.NET2005 での Windows Forms による開発環境のサポートいたします。 Microsoft Visual Studio.NET/ .NET f ramework では従来の Visual Basic による ActiveX Control 利用では動作可能 であったメソッドやプロパティで動作しなくなったものがあります。詳細は Append ix-E に記載しましたのでご参照ください。 Microsoft .NET framework ではウェブアプリケーションの開発を ASP.NET で行 えます。ASP.NET での開発は当製品のような COM コンポーネントを利用する のではなく、.NET framework 形式のマネージドライブラリを使って開発する方 法をお勧めしています。弊社製品で Pervasive.SQL/Btrieve にアクセスすること の出来る製品としては Btrieve Classes for .NET がございますので、こちらを 9 利用した開発お勧めいたします。 対応言語について 2005 年 11 月現在、COM/ActiveX Control をサポートする言語製品は多数市 場に出回っていますが、各言語で COM/ActiveX Control のサポートは同一で はなく、動作の違いが確認されています。弊社コントロールでできるだけ多くの 言語に対応するように努力はしておりますが、言語製品は他社から供給される ものであり、弊社一社の力では対応できない場合ございますのであらかじめご 了承ください。 動作を確認できたホスト言語、制約事項などは弊社 web サーバーにて情報を 公開いたします。また、販社システム・ラボでも情報を提供いたします。 VBMan ツール・ボックス VBMan をインストールすると、以下のカスタム・コントロールが言語アプリケーシ ョンのツール・ボックスに追加されます。これらのコントロールをフォーム、ダイア ログ等に配置することにより、簡単に Btrieve にアクセス可能なアプリケーション を作成可能です。 データベース 編集テキスト コマンド・ボタン 水平スクロール 垂直スクロール チェック・ボックス オプション・ボタン リストボックス このコントロールをフォームに置くことにより、Btriev eデータベース・アクセスが可能となります。最初に フォームに設定します。 Btrieveのフィールドと文字データの交換をします。 日付、時間、金額は自動フォーマット入力が可能で す。 Btrieveのオペレーション(追加、削除など)を実行し ます。 Btrieveデータベースのレコードの移動に使用しま す。 Btrieveデータベースのレコードの移動に使用しま す。 論理型データを設定するチェック・ボックスです。 論理型、整数型のデータを設定します。 Btrieveデータベースの指定フィールドのリストを表 示、選択します。 10 コンボ・ボックス ピクチャー 拡張リストボックス 拡張コンボボックス グリッド Btrieveデータベースの指定フィールドのリストを表 示、選択します。 Btrieveデータベースの情報により、ビットマップ、メ タファイル、アイコンを表示します。 BtrieveのExtendedオペレーションに対応したリスト ボックスです。 BtrieveのExtendedオペレーションに対応したコンボ ボックスです。 BtrieveのExtendedオペレーションでグリッドにデー タを表示します。 VBMan DDF ビルダー VBMan Controls for BtrieveにはBtrieve 6.15等、DDF編集環境をお持ちでな いお客様のために、VBMan DDF ビルダーを添付しています。VBMan DDFビ ルダーはBtrieve 6.15当時のBtrieveデータ型のみサポートする仕様になります ので、Pervasive.SQLをお使いのお客様はDDFの編集、データベース入力にはP ervasive Control Centerをお使いください。 Btrieve データ型について VBMan Controls for Btrieve は Btrieve の拡張データ・タイプとして定義される 以下のデータ・タイプをサポートします。データ型の内部形式は Pervasive SDK マニュアルや Btrieve プログラマーズ・マニュアルを参照してください。 データ型 String 特記事項 Integer Float Date Time Decimal Money サイズは1,2,4,8バイトをサポート サイズは4,8バイトをサポート yyyy/mm/ddまたはyy/mm/ddフォーマット Hh:mm:ssフォーマット Logical Numeric Numericsa 内部表現はDECIMALと同じ。VBManEditにFormat文字 列を指定しない場合に金額表示形式の自動フォーマッ ト 1バイト型をサポート 11 Numericsts Bfloat Lstring Zstring Unsigned Binary 指定するサイズは先頭1バイトの長さを含む 指定するサイズは終端のヌル文字を含む Auto Increment Note LVar Bit Currency Blob 3.3000バイトまで。デリミタはヌルをサポート 3.3000バイトまで Long varcharに対応。 データ・アクセス・メソッド/関数 アプリケーション作成において、たとえば集計処理などを記述する際には、VBM an for Btrieve/VBX ver 1.xではDDFにしたがって、容易にBtrieveにアクセス 可能とする、データ・アクセス関数が用意されていました。VBMan Controls for Btrieveでは、これらの関数はデータ・ベース・コントロールのメソッドとして提供さ れます。またバージョン1.5までは関数のパラメータはすべて整数のIDでしたが、 32Bit環境で文字列領域に余裕があると判断し、これらのパラメータはすべて文 字列で指定可能となりました。以下はVBMan Controls for BtrieveをVisual Ba sicから利用する際のコード例です。 Dim Code$, rc As Integer Code$ = Text1.Text With VBMBtr1 Call .DbSetFieldData(“商品”,”コード”, Code$) rc = .DbAccess( BTR_GET_EQUAL, “商品”, “コード”) If rc <> 0 Then MsgBox “Btrieveエラー “ & CStr(rc) Stop End If End With 使用権 12 使用権とは、お客様が1台のパーソナル・コンピュータ・システムでVBMan Cont rols for Btrieveの開発環境を利用することが出来る権利です。 VBMan Controls for Btrieveの使用権はいかなる方法によっても第三者 に譲渡および貸与することは出来ません。 使用権はVBMan Controls for Btrieveのディスケット・パッケージを開梱し たときに発効します。一度開梱した商品の返品には応じることはできませ ん。 ランタイム・モジュールのライセンス料は無料です。お客様のアプリケーシ ョンと一緒に配布可能なファイルは当マニュアルの「インストール」にあるモ ジュール一覧をご覧ください。 当製品の利用によるお客様の損失等に関してましては弊社および、販社 システム・ラボは一切責任を負いませんのでご了承ください。 使用権は以下のいずれかの事由が起こった場合に消滅します。 1. 2. 3. 4. 5. 当ソフトウェアの不正な使用により弊社に著しい損害を与える場合。 購入者が使用規定に違反した場合。 プログラム・ディスク、印刷物などを使用権の範囲外の目的で複製し た場合。 購入者がVBMan Controls for Btrieveに同封されているユーザー登 録書を返送しない場合。 当製品をリバース・エンジニアリングの対象として利用した場合。 ユーザー・サポート ユーザー登録 当製品には、ユーザー登録用紙を添付しています。お買い上げのあと、で きるだけ早い機会に、必要事項をご記入の上、販売会社システムラボまで ファックスにてご返送Iいただくか、システムラボのWebSiteにてご登録をお 願いいたします。(http://www.systemlab.co.jp/vbman/productvb7.htm)ユ ーザー登録が行われていないと、ユーザーサポートが受けられない場合 がございます。 質問のご担当について 基本的にユーザー登録された方以外のユーザー・サポートへのお問い合 わせにはご返答することは出来ません。管理者の方のお名前でユーザー 登録されている場合には開発者の方1名様のみサポートの対象になりま す。1ユーザー版をご利用のお客様で複数のお名前の連名でのご質問を される場合がありますが、そのような場合は不正コピー使用とみなし、サポ ートを打ち切らせていただく場合もございますので、あらかじめご了承くだ さい。 13 お問い合わせの方法 当製品につきましては、製品の性格上複雑なやりとりになることが多く、記 録を残すためにも、電話によるユーザーサポートはいたしておりません。フ ァックスまたは電子メールでのお問い合わせのみ承りますのであらかじめ ご了承をお願いいたします。 ファックスでのお問いあわせの場合は巻末にあります「調査依頼書」に必 要事項をご記入の上、テクナレッジまでファックスで送信してください。電子 メールでのお問い合わせにつきましては、同様に巻末の「調査依頼書」に あります項目を記入の上、メール・アドレスは[email protected] 宛てお送りください。 サポート期間について 無償サポートはユーザー登録終了後、最初のサポートを開始した日から9 0日間、3インシデントを上限といたします。ただし、キャンペーン期間にお 買い求めになったパッケージは追加パッケージをお買い求めになった場合 はサポート期間が別途設定される場合もあります。無償サポート終了後に は有償サポート・サービスもご用意しております。詳細はお手数ですが販 社システム・ラボまでおたずねください。 サポート内容について VBManのサポートでは弊社製品に関するお問い合わせに限定させていた だきます。Pervasvei.SQL/Btrieveの使い方に関するお問い合わせは該当 サポートを提供している会社宛てお願いいたします。また、お客様が作成 されるアプリケーションの仕様に関する事や、一般的なプログラム・ロジック 等をご質問されてもユーザー・サポートではお答えすることはできません。 製品サポート情報の公開 テクナレッジでは当製品の最新サポート情報を弊社webサーバーにて公開 しています。(http://www.techknowledge.co.jp)また、最新バージョンのモジ ュールがダウンロード可能になっております。サポートにお問い合わせに なる前にぜひご参照ください。 サポートのパフォーマンスについて 簡単なお問い合わせであれば、1労働日以内を目標にサポートをしていま す。調査を必要とするお問い合わせには、回答に時間がかかる場合があ りますので、あらかじめご了承をお願いいたします。サポートには優先順位 はありませんが弊社内に到着順、情報の蓄積があるものから処理してい きます。サポート用紙に「納期が近いので」とか「回答を早く」などの記述を された場合でも受付順が変更されることはありませんのでご了承ください。 また回答スケジュール、調査スケジュール、返答期限等の具体的な日程 は当サポートでは提示出来ませんのでご了承ください。 依存するサポートが発生した場合について マイクロソフトのMSDNやWeb Siteからの情報でご質問の回答が出来る場 合は無償サポートやご契約いただいた有償サポートの範囲で処理できる のですが、マイクロソフト等の有償サポートを受けないとお客様に十分な情 報を提供できない場合があります。そのような場合はお客様に有償サポー 14 ト料金について、別途ご請求のご連絡をさせていただき、了承、入金後に 該当サポートを実施させいただきます。もちろん、別途料金のご請求を拒 否されて、サポートを中断する選択もお客様におきましては可能でござい ます。 登録内容の変更について 転居などによるご住所や電話番号など登録内容に変更が生じた場合には、 郵送、ファックス、または電子メールにて、販売会社システム・ラボまでご連 絡をいだだきますようお願いいたします。なお、電話による口頭での連絡 変更は受けかねますので、よろしくお願いいたします。 併用される他社製品について 当社製品と併用される、他社製品の使用方等についてのご質問をお受け することがあります。しかし、他社製品に関しましては、お答えできない場 合があります。他社製品につきましては、概当開発、販売会社または製品 サポート会社にご連絡ください。 保証規定 当製品、および付随する著作物に対して商品性及び特定の目的への適合性など についての保証を含むいかなる保証もそれを明記するしないに関わらず提供され ることはありません。 当製品の著作者及び、製造、配布に関わるいかなる者も、当ソフトウェアの不具 合によって発生する損害に対する責任は、それが直接的であるか間接的である か、必然的であるか偶発的であるかに関わらず、負わないものとします。それは、 その損害の可能性について、開発会社に事前に知らされていた場合でも同様で す。 15 販売元 (株)システムラボ 東京都杉並区上荻1丁目5番8号 直長ビル7F 電話: 03-5397-7511 FAX: 03-5397-7521 E-Mail: [email protected] Web: www.systemlab.co.jp 開発元、ユーザーサポート (株)テクナレッジ 東京都世田谷区駒沢2丁目16番1号 サンドービル 9F 電話: 03-3421-7621 FAX: 03-3421-6691 E-Mail: [email protected] Web: www.techknowledge.co.jp 商標登録 本マニュアルに記載される商標、登録商標は該当会社の商標または登録商標 です。 16 17 インストール VBMan Controls for Btrieve のインストールについて説明します。 システム条件 VBMan Controls for Btrieve を動作させるには、以下の前提となるソフトウェア 環境が必要となります。 ① ② ③ Microsoft Windows95/98/ME または Windows NT 4.0 SP3 以降また は Windows2000/XP/Windows 2003 Server COM/ActiveX Control をサポートする 32Bit 言語製品 Btrieve バージョン 6.15 または Btrieve 7.0 または Pervasive.SQL 2000 i(SP3), Pervasive.SQL V8.6 SP3 まで。 32Bit Btrieve 環境に関しては VBMan には Btrieve for Windows 95/NT versi on 6.15 のワークステーション・エンジンが添付されています。このエンジンは P ervasive Software 社が2次配布を禁止しているため、VBMan をインストールし たパソコンでは利用することは可能ですが、お客様の開発したアプリケーション に添付して配布することは禁止されております。十分ご注意ください。お客様の アプリケーションを配布する際 Btrieve を同梱したい場合は、Btrieve エンジンを 別途お買い求めになり配布件を取得する必要があります。 また、アプリケーション開発においては Btrieve についての詳しいプログラミング 情報が必要になる場合が想定されます。そのよう場合は Pervaisve.SQL 開発 キットのマニュアルやサンプル・プログラムをご参照ください。弊社ユーザー・サ ポートに Btrieve 自体の使用法、プログラミングの詳細、マニュアルの内容等を ご質問されても、返答いたしかねます。Btrieve や Pervasive.SQL に関してはエ ージーテックのサポートをご利用ください。 コピープロテクト・ハードウェアのインストール VBMan Controls for Btrieve を開発環境でご利用になるためにはセンチネルと いう不正コピー防止用のハード・ウェアをインストールすることが必要になります。 大変お手数ですが以下の手順に従ってセンチネル本体とドライバー・ソフトウェ アの設定をお願いいたします。尚、実行時にはセンチネル環境は不要となって おります。 18 センチネル・ハードウェアのインストール VBMan Controls for Btrieve を開発環境でご利用いただくためには、製品パッ ケージに添付されるセンチネルを USB ポートまたはプリンタ・ケーブルの先に設 置することが必要になります。USB センチネル、または、パラレルポート接続セ ンチネルのいずれかが、お客様の購入時のご選択に従ってパッケージに同梱さ れておりますので、ご選択されたセンチネル設定方法に従って設置をお願いい たします。 USB センチネルの設置 USB センチネルをパソコンの USB ポートに差し込んでください。別途ケーブル 類は必須ではありませんが、複数 USB ポートをお使いになる場合、パソコン側 の USB ポートに空きが無い場合はお手数ですが、USB ハブをご用意のうえ、U SB センチネルの接続をお願いいたします。 当製品で利用できる USB センチネルは番号 SGS01266 0247-UM と印刷され たシールが張ってあるものです。外観は以下のようになります。USB ポートに接 続すると緑の LED が点灯します。 パラレルポート接続センチネルの設置 以下の図を参照して、センチネルを接続してください。センチネルはパソコンとプ リンター・ケーブルで接続されることは必須となりますが、プリンターとの接続は 必須ではありませんのでプリンターを接続しない場合にはセンチネルのオス側 は開放されたままでご利用ください。 当製品に添付されるセンチネルは番号 J4QJJCE-B36 が印刷されたシールが 張ってあるものです。外観は以下のようになります。 19 以下はパラレルポート接続センチネルの設置図(例)です。 プリンタ・ケーブルが別途必要になりますことをあらかじめご了承願います。 また、複数のセンチネルをお使いになるような場合、センチネルを入れ子にして 利用することが可能となっております。 センチネル・ドライバーのインストール センチネルをオペレーティング・システムを経由して認識させるためにはデバイ ス・ドライバーのインストールが必要になります。以下はインストールの手順です。 センチネルドライバーは USB センチネル、パラレルポートセンチネルで共通で すので同じ手順でドライバーをインストールしていただくことになります。 ① ② ③ ④ VBMan インストール CD をドライブに挿入します。 Sentinel フォルダーに移動します。 RainbowSSD5.39.2.EXE をコマンド・プロンプトまたはエクスプローラーを起 動して実行します。 インストラクションに従ってインストーラーを作動させます。 20 USB センチネルの場合は一旦 USB センチネルの接続を解除するように求 められる場合がありますのでご注意ください。 センチネル・ドライバーの更新について センチネルを認識しないパソコンにつきましては最初にセンチネル・ドライバー のアップデートを試されることをお勧めいたします。弊社製品に添付されるセン チネルのドライバーは最新バージョンを技研商事のウェブサイトから入手するこ とが可能です。以下は技研商事の URL です。 http://www.giken.co.jp VBMan Controls for Btrieve のインストール VBMan Controls for Btrieve のインストールについて説明します。以下はイン ストールの手順です。当バージョンから Btrieve 6.15 ワークステーションエンジ ンは自動的にインストールされないように変更されましたのでご注意ください。B trieve 6.15 ワークステーション・エンジンを使うには「添付の Btrieve 6.15 ワー クステーションエンジンについて」をご参照ください。 ① ② ③ ④ ⑤ すでに VBMan for Btrieve/VBX や VBMan for Btrieve/OCX32 がインス トールされているパソコンに当製品をインストールする場合は、ウィンドウ ズ・ディレクトリに VBMAN.INI ファイルが存在する場合があります。このファ イルはお客様の既存の環境設定が保持されていますので、念の為に別デ ィレクトリに退避してください。 VBMan ActiveX Control for Btrieve 3.X がすでにインストール済みの環 境にはインストールすることができませんので以前のバージョンをコントロ ール・パネルのプログラムの追加と削除からアンインストールしてください。 Pervasive.SQL/Btrieveが利用可能な環境が準備できていない場合には、 インストールCDのルートにあるW32BTRV.DLLをパスの通っているフォルダ ーにコピーします。 1 VBMan インストール CD ドライブに挿入します。 ルートにある setup.exe を起動します。 1 このステップを実行しない場合、インストールの最後に VBMBT330.OCX を登録 出来ないというエラーが発生します。W32BTRV.DLL は Btrieve API エントリが定 義してある DLL です。パスの通っているフォルダーで確実なのはシステムディレク トリですが、後から Pervasive.SQL をインストールする場合には事前に削除してく ださい。 21 ⑥ ⑦ ⑧ setup.exe の質問に答えて OK ボタンをクリックすると自動的に導入が終了 します。すでに Btrieve の開発キット等をインストールされているパソコンの 場合は、カスタム・インストールを選択して、VBMan に添付される 32Bit の ワークステーション・エンジンのインストールをしない方法も選択可能です。 インストールが正常に終了するとスタートメニューに VBMan のフォルダー が作成されます。Windows NT の場合はプログラム・マネージャーに VBMa n のプログラム・グループ作成されます。 readme.html ファイルにはマニュアルには記述されていない最新情報が記 述されています。インストールに関する最新情報が記述される場合もあり ますので、必ずご一読ください。 Pervasive.SQL/Btrieve 環境が整っていない場合、インストールの最後に VBMB T330.OCX コントロールのレジストリ登録が失敗することがあります。そのような 場合はパソコンが Btrieve API インターフェースがロードできないような設定に なっていることが考えられます。 たとえば Pervasive.SQL をインストール済みの環境では c:\PVSW\BIN のような モジュールへの PATH に設定されていない場合が考えられます。Pervasive.SQ L/Btrieve のツール類は動作するが VBMan のインストールは失敗するような場 合は PATH のご確認をお願いします。 インストールされるファイルについて Windows のディレクトリを<win>, Windows のシステム・ディレクトリを<sys>、VBM an の導入ディレクトリを<instdir>とした場合に導入されるファイルの一覧を以下 に示します。デフォルトインストールでは<instdir>は c:\program files\TechKno wledge\VBMan Controls for Btrieve となります。Windows NT/2000/XP の場 合、システム・ディレクトリは system32 ディレクトリとなりますのでご注意ください。 お客様の作成したアプリケーションに添付して配布するモジュールには「再配 布」のカラムに「可」と記述されるものに限定されます。それ以外のモジュールを 配布した場合、著作権法違反となりますので十分ご注意ください。 デフォルト・パスとファイル名 <sys>\vbmbt330.ocx <sys>\ddfio330.dll 内訳 VBMan ActieX Control s for Btrieve version 3.30 実行ファイル DDFサポート32bit DLL 再配布 可 可 22 <sys>\dibapi32.dll <sys>\msflxgrd.ocx <instdir>\man\readme.txt <instdir>\bin\vbmddf.exe <instdir>\bin\vbmconv.exe <instdir>\man\vbmbt330.hlp <instdir>\man\vbmddf32.hlp <indtdir>\samles\vb\vbmanv1.bas <instdir>\samples\vbmddf32.exe <instdir>\samples\regsvr32.exe <instdir>\samples\vb\*.* <instdir>\samples\asp\*.* <instdir>\btr615\w32mkde.exe <instdir>\btr615\w32mkrc.dll <instdir>\btr615\wbtrv32.dll <instdir>\btr615\wbtrcall.dll <instdir>\btr615\wbtrvres.dll <instdir>\btr615\wbtrv32.dll <instdir>\btr615\w32mkset.hlp マイクロソフト提供のグ ラフィック関連DLL マイクロソフトのグリッド・ コントロール。DDFビル ダーが使用。 VBMan最新情報などの 記述 DDFビルダー バージョンコンバーター VBManヘルプファイル VBMan DDF ビルダー ヘルプファイル VBManバージョン1.0コン パチブル関数定義Visual Basicソース VBMan DDF ビルダー 実行ファイル マイクロソフトのOLEカス タム・コントロール登録プ ログラム。 2 VB用サンプル・プログラ ム ASP用サンプル・プログ ラム Btrieveワークステーショ ン・エンジン。 上記ファイルのリソース DLL BtrieveエンジンDLL Btrieve 16bit実行モジュ ール 上記ファイルのリソース DLL。 Btrieve API 32bitインタ ーフェース Btrieve設定プログラム・ ヘルプ 可 可 不可 不可 不可 不可 不可 不可 不可 可 不可 不可 不可 不可 不可 不可 不可 不可 不可 2 \windows の system ディレクトリにある vbmbt3.30.ocx, msflxgrd.ocx をこのプロ グラムでレジストリに登録します。また、ActiveX Control をアンインストールする には/U オプションを使います。 23 <instdir>\btr615\w32mkset.exe <instdir>\btr615\w32mkset.dll <instdir>\btr615\wdbuui32.dll <instdir>\btr615\wdbuei32.dll <instdir>\btr615\wdbumk32.dll <instdir>\btr615\wbtrthnk.dll <instdir>\btr615\nwlocale.dll <instdir>\btr615\w32bticm.dll <instdir>\btr615\w32nr.dll Btrieve設定プログラム Btrieve設定プログラムD LL Btrieve DLL Btrieve DLL Btrieve DLL BtrieveサンキングDLL Btrieve DLL Btrieve通信 DLL Btrieve通信 DLL 不可 不可 不可 不可 不可 不可 不可 不可 不可 添付の Btrieve 6.15 ワークステーションエンジンについて 添付される Btrieve 6.15 ワークステーションエンジンはインストールディレクトリ 下の btr615 フォルダーにコピーされます。このエンジンを使いたい場合は、該 当フォルダーを PATH 変数に加えてください。デフォルトインストールではパス が非常に深いので、c:\btr615 のようなルートから近いフォルダにコピーしてパス 設定するのが簡単でよいと思います。 この Btrieve 6.15 ワークステーションエンジンの利用を止めたい場合は、PATH 変数からの削除を確実に実行してから、Pervasive.SQL 等、上位バージョンのエ ンジン等をインストールしてください。 24 システム設定ファイル VBMAN.INIファイル VBMAN.INI ファイルは通常 Windows ディレクトリに配置され、VBMan のシステ ム設定に関する情報が書きこまれます。インストール直後にはこのファイルは存 在しませんが、VBMan DDF ビルダーの設定を書きこむた際に生成されます。 VBMan for Btrieve/VBX Version 1.x では network や dbpath の設定が必須で したが、データベース・コントロールのプロパティに設定または自動判定するよう に変更になりましたのでご注意ください。またセクション名は[vbman330]に変更 になりました。以下は設定項目とその説明です。 設定項目 詳細 float_size Float, Bfloat型のフィールドを文字列に展開する際の浮動小 数点の桁数。この値の設定が小さい場合、4バイトのFloat型 では桁落ちが発生する場合がありますので適当なサイズを 設定してください。デフォルトは10桁です。最大は20桁です。 変換の精度はマイクロソフトのコンパイラのランタイム・ライ ブラリに依存しています。 sShortDate Date型のフィールドを文字列に展開する際または文字列か らDate型に変換する際の形式を設定します。yyyy/mm/ddま たはyy/mm/ddが設定可能です。デフォルトはyyyy/mm/dd 形式です。 grid_max_col VBManグリッドが扱えるカラムの最大値を設定します。デフ ォルトは64カラムです。初期化時に割り振るメモリの量は grid_max_col*4 + grid_max_row*4 + grid_max_col*grid_max_row*4 バ イ ト で す 。 32bit 環 境 の た め C/C++のランタイム・メモリの容量が上限になります。 grid_max_row VBManグリッドが扱えるローの最大値を設定します。デフォ ルトは1024ローです。 sign_nibble DECIMAL型、MONEY型の正数値を表すニブル値を設定しま す。設定可能な値は12または15です。デフォルト値は15とな ります。 Year_2000 日付け型をYY/MM/DDの形式で扱う場合、この値に1をセッ トすると年の値に2000を加算します。デフォルト値は0でこの 25 場合は従来バージョンと同じく1900を加算します。このフラグ はデータの登録時に参照されます。Btrieveデータ自体は 2000 年 以 上 の 値 を 保 持 す る こ と が 可 能 で 、 VBMan で は YY/MM/DD表示形式の場合は2000年は00と表示されます。 上記以外にもVBMAN.INIファイルには弊社VBMan製品の設定 3が書き込まれま す。 以下は VBMAN.INI ファイルのサンプルです。 [vbman330] float_size = 15 sShortDate = yyyy/mm/dd grid_max_col = 30 grid_max_col = 400 Btrieve エンジンの設定 VBMan に添付される Btrieve for Windows95/NT バージョン 6.15 のワークステ ーション・エンジンの設定は Windows ディレクトリにある w32mkde.exe で行いま す。この製品はすでに Pervasive software からは入手できない状況ですから使 用方法等の情報が必要な場合は当エンジンを使わないで Pervaisve.SQLV8.6 等の現行製品をインストールしてご使用になることをお勧めします。 Pervasive.SQL 対応について Pervasive.SQL では Btrieve の拡張データタイプ以外のカラムを定義することが できますが VBMan ではそのようなデータ型のカラムはサポートされません。(lon gvarbinary 等) また当バージョンから「真のヌル値」(true nullable)をサポートするテーブルを扱 えるようになりました。フィールドの値のヌルチェックには DbIsNull メソッドを利用 します。 Pervasive.SQL の service pack レベルにより仕様詳細が変わりますのでリリー スノート(readme.html)や開発会社のウェッブ・サイトなどで随時情報を提供しま 3 VBMan for ODBC、VBMan DDF ビルダー等。 26 すので、ご参照ください。 27 チュートリアル ここでは、VBMan Controls for Btrieve を使ったフォームの作成方法について 説明します。 Btrieveデータベースの定義 概要 ここでは VBMan DDF ビルダーを使用したデータベースのフィールドの定義方 法について説明します。フォームのデザインに入る前にデータベースフィールド の定義と Btrieve データを生成します。 VBMan DDFビルダーによるレコード定義 VBMan for ActiveX Control のメニューには VBMan DDF ビルダーが登録され ます。DDF ビルダーを実行するにはこのメニューを選択します。以下は新規に Btrieve レコードを定義する手順です。 ① ② ③ VBMan DDF ビルダーを実行します。 初期メニューの「ファイル」から「DDF の作成」を選択します。 以下のダイアログが表示されます。DDF を保存するディレクトリを指定しま す。 ④ DDF ディレクトリを指定するとテーブル情報の入力ダイアログが表示され ます。この例ではテーブル名も Btrieve ファイル名も test1 と設定します。 28 ⑤ 空のテーブル定義画面が表示されます。 ⑥ 「フィールド」メニューから「フィールドの追加」を選択します。以下のようなフ ィールド定義画面が表示されます。 フィールド名を入力し、データ・タイプをコンボ・ボックスから選択し、必要に 応じて、データ長を入力します。文字列などの場合はデータ入力が必要で 29 すが、たとえば、時間、日付けなどは内部的なデータのサイズは規定され ているので設定の必要はありません。この場合、データ・サイズの入力カラ ムにはフォーカスが移動しません。小数点以下桁数についても、MONEY,D ECIMAL,NUMERIC 以外ではフォーカスが移動しません。 ⑦ ⑧ 上の操作を繰り返して、フィールドをすべて登録します。 インデックスを設定します。VBMan でコントロールを使ってデータを入力す る再には1個以上のインデックスの定義が必須になります。「インデックス」 メニューから「インデックスの追加」を選択すると以下のようなダイアログが 表示されます。 ⑨ インデックスを設定するフィールドを選択してソート・オーダーを選択します。 今回はチュートリアルなので、上記のダイアログのようにキー・タイプを設 定します。 「ファイル」メニューから「保存」を選択していままのフィールド定義を保存し ます。 「オプション」メニューから「Btrieve ファイル生成」を選択します。Test1.btr というファイルをリスト・ボックスから選択して「OK」ボタンを押すと Btrieve ファイル test1.btr が生成されます。 以上で DDF の定義と Btrieve ファイルの生成は終了です。DDF ビルダー を終了させます。「ファイル」メニューから「終了」を選択します。 ⑩ ⑪ ⑫ 30 複数のテーブルが必要な場合はファイル・メニューから新規テーブルを選択して、 同様の操作を繰り返します。 VBMan DDF ビルダーの操作の詳細についてはオンライン・ヘルプをご参照くだ さい。 Visual C# .NETでデータ参照フォームを作成 ここでは Microsoft Visual C# .NET で VBMan Controls for Btrieve を使った データ表示フォームの作成方法を説明します。この例では Pervasive.SQL 2000 I のサンプルデータ demodata を使っています。 1) Visual Studio.NET を起動します。 2) 新規プロジェクトから Visual C#プロジェクトを選択し Windows アプリ ケーションを選択してプロジェクトを開始します。 3) ツール・ボックスをマウス右クリックし、「ツールボックスのカスタマイ ズ」を選択します。 4) COM コンポーネントのタブで「参照」ボタンを押します。 5) システム・ディレクトリにある vbmbt330.ocx ファイルを指定します。する と COM コンポーネントのタブは以下のようになります。 31 6) ツールボックスに VBMan コントロールが以下のように表示されます。 32 7) データベース・コントロール(VBMBtr)を Windows Form にドラッグしま す。 8) プロパティページをマウス右クリックで開き、DDF ディレクトリに DEMO DATA ディレクトリを指定します。以下の画面の例は Pervasive.SQL 2 000I デフォルトインストール時での設定です。 9) Widnows form に VBMan グリッドをドラッグします。 33 10) VBMan グリッドをマウスの右クリックでプロパティダイアログを開き、以 下のように Person データベースから First_name,Last_name カラムを選 択します。インデックスには PersonID を指定します。 11) 実行します。グリッドにデータが表示されることを確認します。 34 12) この例では Visual C#でプロジェクトを新規開始しましたが、Visual Ba sic.NET でもプロジェクト選択以外は全く同一の手順となります。 Visual Basicでデータ入力フォームを作成 この章では Visual Basic 6.0 で VBMan Controls for Btrieve を使ったデータ入 力フォームの作成方法を説明します。 1) Visual Basic 6.0を実行します。 2) 「プロジェクト」メニューの下のカスタム・コントロールを選択します。以下の ようなダイアログが表示されますので、リストから「VBMan Controls for Btrieve」を選択します。 4チェック・ボックスが選択されている状態であるこ 4 リストボックスに「VBMan Controls for Btrieve」が表示されない場合は、インス トールが正しく行われていない可能性があります。Windows のシステム・ディレクト リに VBMBT3.30.OCX が存在することを確認してください。ファイルが存在するの であれば、レジストリへの登録が失敗しているとおもわれます。今一度 REGSVR3 2.EXE を実行して VBMBT3.30.OCX を登録してください。DOS プロンプトからのコ マンド・ラインは REGSVR32 c:\winnt\system32\vbmbt3.30.ocx のようになります。 35 とを確認してOKボタンを押します。 3) Visual Basicのツール・パレットにVBMan Controls for Btrieveのカスタム・ コントロールのアイコンが以下のように表示されます。 4) VBManデータアクセスコントロール(ディスクが1個だけのアイコン)をフォ ームにおきます。必ずこのコントロールを他のすべてのVBManコントロー ルより先にフォームに設定してください。このコントロールは実行時には表 示されないので、フォームのデザイン時に邪魔にならない適当な位置に配 置します。 36 5) データベース・コントロールのDDFDirプロパティを設定します。このプロパテ ィ は ド ラ イ ブ ま で 含 め た DDF フ ァ イ ル が 存 在 す る パ ス を 指 定 し ま す 。 FILE.DDF,FIELD.DDF,INDEX.DDFの3つのファイルが存在するパスであるこ とが必須となります。このプロパティが正しく設定されると、テーブル、フィー ルド、インデックスに関する情報をDDFからコントロールに読み込みます。 これらの情報により、フォームのデザイン時にデータ・ベースに関連する情 報を正確に効率よく設定することが可能になります。 6) データの入力フィールドをフォームにおき、プロパティを設定します。この例 ではエディット・コントロールをフォームに設定します。プロパティ 37 DbSource,DbTable,DbFieldの設定は必須となります。これ以降の例では DbSourceプロパティはフォームに唯一設定しているVBManデータベース・ コントロールのオブジェクト名の値を設定します。 7) 以下はエディット・コントロールのプロパティ設定ダイアログです。エディッ ト・コントロールをマウスの右ボタンでクリックして一番下のメニュー「プロパ ティ(P)」を選択すると表示されます。このダイアログでプロパティを設定す る場合は、データソース、テーブル、フィールドの順にコンボ・ボックスから 選択します。OKボタンを押すと初回のみフィールド名がエディット・コントロ ールのTextプロパティ値に設定されます。 38 8) エディット・コントロールのDbSource,DbTable,DbFieldプロパティを設定した 直後のフォームは以下のようになります。 9) 該当テーブルの入力項目をフォームに設定したら、Btrieveデータベースの 操作をするVBManボタンコントロールをフォームにおきます。 39 10) VBManボタン・コントロールでは、DbSource,DbTable,DbIndexプロパティ と DbOperation の 設 定 が 必 須 で す 。 プ ロ パ テ ィ 設 定 の ダ イ ア ロ グ で は BtrieveのBtrieveオペレーションをDbOperationプロパティに設定することも 可能です。以下の例では先頭レコードに移動するGetFirstオペレーション を選択しています。 11) 以下はボタンのキャプションを「先頭」と設定し、次レコードに移動するた めにGetNextボタンを追加したフォームを実行している様子です。 40 12) 以上のように、VBManエディット、VBManボタンを複数配置することによ り、簡単なフォームであれば、すぐにデータを登録したり、検索する実行可 能なフォームができあがります。この時点で設定必須なプロパティが指定 されていれば、実行可能です。また、いままで説明したフォームはVBMan DDFビルダーの自動フォーム生成機能で作成することもできます。 41 サンプルプログラムについて .NET 用サンプルについて .NET 用のサンプルは VB.NET および C#言語用が用意されています。それぞれメ ニューからプロジェクトソリューションファイルへのショートカットが張られています ので、Visual Stuiod.NET IDE がインストールされている環境をあらかじめご用意 いただけば、メニューからサンプルプログラムをごらんいただくことができます。 プロジェクトを開く前に、Visual Studio.NET のツールボックスに VBMan Controls for Btrieve のコンポーネントを登録しておく必要があります。(登録していない場 合は、コンポーネントが参照できない、というエラーになります) ツールボックスへ のコンポーネントの登録方法は、前章の「Visual C# .NET でデータ参照フォーム を作成」をご参照ください。 また、サンプルプログラムは Visual Studio.NET 2002 形式のプロジェクトファイル なので、Visual Studio.NET 2003 や Visaul Studio.NET 2005 から参照する場合 には、プロジェクト変換ウィザードにより、プロジェクト形式の変更が自動的に行わ れます。変換した後のサンプルプロジェクトの動作は確認済みです。 サンプルプログラムビルド時の注意点ですが参照しているラッパーコンポーネント (AxVBMBtrLib.DLL)の「ローカルコピー」プロパティに False が設定される場合に は True に設定していただくとエラーなく、簡単にサンプルプログラムをコンパイル して実行していただくことができるということです。 以下は設定項目のプロパティのスクリーンショットになります。 42 Visual Basic 6.0 用サンプルプログラムについて Visual Basic 6.0 用のサンプルはインストールディレクトリ(デフォルトでは\Progra m Files\TechKnowledge\VBMan Controls for Btrieve 3.30)以下の samples\vb フォルダーにあります。6 種類のサンプルプロジェクトが収録されています。(拡張 子 VBP ファイル) 各サンプルは DDF ディレクトリとしてデフォルトインストールの 場合のフォルダーに固定されていますので、デフォルトディレクトリ以外のインスト 43 ールでは、DDF ディレクトリを該当ディレクトリに変更してください。 ASP 用サンプルプログラムについて 当製品のサンプルには以下のようなファイルが添付されています。以下はサンプ ルの簡単な説明です。 SAMPLE1.AS BTRIEVE データを<TABLE>タグで表示するサンプルです。 P ブラウザーからは SAMPLE1.ASP ファイルを直接指定しま す。お客様の環境で動作させるには DDFDIR プロパティの 設定変更が必要です。 Sample2.htm Btrieve データを新規登録するサンプルです。ブラウザーか Sample2.asp らは sample2.htm ファイルを指定します。データが入力され て「登録」ボタンをクリックすると sample2.asp がデータを Btri eve データ・ベースに登録します。Sample2.asp の DDFDir プ ロパティはお客様の環境に合わせて設定変更が必要です。 サンプルを動作させるためには Btrieve が利用可能な IIS がインストールされてい る Windows サーバーが必要となります。 VBMan Controls for Btrieve の ASP サンプルディレクトリにある以下のファイル をサーバーのディレクトリにコピーして、そのパスを sample1.asp と sample2.asp フ ァイルの DDFDir プロパティ設定の行に設定する必要があります。以下のファイル は VBMan のインストール・ディレクトリ以下の samples\asp ディレクトリにインスト ールされます。 File.ddf Field.ddf Index.ddf Shiire.btr Item.btr たとえば、上記ファイルをサーバー名 \\jacksonの\ddfディレクトリにコピーした場 合はsample1.asp/sample2.aspファイルのDDFDirプロパティ設定行は以下のような 記述になります。 <% VBMan.DDFDir="\\jackson\ddf" %> 44 コンパチビリティ この章では VBMan Controls for Btrieve の以前のバージョンからの Visual Basi c アプリケーションの移行方法を示します。以下に各バージョンの説明をいたしま す。 VBMan for Btrieve/VBX スタンダード版 1994 年 5 月に発売されました。Windows 3.1+ VB2 で動作する VBX です。最終バージョンは 1.15 となっています。 VBMan for Btrieve/VBX 1994 年 11 月に発売されました。Windows 3.1 プロフェッショナル版 +VB2 で動作する VBX です。スタンダード版 に対して Btireve 拡張オペレーションなどが使 えるような仕様に拡張されています。最終版 は VB4 16bit 版でも動作するように修正され たバージョン 1.58 となります。 VBMan for Btrieve/OCX32 1996 年 3 月に発売されました。32bit OCX と なり、VB4 32bit 版で動作するものが開発さ れました。対応する Btrieve のバージョンも 32 bit 版の 6.15 となりました。その後 VB5 にも 対応し、最終版は 98 年 7 月現在 2.00I となっ ています。VBX ではデータ・アクセス関数でア プリケーションを作成することが多かったので コンパチブル関数として VBX 版のソースをそ のまま使える関数が用意されています。 VBMan ActiveX Control for B 1998 年に発売されました。ATL というクラスラ trieve ver 3.0X イブラルを採用したために、製品のソースは 大幅に書き換えが必要でした。ATL を採用し たのでいわゆる DLL HELL 問題を解決でき ました。マイナーバージョン・アップで Windows 2000 に対応しました。Pervaisve.SQL 2000 の Service Pack1 から Btrieve API の仕様変更 がありこれにもマイナーバージョン・アップで 対応しました。初期バージョンは ATL ver 2.0 /2.1 を使ってリリースしましたが、後半のバー ジョンは ATL 3.0 でリリースしています。 VBMan ActiveX Controls for 2002 年 3 月に Pervasive.SQL 2000i SP3 に Btrieve ver 3.10 対応して発売されました。また、このバージョ ンから Windows XP での動作保証をしまし た。新たに NUMERICSA,NUMERICSTS,CURR ENCY, Longvarchar データ型に対応し、true nullable カラムにも対応しました。 45 VBMan Controls for Btrieve v er 3.20 VBMan Controls for Btrieve V 3.30 2002 年 10 月に発売しました。.NET 環境に最 小のワークロードで既存の VB アプリを移行し たいというお客様のご要望が多かったので、 Windows Forms で動作する COM コンポーネ ント形式のコントロールも必要と思い、リリー スいたしました。名前は依然として VBMan で すがこのバージョンから Visual C#でも動作す るようになりました。VB6 のフォームと Window s Form では動作の違いが多数ありましたの で、内部的にはかなりの変更が必要でした。 2005 年 11 月に発売しました。 Pervasive.SQ L V8.6 SP3 に対応しました。 Pervasive.SQL のセキュアーデータベースに対応するため、 新たに DbLogIn/DbLogOut メソッドを追加しま した。DDF のパスとして URI を指定できるよう になりました。 Visual Basic.NET への移行 当 version 3.30 を使って作成された Visual Basic 6 用アプリケーションは Visual Basic.NET のアップグレードウィザードを使って Visual Basic.NET アプリケーション に移行可能なことを確認済みです。アップグレードウィザードを使って移行した Wi ndows Form ではレイアウトが多少変わってしまうことも確認していますので、アッ プグレード・ウィザードをご利用後に、フォームのレイアウトや外観を Visual Studio. NET で確認されることをお勧めします。ただしお客様のアプリケーションで他にも コンポーネントをお使いの場合は変換の前に該当コンポーネントが Visual Basic. NET をサポートするものであることを事前にご確認されることをお勧めいたします。 VBMan ActiveX Control for Btrieve バージョン 3.X からの移行 コントロールの GUID 等は ver 3.30 では変更されていません。OCX ファイル名の み変更になっていますので新しいバージョンをレジストリ登録していただけば既存 のプロジェクトの変換は必要ありません。 VBMan for Btrieve/OCX32 バージョン 2.0 からの移行 ここでは VBMan for Btrieve/OCX32 を使って作られた Visual Basic アプリケー ションを VBMan Control for Btrieve version 3.30 を使った Visual Basic アプリ 46 ケーションに移行する方法を説明します。この移行説明では Visual Basic 言語が 前提であり、VBMan の旧バージョンから最新バージョンへコントロールの入れ替 え方法を示すものです。Visual Basic から Visual Basic.NET への変換は Visual Studio.NET で提供されるアップグレードウィザードを使ってください。VBMan の旧 バージョンを使った Visual Basic アプリを最新版の VBMan + Visual Basic.NET アプリへ直接移行することはできません。 変換作業は基本的には GUID の変更、ライブラリ名の変更、コントロール・クラス 名の変更になります。当製品には Visual Basic のプロジェクト・ファイル名を指定 すると各フォームを変換するツール vbmconv.exe が添付されていますので最初に 変換ツールの説明をいたします。 変換ツール 変換ツールの使用方法は以下のようになります。 ① ② ③ ④ ⑤ ⑥ VBMan Controls for Btrieve メニューから ver2to3 コンバーターを選択して 変換ツールを実行します。 表示されるウィンドウの「変換元プロジェクト・パス」に変換したい Visual Basi c プロジェクトファイル(拡張子.vbp)のフル・パスを指定します。 「変換先プロジェクト・パス」に変換後のファイルを保存するディレクトリを指定 します。「変換後のプロジェクト・パス」には変換元と同じ値を設定することは できませんのでご注意ください。 「変換開始」ボタンを押します。 変換が終了するとウィンドウが終了します。 変換されたプロジェクトを Visual Basic で読み込み動作を確認します。 手動によるフォーム変換 47 VBMan for Btrieve/OCX32 version 2.00 で作成された Visual Basic のフォーム を VBMan Control for Btrieve version 3.30 で利用可能なように変更する方法を 説明します。フォームの変更には Notepad.exe 等のテキスト・エディターを使って、 コントロールのライブラリ名や GUID を変換することになります。以下は変換手順 の概要です。 ① ② エディターで Visual Basic のプロジェクト・ファイル(拡張子 .vbp)を開きます。 GUID を変換します。 変換前の行: Object={1601CD73-F987-11CE-9262-0080AD156341}#1.0#0; VBMBTR32.OCX 変換後の行: Object={3235CFE2-D891-11D1-BD2B-004026182472}#1.1#0; VBMBT3.30.OCX ③ ④ ⑤ Visual Basic のプロジェクト・ファイルを保存します。 プロジェクトに含まれるフォーム・ファイル(拡張子 .frm)をエディターで開きま す。 ライブラリ名を変更します。ライブラリ名は Begin で始まる行の VBMBtrLib.と いう文字列を VBMBTRLibCtl.に変更します。 変更前の行: Begin VBMBTRLib.VBManBtn VBManBtn6 変更後の行: Begin VBMBTRLibCtl.VBMBtn VBMBtn6 ⑥ ⑦ コントロール名を変更します。コントロール名は上記⑤の行にあるライブラリ 名の後にドットで表記される文字列です。VBMan には 13 個のコントロール がありますので、後述の変換表を参考に文字列を置換します。 フォーム・ファイルを保存します。 VER 2.00 コントロール名 VBMDB VBManBtn VBManEdit VBManGrid VBManListBox VBManComboBox VBManExListBox VBManExComboBox VBManPic VBManCheck VER 3.30 コントロール名 VBManDb VBMBtn VBMEdit VBMGrid VBMListBox VBMComboBox VBMExListBox VBMExComboBox VBMPic VBMCheck 48 VBManOptBtn VBManHScroll VBManVScroll VBMOptBtn VBMHScroll VBMVScroll コンバージョンツール、手動による変換でもプロパティ設定やご利用の Visual Bas ic バージョンなどによりコントロールがロードできない場合があるようですが、その ような場合は Visual Basic の開発環境で再度コントロールを張っていただくことに なります。あらかじめご了承ください。 VBMan for Btrieve/VBX バージョン 1.x からの移行 ここでは VBMan for Btrieve/VBX 版で作成したアプリケーションを VBMan Contr ols for Btrieve 環境へ移行する際の手順、注意点等を記述します。 フォームの変換 Visual Basic 2.0J で作成された VBMan を使ったフォームはそのままでは Visu al Basic 6.0/5.0/4.0J では読み込めません。以下の手順でフォームを移行する ことになりますが、マイクロソフトによって変更された VBX と OCX の仕様の変更 が原因で完全に移行できる訳ではないことに注意してください。 ① ② フォームをテキスト形式で保存 Visual Basic 2.0J の「テキスト形式で保存」の機能を使って、移行した いフォームをテキスト形式で保存します。 フォームの編集 フォームをエディターで開いて VBMan のコントロールに「VBMBTRLibCt l.」というモジュールクラスを示すプリフィックスをつけます。以下は VBM an データベース・コントロールにおけるサンプルです。 変更前 Begin VBManDB VBMan1 Height = 480 Left = 10 Top = 480 End 変更後 Begin VBMBTRLibCtl.VBManDb VBMan1 Height = 480 49 Left Top End ③ ④ ⑤ = 10 = 480 Visual Basic の起動とコントロールの追加 Visual Basic を起動します。メニューから ActiveX Control を選択して、 VBMan Controls for Btrieve をプロジェクトに追加します。 プロジェクトへフォーム・ファイルの読み込み ②で編集したフォーム・ファイルを Visual Basic のプロジェクトに追加し ます。ファイル・メニューの下からファイルの追加を選択し、ファイルの指 定ダイアログで②で編集したフォームのファイル名を指定します。 フォームの変換エラーの確認 フォーム変換ではプロパティの違いなどから、エラーが発生する場合が あります。フォームのファイル名と同じ名前で、拡張子が.log のファイル にエラー詳細がレポートされますので、このファイルを参照して、変換で きなかったプロパティ等を Visual Basic のデザイン・モードで修正してく ださい。 データアクセス関数の移行 バージョン 1.0 コンパチブル関数 VBMan バージョン 1.5 までは VBX のモジュールにデータベースアクセス関数と して DDF に準拠した Btrieve アクセスを可能とするエントリ・ポイントがエクスポ ートされていました。これらの関数は VBMan Controls for Btrieve ではバージ ョン 1.0 コンパチブル関数として同様に関数がエクスポートされています。以前 のバージョンでは Btrieve.bas というファイルに Btrieve のオペレーション・コード と一緒に Visual Basic 用に関数の宣言がしてありました。このファイルは VBMa n Controls for Btrieve では VBMANV1.BAS として、インストールディレクトリの samples ディレクトリに存在しますので、このファイルを Visual Basic のプロジェ クトに追加してご使用ください。 VBMan Controls for Btrieve ではフォームに複数のデータベース・コントロール が設定できるように機能を拡張した結果、このバージョン 1.0 コンパチブル関数 を使う場合は、どのデータベース・コントロールのポジション・ブロックを使うのか を事前に指定する必要があります。コントロールを指定する関数は DbAttachCo ntrol で、パラメータはコントロールの名前とそのコントロールが置かれているフ ォーム名を指定します。以下はサンプル・コードです。 Dim Rc As Integer Rc = DbAttachControl(“VBMan1”,”Form1”) If Rc <> 0 Then 50 MsgBox “コンパチブル関数を使うことができません。” Stop End If Rc = DbAccess(BTR_GET_FIRST, CUST_TABLE, CUST_KEY_PATH ) If Rc <> 0 Then MsgBox “Btrieve Error ” & CStr(rc) Stop End If DbAttachControl 関数からの戻り値が0でない場合はフォーム名またはコントロ ール名が正しくないと思われます。今一度ご確認ください。 データ・ベース・コントロール・メソッド Visual Basic 2.0J における VBX の仕様ではカスタム・コントロールに独自のメ ソッドを追加することはできませんでした。この仕様は ActiveX Control(OCX)で 拡張され、カスタム・コントロールのデザイナーは独自のメソッドをユーザーに提 供することが出来るようになりました。 VBMan Controls for Btrieve でも、このデザイン上の利点を生かすべく、いまま でデータ・ベース・アクセス関数として提供されていた関数をデータ・ベース・コン トロールのメソッドとして提供するようになりました。単にメソッドとするだけでは、 先に紹介したバージョン 1.0 コンパチブル関数と差別化できないと考え、従来フ ィールド、テーブル、キーなどは整数の ID で指定する仕様だったのを改め、す べてを文字列で DDF 定義時と同じ値を指定可能としました。従来の整数の ID での方法には、Visual Basic 2.0J の文字列領域の不足、16bit 環境でのパフォ ーマンス不足、などを考慮したうえでの仕様であり、またループの記述が簡単な どの利点もありました。32Bit 環境でこれらの制約はある程度緩和されていると 考え、パラメータのデザインを変更した訳ですが、お客さまの環境によってはパ フォーマンスが不足することなども考えられますので、その場合にはバージョン 1.0 コンパチブル関数をお使いになられるようにお願いいたします。 以下は VBMan Controls for Btrieve のデータベース・アクセス・メソッドの呼び 出しコード例です。DbAccess,DbExAccess メソッドの第一パラメータ定義は Btri eve.Bas ファイルにありますのでご利用ください。 Dim rc As Integer rc = VBMan1.DbAccess( BTR_GET_FIRST, “顧客”, “コード”) If rc <> 0 Then MsgBox “Btrieve ステータス” & CStr(rc) Stop End If 51 VBMan DDFビルダーの機能 VBMan DDF ビルダーは 32Bit アプリケーションになりました。従来版は 16bit アプリケーションで GRID.VBX を利用してフィールドなどを表示していましたが、 32bit になり、MSFLXGRD.OCX を利用してフィールドなどを表示しています。VB Man DDF ビルダーを実行する場合には、MSFLXGRD.OCX が Windows の Syst em ディレクトリに存在し、REGSVR32.EXE でレジストリに登録されていることが 必要になります。 また、VBMan DDF ビルダーには Btrieve データ移行モードが追加されました。 システム・オプションで「Btrieve データ移行」が設定されている場合かつ、DDF で指定されるディレクトリに Btrieve ファイルが存在する場合には、データ移行モ ードになります。データ移行モードでは、フィールドの挿入、インデックスの挿入 ができない等、編集機能に制限があります。既存のデータが不要な場合はこの オプションをやめるか、DDF ビルダーを起動する前に不要な Btrieve ファイルを 削除または別ディレクトリに待避をしてください。 VBMan Controls for Btrieve ではインデックスの指定にインデックス名を使え るようになりました。これに対応して同じ先頭フィールド名でセグメント・キーを作 成する場合、インデックスを識別するために、インデックス名が設定可能になっ ています。「インデックス」メニューに「インデックス名の追加」、「インデックス名 の削除」が追加されています。 フォームの生成に関しては以前の VBMan for Btrieve/VBX を VB2 で利用でき るフォームと VBMan Controls for Btrieve バージョン 3.30 を Visual Basic 6.0J で利用できるフォーム生成が可能です。Visual Basic .NET で使うフォームは生 成できませんが、Visual Basic 6 用のフォームは Visaul Studo.NET のアップグ レードウィザードで Visual Basic.NET 用に変換できます。 52 カスタム・コントロール・リファレンス ここでは、VBMan Controls for Btrieve で利用可能な 13 個のカスタム・コントロ ールについて説明します。最初にフォームに設定するコントロールは次に説明 するデータベース・コントロールです。この章の説明では各コントロールの概要、 使用上の注意などを記述します。カスタム・プロパティ、カスタム・イベント、カス タム・メソッドの詳細はそれぞれのリファレンスを参照してください。 データベース・コントロール 概要 VBMan データベース・コントロールは VBMan を使用するアプリケーションにお いて、フォーム等を作成する場合に最初に設定するコントロールです。このコン トロールの DDFDir プロパティで設定したディレクトリ情報から DDF を読み込み ます。 このコントロールがフォームに設定されていない場合は、他の VBMan コントロ ールがフォームに存在しても、DbSource,DbTable プロパティ等が指定可能とな りませんのでご注意ください。 VBMan データベース・コントロールはデザイン時にはアイコン表示されますが、 実行時には不可視になります。デザイン時にはフォームの設計で邪魔にならな い適当な場所に設定します。 VBMan データベース・コントロールが読み込む DDF 定義に存在するテーブルに ついて、テーブルに関連する Btrieve ファイルをオープンした時には、このコント ロール単位で Btrieve のポジション・ブロックとレコード・イメージを保持するバッ ファを管理します。たとえば、同じファイルを別々のポジション・ブロックで管理し たい場合は同じフォームに複数の VBMan データベース・コントロールを設定す ることで可能になります。 VBMan データベース・コントロールを Visual Basic で使う場合、コントロール配 列にして使うことはできません。他の VBMan コントロールは DbSource,DbListS ource プロパティに VBMan データベース・コントロールの Name プロパティの値 を参照する仕様の為、コントロール配列にすると Name プロパティで識別できな くなります。 以下は VBMan データ・ベース・コントロールに特有なプロパティ、イベント、メソッ ドの一覧です。 53 カスタム・プロパティ CacheDDF DDFDir DistName OpenMode OwnerName カスタム・イベント BtrieveError カスタム・メソッド DbAbortTransaction DbAccessByID DbAccess DbBeginConcurTransaction DbBeginTransaction DbClearControlData DbClearFieldBuffer DbCloseAll DbEndTransaction DbExFree DbExGetPosition DbFindPercentage DbGetDataSize DbGetDirect DbGetFieldDataByID DbGetIndexName DbGetNumOfField DbGetNumOfRecords DbGetPosBlock DbGetRecord DbGetRecordLength DbLoadDDF DbOpenAll DbSetFieldData DbSetFileName DbSetRecord DbTransferFromControl DbUnlock DbClose DbCreate DbExAccess DbExGetFieldData DbExSetMode DbGetByPercentage DbGetDataType DbGetFieldData DbGetFieldName DbGetModulePath DbGetNumOfIndex DbGetNumOfTable DbGetPosition DbGetRecordImage DbIsOpen DbOpen DbReset DbSetFieldDataByID DbSetLockBias DbSetRecordImage DbTransferToControl 54 ボタン・コントロール 概要 VBMan ボタン・コントロールはユーザーのマウス・クリックによるボタンの押下時 に DbOperation プロパティに設定した Btrieve オペレーションを実行します。 登録系のオペレーション 5を設定した場合には、同じフォームにある、このコント ロールを指定するようにDbSource,DbTableプロパティに値が設定してあるVBMa nコントロールからデータを収集して、DDFにしたがってレコード・イメージを作成 し、Btrieveのオペレーションを発行します。 参照系 6のオペレーションがDbOperationプロパティに設定されている場合は、 同じフォームにある、このコントロールを指定するようにDbSource,DbTableプロ パティが指定されたコントロールにレコード・イメージのバッファからBtrieveから 読み込んだデータを設定します。 DbOperation プロパティとして設定できるのは以下の項目です。これらは Btriev e の機能をそのまま実現しています。 First Last Insert Delete Update Next Previous GetEqual GetGreater GetGreaterOrEqual GetLessThan 5 6 最少の値をもつキーに該当するレコードを得 る。 最大の値をもつキーに該当するレコードを得 る。 新規のレコードを追加。 現在のレコードを削除。 現在のレコードを更新。 次の値をもつキーに該当するレコードを得る。 前の値をもつキーに該当するレコードを得る。 一致するキーに該当するレコードを得る。 指定したキーより大きな値をもつキーに該当す るレコードを得る。 指定したキーと同じまたは、より大きな値で一番 近いをもつキーに該当するレコードを得る。 指定したキーより小さな値をもつキーに該当す るレコードを得る。 Insert,Update オペレーション。 GetEqual,GetNext オペレーションなど。 55 GetLessThanOrEqual StepFirst StepLast StepPrevious StepNext InsertNCC 7 UpdateNCC 指定したキーより同じ、または、より小さな値で 一番近い値をもつキーに該当するレコードを得 る。 物理先頭レコードを得る。 物理最終レコードを得る。 前の値をもつレコードを得る。 次の値をもつレコードを得る。 新規レコードを追加。論理カレンシー情報は設 定しない。 レコードを更新。論理カレンシー情報は設定し ない。 以下の表はVBManボタンに特有 8のプロパティ、イベント、メソッドをあらわしま す。 カスタム・プロパティ Abort DbLocks ClearControlData DbOperation ConfirmMsg DbTable DbIndex DbSource カスタム・イベント BtrieveError SetData カスタム・メソッド なし 7 NCC = NO CURRENCY CHANGE 対応する Visual Basic または Windows のコントロールと比べた場合に特有の プロパティを指します。 8 56 エディット・コントロール 概要 VBMan テキストコントロールは DbSource,DbTable,DbField プロパティによって指 定される Btrieve データベースのフィールドのデータを表示、登録します。Btriev e とのデータの交換は VBMan ボタン・コントロールをクリックした場合や、VBMa n スクロールを使った場合、DbTransferToControl, DbTransferFromControl メソ ッド/関数を使った場合におこなわれます。 入力マスクについて VBMan エディット・コントロールは関係するフィールドのデータタイプが Date 型 または Time 型の場合で、Format プロパティが指定されていない場合はキー入 力をマスクして入力します。Date 型の場合は VBMAN.INI ファイルの設定によっ て、yyyy/mm/dd,yy/mm/dd の形式を選択可能です。Time 型については hh:m m:ss 形式固定です。これらのマスクはコントロールからフォーカスがなくなる時 におこなわれます。これらのデフォルト入力マスク以外のマスクをしたい場合は Format プロパティと FormatOption プロパティを組み合わせて設定することにな ります。Format,FormatOption プロパティの詳細についてはカスタム・プロパテ ィ・リファレンスを参照してください。 以下の表は VBMan エディットに特有のプロパティ、イベント、メソッドです。 カスタム・プロパティ DbField FormatOption DbSource NumericMask DbTable ReadOnly Format UpperCase カスタム・イベント なし カスタム・メソッド なし 57 スクロール・コントロール VBMan水平・垂直スクロール・コントロールにより、レコードの移動ができます。 レコードの移動はDbIndexで指定されるキー順となります。キーなしのBtrieveフ ァイル、Btrieve 5.x形式のBtrieveファイルではこのコントロールは使えません。 9 また、このコントロールは VBMan ボタンにカレント・レコードを変えるオペレーシ ョンを設定した場合はこれらのコントロールに連動してキャレット・ポジションを変 更します。 レコード件数が変わるようなオペレーションを発行した場合、Refresh メソッドを 呼び出すことで、スクロール・コントロールのキャレット位置を正しい位置に設定 することができます。 以下の表は VBMan スクロール・コントロールに特有のプロパティ、イベント、メソ ッドです。 カスタム・プロパティ AutoFirst DbIndex DbSource DbTable カスタム・イベント BtrieveError カスタム・メソッド なし 9 Btrieve のパーセンテージ・オペレーションを使っているため。 58 チェック・ボックス・コントロール 概要 VBMan チェック・ボックス・コントロールは DbSource, DbTable, DbField プロパ ティで指定されるデータベースのフィールドの値が DbValueTrue プロパティで指 定される値と同一になった場合にチェックされます。 このデータ・ベースのフィールドの値とは、VBMan ボタン・コントロールや、スクロ ール・コントロールでカレント・レコードとしてポジショニングされたレコードにおけ るフィールドの値です。データ・ベース・アクセス・メソッドまたはバージョン 1.x コ ンパチブル・関数でカレント・レコードをポジショニングした場合は、DbTransferTo Control メソッドなどでデータをカスタム・コントロールに転送した時にフィールド の値が検査され、値が同一であれば、チェックされます。 以下の表は VBMan チェック・ボックス・コントロールに特有のプロパティ、イベン ト、メソッドです。 カスタム・プロパティ DbField DbValueIndeterminate DbSource DbValueTrue DbTable DbValueFalse カスタム・イベント なし カスタム・メソッド なし 59 オプション・ボタン・コントロール 概要 VBMan オプション・ボタンコントロールは DbSource, DbTable, DbField プロパテ ィで指定されるデータベースのフィールドの値が DbValueTrue プロパティで指定 される値と同一になった場合にチェックされます。 このデータ・ベースのフィールドの値とは、VBMan ボタン・コントロールや、スクロ ール・コントロールでカレント・レコードとしてポジショニングされたレコードにおけ るフィールドの値です。データ・ベース・アクセス・メソッドまたはバージョン 1.x コ ンパチブル・関数でカレント・レコードを位置ずけした場合は、DbTransferToCont rol メソッドなどでデータをカスタム・コントロールに転送した時にフィールドの値 が検査され、値が同一であれば、チェックされます。 以下の表は VBMan オプション・ボタン・コントロールに特有のプロパティ、イベン ト、メソッドです。 カスタム・プロパティ DbField DbValueTrue DbSource DbTable DbValueFalse カスタム・イベント なし カスタム・メソッド なし 60 リスト・ボックス・コントロール 概要 VBMan データベース・リストボックス・コントロールはプロパティ DbListField,DbLi stSource,DbListTable の値で指定されたカラムのデータすべてをデータベース から取得し表示します。データ更新のタイミングは DbUpdateOption プロパティ の設定により、なし、初期化時、フォーカス時を選択できます。 また、DbField,DbSource,DbTable プロパティで指定されるフィールドのデータとし て、このリスト・ボックスの選択値を設定、参照ができます。データを設定、参照 するのは VBMan ボタンの登録系のオペレーションまたは、DbTransferToContr ol,DbTransferToControl メソッドです。 VBMan リスト・ボックスは DbListIndex プロパティで指定されるキー・パスで、Btri eve の GET FIRST オペレーションを発行し、ファイルの最後まで GET NEXT オ ペレーションを発行して、リスト・ボックスにデータを挿入します。Sort プロパティ を True に設定している場合は VBMan リスト・ボックスがメモリでソートしてデー タを表示し、DbListIndex プロパティで指定されるキー順にはならないこともある ので注意してください。 VBMan リスト・ボックスは、レコードをリストに表示する直前に Format イベントが 発生します。このイベントのパラメータはこれから表示しようとするフィールドの 値です。このイベント内ではこの表示するデータを含むレコードがカレント・レコ ードになっています。したがって、DbGetFieldData メソッドでフィールドの値を取 得可能です。 Format イベントでは他のフィールドの値を検査、計算した結果、別の文字列を 表示したければ、Format イベントのパラメータで渡る文字列に表示を更新する 文字列を設定することで可能です。Format イベント内でイベントのパラメータに ヌル文字列を設定した場合、そのレコードはリスト・ボックスに表示されません。 以下は Visual Basic でのサンプル・コードです。 ‘マイナスのデータは表示しない例 Sub VBManListBox1_Format( LineData As String ) If Left$(LineData,1) = “-“ Then LineData = “” ‘ ヌル文字を設定 End If End Sub また、現在のレコードまででリストを止めたい場合は Abort プロパティに True 値 を設定します。 Visual Basicをコントロール・コンテナにした場合は、DbUpdateOptionプロパティ を初期化時に設定すると、Formatイベントが発生しません。これは初期化時に 61 はVisual Basicがイベントの発生を禁止していることが原因です。Formatイベン トを正常に発行させるにはフォームのActivateイベントでこのコントロールのRefr eshメソッドをよびだすことで回避できます。 10 VBMan リスト・ボックスの内容を再度 Btrieve データベースから読み込みたい場 合は、Refresh メソッドを使います。 VBMan リスト・ボックスに保持できる最大行数は 32767 件です。この値は 32bit のリスト・ボックスの仕様に依存する行数です。 第 2 パラメータは文字列を挿入する位置ですが、-1 を指定するとリストの最後 に追加します。 以下の表は VBMan リスト・ボックスに特有のプロパティ、メソッド、イベントです。 カスタム・プロパティ Abort DbListSource DbUpdateOption DbField DbListTable DbListField DbSource DbListIndex DbTable カスタム・イベント Format カスタム・メソッド なし 10 サンプル・コードは巻末のプログラミングのヒントにあります。 62 コンボ・ボックス・コントロール 概要 VBMan データベース・コンボ・ボックス・コントロールはプロパティ DbListField,Db ListSource,DbListTable の値で指定されたカラムのデータすべてをデータベー スから取得し表示します。データ更新のタイミングは UbUpdateOption プロパテ ィの設定により、なし、初期化時、フォーカス時を選択できます。 また、DbField,DbSource,DbTable プロパティで指定されるフィールドのデータとし て、このコンボ・ボックスの選択値を設定、参照ができます。データを設定、参照 するのは VBMan ボタンの登録系のオペレーションまたは、DbTransferToContr ol,DbTransferToControl メソッドです。 VBMan コンボ・ボックスは DbListIndex プロパティで指定されるキー・パスで、Bt rieve の GET FIRST オペレーションを発行し、ファイルの最後まで GET NEXT オペレーションを発行して、コンボ・ボックスにデータを挿入します。Sort プロパ ティを True に設定している場合は VBMan コンボ・ボックスがメモリでソートして データを表示し、DbListIndex プロパティで指定されるキー順にはならないことも あるので注意してください。 VBMan コンボ・ボックスは、レコードをリストに表示する直前に Format イベント が発生します。このイベントのパラメータはこれから表示しようとするフィールド の値です。このイベント内ではこの表示しようとするデータを含むレコードがカレ ント・レコードになっています。したがって、DbGetFieldData メソッドでフィールド の値を取得可能です。 Format イベントでは他のフィールドの値を検査、計算した結果、別の文字列を 表示したければ、Format イベントのパラメータで渡る文字列に表示を更新する 文字列を設定することで可能です。 Format イベント内でイベントのパラメータに ヌル文字列を設定した場合、そのレコードはコンボ・ボックスに表示されません。 また、現在のレコードまででリストを止めたい場合は Abort プロパティに True 値 を設定します。 Visual Basicをコントロール・コンテナにした場合は、DbUpdateOptionプロパティ を初期化時に設定すると、Formatイベントが発生しません。これは初期化時に はVisual Basicがイベントの発生を禁止していることが原因です。Formatイベン トを正常に発行させるにはフォームのActivateイベントでこのコントロールのRefr eshメソッドをよびだすことで回避することができます。 11 VBMan コンボ・ボックスの内容を再度 Btrieve データベースから読み込みたい 場合は、Reload メソッドを使います。 11 サンプル・コードは巻末のプログラミングのヒントにあります。 63 VBMan コンボ・ボックスに保持できる最大行数は 32767 件です。この値は 32bit のコンボ・ボックスの仕様に依存する行数です。 以下の表は VBMan コンボ・ボックスに特有のプロパティ、メソッド、イベントです。 カスタム・プロパティ Abort DbListSource DbUpdateOption DbField DbListTable DbListField DbSource DbListIndex DbTable カスタム・イベント Format カスタム・メソッド Reload 64 ピクチャー・コントロール 概要 VBMan ピクチャー・コントロールはグラフィック・イメージ・データを表示するコント ロールです。Visula Basic に標準のイメージ・コントロールと同等の機能にデー タベースからのデータを表示する機能を追加しました。 表示可能なイメージ・データは以下の形式のファイルです。 ビットマップ (.bmp) アイコン (.ico) ウィンドウズ・メタファイル (.wmf) VBMan ピクチャー・コントロールでは DbSource,DbTalbe,DbField プロパティで指 定される文字列型データベース・フィールドの値をファイル名としてディスクから イメージ・データを読み込み表示します。 指定されたファイルのイメージ・データタイプの判別にはファイル名の拡張子を 使用します。拡張子が指定されない場合はビットマップ(.bmp)と仮定します。 BlobPath プロパティにはイメージ・データが存在するディスク上のパスを指定す ることが可能です。この場合、データベース・フィールドの値はファイル名だけが 指定されていることが必要です。BlobPath プロパティに指定がなく、データベー ス・フィールドにファイル名だけが指定されるような場合はカレント・ドライブのカ レント・ディレクトリにファイルが存在する扱いになります。 VBMan ピクチャー・コントロールに再度データを読み込む場合は Refresh メソッ ドを呼び出します。 以下の表は VBMan ピクチャー・コントロールに特有のプロパティ、メソッド、イベ ントです。 カスタム・プロパティ BlobPath DbField DbSource DbTable カスタム・イベント なし カスタム・メソッド 65 なし 66 拡張リスト・ボックス・コントロール 概要 VBMan 拡張リスト・ボックス・コントロールは Btrieve の Extended オペレーション に対応したリスト・ボックス・コントロールです。Btrieve の Extended オペレーショ ンの特徴は以下です。 複合検索が可能 複数レコードを一度に転送するためパフォーマンスが高い フィールドの選択によりネットワークの負荷を軽減 通常の Btrieve 呼び出しではパラメータの構成が非常に複雑ですが、VBMan で はプロパティを指定するだけで簡単に Extended オペレーションが使用可能です。 プロパティの設定 Extended 系オペレーションを実行するためのプロパティ設定の手順を説明しま す。 ① ② ③ ④ ⑤ ⑥ ⑦ DbListSource プロパティの指定 DbListTable プロパティの指定 検索対象とするテーブル名を指定します。 DbExOperation プロパティの指定 GET PREVISOU EXTENDED, GET NEXT EXTENDED, STEP PREVI OUS EXTENDED, STEP NEXT EXTENDED の中から選択します。 DbSkipRecords プロパティの指定 検索条件を満たさない場合にスキップするレコード数を設定します。0を 指定するとシステム定義の最大値を Btrieve が選択して使用します。Bt rieve 6.15 では 4,095 です。 DbMaxRecords プロパティの指定 検索結果の最大レコード件数を設定します。Btrieve では結果はリニア なメモリに返されるため、65,536 バイト以上を越えることができません。 65,536 を DbFields プロパティで指定する抽出するフィールドの合計サイ ズで割った値以上は設定できません。 DbListFields プロパティの指定 抽出するフィールド名をカンマで区切った文字列を指定します。フィール ド ID でも指定可能です。フィールド ID は DDF ビルダーの表示値を 0 オフ セットにした値です。(例:1,2,4) DbConditions プロパティの指定 検索条件を指定します。指定の詳細はカスタム・プロパティ・リファレン スを参照してください。 67 ⑧ ⑨ DbTabStops プロパティの指定 VBMan リスト・ボックスでは Format イベントに渡されるデータは1つの フィールドの値でしたが、VBMan 拡張リスト・ボックスの場合は複数の 項目が渡されます。DbTabStops プロパティを設定した場合は Format イベントには DbFields で指定された複数のデータの区切りはタブ(&H0 9)文字になります。DbTabStops プロパティに何も指定しない場合はス ペース文字(&H20)が区切り文字になります。DbTabStops プロパティは 半角の文字数をカンマで区切って指定します。(例:"10,20,30,40")DbTa bStops プロパティは実行時のコントロールを作成する時に一度だけ参 照されます。実行時にダイナミックに変更することはできません。 DbLeaveResults プロパティの指定 このプロパティの設定は必須ではありません。検索の結果をメモリに保 持しておき、DbExGetFieldData 関数などを使って取り出す場合にこのプ ロパティを True に設定します。DbExGetFieldData 関数に渡す結果 ID は DbResultID プロパティに保持されます。(ランタイムのみのプロパティ のため、プロパティ・リスト・ボックスには表示されないことに注意してく ださい)DbUpdateOption をフォーカス時に設定した場合は DbExFree で メモリを解放するコードを記述することが困難と思われるのでお勧めし ません。 検索開始レコード VBMan 拡張リスト・ボックスではすべてのレコードを検索対象とするため、Exten ded オペレーションの前にカレント・レコードのポジショニングを実行します。各オ ペレーションとポジショニングの関係を以下に示します。 EXTENDED オペレーション GET PREVIOUS EXTENDED GET NEXT EXTENDED STEP PREVIOUS EXTENDED STEP NEXT EXTENDED POSITIONINGオペレーション GET LAST GET FIRST STEP LAST STEP FIRST 注意事項 Refresh メソッドを使うと Btrieve データベースから最新のデータを取得し、リス ト・ボックスの内容を更新することができます。 以下の表は VBMan に特有のプロパティ、イベント、メソッドです。 カスタム・プロパティ Abort DbCompareCase DbConditions DbExOperation 68 DbFields DbListSource DbIndex DbTabStops DbLeaveResults DbListTable DbResultID DbUpdateOption DbListFields DbListIndex DbLocks DbMaxRecords DbSkipRecords DbTable SavePosition カスタム・イベント BtrieveError Format カスタム・メソッド Reload 69 拡張コンボ・ボックス・コントロール 概要 VBMan 拡張コンボ・ボックス・コントロールは Btrieve の Extended オペレーショ ンに対応したコンボ・ボックス・コントロールです。Btrieve の Extended オペレー ションの特徴は以下です。 複合検索が可能 複数レコードを一度に転送するためパフォーマンスが高い フィールドの選択によりネットワークの負荷を軽減 通常の Btrieve 呼び出しではパラメータの構成が非常に複雑ですが、VBMan で はプロパティを指定するだけで簡単に Extended オペレーションが使用可能です。 プロパティの設定 Extended オペレーションを実行させるためのプロパティ設定の手順を説明しま す。 ① ② ③ ④ ⑤ ⑥ ⑦ DbListSource プロパティの指定 DbListTable プロパティの指定 検索対象とするテーブル名を指定します。 DbExOperation プロパティの指定 GET PREVISOU EXTENDED, GET NEXT EXTENDED, STEP PREVI OUS EXTENDED, STEP NEXT EXTENDED の中から選択します。 DbSkipRecords プロパティの指定 検索条件を満たさない場合にスキップするレコード数を設定します。0を 指定するとシステム定義の最大値を Btrieve が選択して使用します。Bt rieve 6.15 では 4,095 です。 DbMaxRecords プロパティの指定 検索結果の最大レコード件数を設定します。Btrieve では結果はリニア なメモリに返されるため、65,536 バイト以上を越えることができません。 65,536 を DbFields プロパティで指定する抽出するフィールドの合計サイ ズで割った値以上は設定できません。 DbListFields プロパティの指定 抽出するフィールド名をカンマで区切った文字列を指定します。フィール ド ID でも指定可能です。フィールド ID は DDF ビルダーの表示値を 0 オフ セットにした値です。(例:1,2,4) DbConditions プロパティの指定 検索条件を指定します。指定の詳細はカスタム・プロパティ・リファレン 70 ⑧ ⑨ スを参照してください。 DbDelimitChar プロパティの指定 VBMan 拡張コンボ・ボックスでは項目間の区切り文字を DbDelimtChar プロパティで指定します。このプロパティに何も指定しない場合はスペー スが項目間の区切り文字になります。 DbLeaveResults プロパティの指定 このプロパティの設定は必須ではありません。検索の結果をメモリに保 持しておき、DbExGetFieldData 関数などを使って取り出す場合にこのプ ロパティを True に設定します。DbExGetFieldData 関数に渡す結果 ID は DbResultID プロパティに保持されます。(ランタイムのみのプロパティ のため、プロパティ・リスト・ボックスには表示されないことに注意してく ださい)DbUpdateOption をフォーカス時に設定した場合は DbExFree で メモリを解放するコードを記述することが困難と思われるのでお勧めし ません。 検索開始レコード VBMan 拡張コンボ・ボックスではすべてのレコードを検索対象とするため、Exte nded オペレーションの前にカレント・レコードのポジショニングを実行します。各 オペレーションとポジショニングの関係を以下に示します。 EXTENDED オペレーション GET PREVIOUS EXTENDED GET NEXT EXTENDED STEP PREVIOUS EXTENDED STEP NEXT EXTENDED POSITIONINGオペレーション GET LAST GET FIRST STEP LAST STEP FIRST 注意事項 Refresh メソッドを使うと Btrieve データベースから最新のデータを取得し、コン ボ・ボックスの内容を更新することができます。 以下の表は VBMan 拡張コンボ・ボックスに特有のプロパティ、メソッド、イベント です。 カスタム・プロパティ Abort DbExOperation DbListIndex DbMaxRecords DbTable DbCompareCase DbFields DbListSource DbIndex DbUpdateOption DbConditions DbLeaveResults DbListTable DbResultID SavePosition DbDelimitChar DbListFields DbLocks DbSkipRecords 71 カスタム・イベント BtrieveError Format カスタム・メソッド Reload 72 グリッド・コントロール 概要 VBMan グリッド・コントロールは Btrieve の Extended オペレーションを使ってグ リッドにデータを表示します。 プロパティの設定 Extended オペレーションを実行させるためのプロパティ設定の手順を説明しま す。 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ DbListSource プロパティの指定 DbListTable プロパティの指定 検索対象とするテーブル名を指定します。 DbExOperation プロパティの指定 GET PREVISOU EXTENDED, GET NEXT EXTENDED, STEP PREVI OUS EXTENDED, STEP NEXT EXTENDED の中から選択します。 DbSkipRecords プロパティの指定 検索条件を満たさない場合にスキップするレコード数を設定します。0を 指定するとシステム定義の最大値を Btrieve が選択して使用します。Bt rieve 6.15 では 4,095 です。 DbMaxRecords プロパティの指定 検索結果の最大レコード件数を設定します。Btrieve では結果はリニア なメモリに返されるため、65,536 バイト以上を越えることができません。 65,536 を DbFields プロパティで指定する抽出するフィールドの合計サイ ズで割った値以上は設定できません。 DbListFields プロパティの指定 抽出するフィールド名をカンマで区切った文字列を指定します。フィール ド ID でも指定可能です。フィールド ID は DDF ビルダーの表示値を 0 オフ セットにした値です。(例:1,2,4) DbConditions プロパティの指定 検索条件を指定します。指定の詳細はカスタム・プロパティ・リファレン スを参照してください。 DbLeaveResults プロパティの指定 このプロパティの設定は必須ではありません。検索の結果をメモリに保 持しておき、DbExGetFieldData 関数などを使って取り出す場合にこのプ ロパティを True に設定します。DbExGetFieldData 関数に渡す結果 ID は DbResultID プロパティに保持されます。(ランタイムのみのプロパティ のため、プロパティ・リスト・ボックスには表示されないことに注意してく 73 ださい)DbUpdateOption をフォーカス時に設定した場合は DbExFree で メモリを解放するコードを記述することが困難と思われるのでお勧めし ません。 検索開始レコード VBMan グリッドではすべてのレコードを検索対象とするため、Extended オペレ ーションの前にカレント・レコードのポジショニングを実行します。各オペレーショ ンとポジショニングの関係を以下に示します。 EXTENDED オペレーション GET PREVIOUS EXTENDED GET NEXT EXTENDED STEP PREVIOUS EXTENDED STEP NEXT EXTENDED POSITIONINGオペレーション GET LAST GET FIRST STEP LAST STEP FIRST 注意事項 Btrieve ファイル・バージョン Btrieve のファイル・フォーマットはバージョン 6.x 以上であることが必要です。 表示内容の更新 Refresh メソッドを使うと Btrieve データベースから最新のデータを取得し、グリッ ドを更新することができます。 トランザクション・コントロール AllowDelete,AllowUpdate プロパティを True に設定した場合、表示データを削除、 修正することが可能です。グリッドの DbListSource で指定したデータ・ベース・コ ントロールの DbBeginTransaction/DbAbortTransaction/DbEndTransaction メソ ッドを適宜発行することで、表示データの修正をトランザクションとしてコントロー ルすることが出来ます。 以下の表は VBMan グリッドに特有のプロパティ、メソッド、イベントです。 カスタム・プロパティ Abort AllowUserResizing DbExOperation AlignFixedCells CellMaxLength DbLeaveResults AllowDelete AllowUpdate DbCompareCase DbConditions DbListFields DbListIndex 74 DbListSource DbResultID SetColWidth DbListTable DbLocks DbMaxRecords DbSkipRecords DbUpdateOption SetColNames SetRecordNumbers カスタム・イベント AfterColUpdate BeforeDelete AfterDelete BeforeUpdate AfterUpdate BtrieveError BeforeColUpdate Format カスタム・メソッド Reload 75 カスタム・プロパティ・リファレンス VBMan Controls for Btrieve のカスタム・プロパティについての解説です。 Abort 概要 Abort プロパティは VBMan ボタンの SetData イベントの中でデータベースに登 録するデータを検査して不都合を発見した場合、値を True にセットすることで、 データベースへの操作を中止できます。 また、リスト・ボックス等の Format イベント中で True に設定された場合には、リ ストへのデータの読み込みは中断されます。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、リスト、コンボ、拡張リスト、拡張コンボ、グリッド AlignFixedCells 概要 グリッドの固定セル上のテキストの右アライメントの有効/無効を設定します。設 定値は以下となります。 プロパティ値 False True 意味 固定セルのテキストの右アライメントを無効とする。固定セ ルのテキストは常に左アライメントとなる。 固定セルのアライメントは TextAlign プロパティの設定が有 効となる。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド 76 AllOpen 概要 VBMan データベース・コントロールが実行モードでロードされたときにこのプロ パティに値1が設定されていると、DDFDir プロパティで指定される DDF 定義に あるテーブルに関連する Btrieve ファイルをすべてオープンします。このプロパ ティに値 0 が指定されている場合は、各 VBMan コントロールが Btrieve ファイ ルにアクセスすることが必要となるイベントが発生した時に Btrieve ファイルをオ ープンします。 プロパティ・データ・タイプ 整数型 対象コントロール データベース AllowDelete 概要 グリッドに表示されているデータの削除を許可します。設定値は以下のようにな ります。 プロパティ値 False True 意味 削除は実行されません。 削除は実行されます。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド 注意 グリッドからデータを削除する場合は FixedRows プロパティに1以上を設定して マウスで削除する行を指定できるようにする必要があります。削除の操作手順 は以下のようになります。 ① ② 削除したい行の左固定セルをマウス左クリックで選択します。 削除キーを押します。 77 AllowUpdate 概要 グリッドに表示されているデータの更新を許可します。設定値は以下のようにな ります。 プロパティ値 False True 意味 更新は実行されません。 更新は実行されます。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド AllowUserResizing 概要 グリッド・セルのリサイズを指定します。設定値は以下のようになります。 プロパティ値 0 1 2 3 意味 リサイズしない カラム方向にリサイズ ロー方向にリサイズ 両方向にリサイズ プロパティ・データ・タイプ 正数型 対象コントロール グリッド AutoFirst 概要 このプロパティに True を設定すると、スクロール・バー・コントロールがロードさ 78 れた時に Btrieve の GET FIRST オペレーションを実行します。GET FIRST オ ペレーションの結果は VBMan エディット・コントロールなどに表示されます。VB Man リスト・ボックス、コンボ・ボックスを併用する場合は、フォームにコントロー ルを配置する順に依存してリスト・ボックスにデータが表示されるタイミングとス クロール・バーが GET FIRST オペレーションを実行するタイミングが前後するこ とがありますのでご注意ください。スクロールとデータ登録関連のプロパティをセ ットしたリスト・ボックス、コンボ・ボックスを併用する場合は、Visual Basic でした ら、Form の Activate イベントでリスト、スクロールの順で明示的に Refresh メソ ッドを呼び出すコードを記述してください。以下はサンプル・コードです。Static に 用意されているフラグは Activate イベントを初期化時の1回目だけに Refresh を実行するための識別に使っています。 Sub Form1_Activate Static bFirstFlag As Integer If bFirstFlag = False Then VBManListBox1.Refresh VBManVScroll1.Refresh bFirstFlag = True End If プロパティ・データ・タイプ 論理型 対象コントロール 水平スクロール・バー、垂直スクロール・バー BlobPath 概要 VBMan ピクチャー・コントロールでイメージ・データの存在するディスク上のパス を指定します。このプロパティを指定しない場合は VBMan ピクチャー・コントロ ールはカレント・ドライブのカレント・ディレクトリに存在するイメージ・ファイルを表 示します。 プロパティ・データ・タイプ 文字列型 対象コントロール ピクチャー・コントロール 79 CacheDDF 概要 このプロパティの値を True に設定した場合、同一プロセス内に同じ DDFDir プ ロパティを定義したデータ・ベース・コントロールが存在し、すでに DDF 情報を読 みこんでいる場合に限り、実際の DDF を再度読みこむのではなく、メモリ間のコ ピーによって DDF 情報を複製してパフォーマンスの向上を実現します。プロパ ティの値を False と設定した場合にはメモリでの DDF 複製は行われず、DDFDir プロパティで指定される DDF を読みこんで DDF 情報を設定します。 プロパティ・データ・タイプ 論理型 対象コントロール データ・ベース CellMaxLength 概要 AllowUpate プロパティを True に設定してデータの更新を可能としたグリッドでカ ラム単位で編集ウィンドウに入力できる最大バイト数を設定します。カラムはプ ロパティのインデックスとして指定します。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド 注意 設定する値は文字の最大バイト数で、文字数では無いことに注意してください。 漢字は 2 バイトとしてカウントされます。 サンプル・コード VBMGrid1.CellMaxLength(2) = 32 ‘ 32 バイトまで文字を入力可能 ClearControlData 80 概要 このプロパティの値を True に設定すると、DbOperation プロパティに Insert,Dele te,Update オペレーションを設定した場合に、ボタンのクリックにより Btrieve の 呼び出しが正常終了した後、VBMan エディットなどデータが表示されていたフィ ールドのデータを空白にします。データを空白にするコントロールは DbSource,D bTable プロパティが一致しているコントロールに限定されます。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン ConfirmMsg 概要 ConfirmMsg プロパティを設定すると、VBMan ボタンに設定されたオペレーション を Btrieve データベースに対して実行する前に確認メッセージが表示されます。 確認メッセージに No と答えた場合はデータベースに対するオペレーションは実 行されません。このプロパティは例えば、削除のオペレーションなどをボタンに 設定し、削除する前にユーザーに確認を促したい場合などに使います。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン DbCompareCase 概要 Btrieve の Extended 系を使用する VBMan コントロールでこのプロパティ値を Tr ue に設定すると、DbConditions プロパティで指定される検索条件を比較すると き英数字のケース・センスを指定できます。このプロパティの設定はそのまま Bt rieve の Extended 呼び出しのパラメータ・ブロックに設定されます。 プロパティ値 0 1 動作 大文字・小文字を区別 大文字・小文字を区別しない 81 プロパティ・データ・タイプ 整数型 対象コントロール 拡張リスト、拡張コンボ、グリッド DbConditions 概要 Btrieve の Extended 系を使用する VBMan コントロールにおいて、検索条件を指 定します。検索条件の指定は以下のような書式です。 フィールドの指定 フィールドは@をプリフィックスとして指定します。たとえば@1 はフィールド ID の 1を意味します。VBMan for Btrieve/VBX プロフェッショナル版ではフィールド I D しか指定できませんでしたが、VBMan Controls for Btrieve ではフィールド名 をそのまま指定できます。 比較演算子 比較演算子は以下の値を指定可能です。 = > < <> >= <= 等しい より大きい より小さい 等しくない より大きいか等しい より小さいか等しい 複合検索 複合検索をする場合は検索条件を & (AND) | (OR)で結合します。 比較対象 比較対象で即値を指定する場合、スペースがディリミッタになります。スペース が含まれる即値の場合はシングル・クゥォート、ダブル・クゥォート、スラッシュが 使えます。 例1 フィールド ID が 0 の項目が 100 から 1000 までの範囲 @0 >= 100 & @0 <= 1000 82 例2 フィールド名’会社名’が”TechKnowledge”または”System lab” @会社名 = "TechKnowledge" | @会社名 = "System lab" 例3 フィールド ID の 0 と 1 が同じ値または 1000 以上 @0 = @1 | @0 >= 1000 例4 フィールド ID が 2 の項目が”NetScape”,”Microsoft”以外 @2 <> 'Microsoft' & @2 <> 'NetScape' 注意 このプロパティの各トークンの間はシングル・バイトのスペースで区切ってくださ い。 複合検索においては、このプロパティの左から右への優先順位で評価されます。 括弧を使った優先順位づけなどはサポートされません。理由は、このプロパティ の指定どうりに Btrieve の検索パラメータ・ブロックを作成して Btrieve の Extend ed オペレーションをしているだけなので、Btrieve の Extended オペレーションに おいてもパラメータ・ブロックの検索条件に優先順位がない為です。 文字列を検索フィールドに指定する場合英数字に関して DbCompareCase プロ パティを「大文字・小文字の区別なし」に設定することで大文字、小文字を無視し た比較が可能です。2バイト文字の英数字にはこのオプションは無効です。 プロパティ・データ・タイプ 文字列型 対象コントロール 拡張リスト、拡張コンボ、グリッド DbDelimitChar 概要 拡張コンボ・ボックスで DbListFields プロパティに複数のフィールドを指定する場 合、フィールドの間を連結する文字を DbDelimitChar プロパティで指定します。 拡張コンボ・ボックスの Format イベントのパラメータとなる表示文字列もこのプ ロパティで指定する文字で連結されて渡されます。Format イベントでフィールド の文字を整形してコンボに表示する場合は、このプロパティにフィールドのデー タとして存在しない値を設定して、Format イベントでフィールドの値を区別します。 この文字にはバイナリ・ゼロを指定することはできません。プロパティに何も指 定しない場合は、デフォルトとしてスペース文字(0x20,Chr$(20))をフィールド間の 83 区切り文字として使用します。 Visual Basic のプロパティ・ウィンドウでは文字列データとして存在しない Tab のような文字を指定することはできませんから、以下のようにコードで指定する ことになります。 VBManExComboBox1.DbDelitChar = Chr$(9) VBManExComboBox1.Refresh プロパティ・データ・タイプ 文字列型 対象コントロール 拡張コンボ DbExOperation 概要 Btrieve の Extended オペレーションに対応した VBMan コントロールで、Extende d オペレーションの種類を指定します。リスト・ボックスやコンボ・ボックスで Sort プロパティを True に設定した場合は DbListIndex プロパティで設定されるキー に沿って Get Previous/Next Extended オペレーションしても、リストに挿入され る時にソートされてしまうので、注意してください。 プロパティ値 0 1 2 3 EXTENDED オペレーション Get Previous Extended Get Next Extended Step Previous Extended Step Next Extended プロパティ・データ・タイプ 整数型 対象コントロール 拡張リスト、拡張コンボ、グリッド DbField 概要 VBMan コントロールがデータを交換する、テーブルのフィールド名を指定します。 84 プロパティ設定ダイアログでは、DbSource,DbTable プロパティを選択した後でな ければ、選択肢は表示されません。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、チェック・ボックス、コンボ、拡張コンボ、拡張リスト、エディット、グリッド、 オプション・ボタン、リスト、ピクチャー、スクロール DbIndex 概要 Btrieve のオペレーションで GET PREVIOUS,GET NEXT などのインデックス・パ スを必要とするオペレーションを VBMan ボタンで実行する場合に指定します。V BMan スクロールでは、マウスのクリックなどで GET PREVIOUS,GET NEXT な どの Btieve オペレーション を発行しますが、このプロパティの指定によって、イ ンデックスのパスを指定します。このプロパティを指定しないと、インデックスの パスは DDF 定義の最初のインデックスとしてこれらのオペレーションを実行しま す。 インデックスの指定はVBMan for Btrieveバージョン 1.xではshort型の整数値で したが、このバージョンではインデックスの名前を指定します。同じフィールド名 で異なるインデックスや、セグメント・キーの先頭のフィールド名が別のインデッ クスでも存在し、複数のフィールド名が選択肢になる場合、DDFビルダーの「イ ンデックス名の追加」で識別可能なインデックス名 12を設定してください。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、スクロール DbLeaveResults 概要 Btrieve の Extended オペレーションでデータを取得する VBMan コントロールに おいて、検索の結果をメモリに保持したい場合にこのプロパティを True に設定 12 Scalable SQL のマニュアルでは Named Index と記述されます。Create Index という SQL 文で指定されるインデックスの名前です。 85 します。検索の結果は DbResultID プロパティに結果 ID が返され、この値を元に DbExGetFieldData メソッド/関数でデータを参照することができます。検索結果 が不要になったら、DbExFree メソッド/関数で結果を開放してください。結果を開 放しないで、プログラムを終了した場合は動作を保証できません。 プロパティ・データ・タイプ 論理型 対象コントロール 拡張リスト、拡張コンボ、グリッド DbListFields 概要 拡張リスト等複数のフィールドをリストするコントロールにおいて表示するフィー ルドを指定します。フィールドはカンマ区切りで複数を指定できます。このプロパ ティがプロパティ・ダイアログで指定可能になるためには、DbListSource,DbListT able プロパティをこのプロパティより先に指定していることが必要です。 バージョン 1.x ではカンマ区切りで整数値のフィールド ID を指定していましたが、 このバージョンでは、カンマ区切りでフィールドの名前を指定します。 カンマはシングル・バイトのカンマを指定することに注意してください。 以下は Visual Basic におけるサンプル・コードです。 Sub Command1_Click() VBManExListBox1.DbListFields = “コード,商品名,仕入先コード” VBManExListBox1.Refresh End Sub プロパティ・データ・タイプ 文字列型 対象コントロール 拡張リスト、拡張コンボ、グリッド DbListIndex 概要 Btrieve データをリストする VBMan コントロールでは、GET FIRST, GET NEXT の順または、GET FIRST, GET NEXT EXTENDED などの順で Btrieve オペレ ーションを発行します。これらのオペレーションはこの DbListIndex プロパティで 86 指定されたインデックス順にデータを読み込みます。 DbListIndex プロパティであるインデックス順にデータを読み込んだ場合、対象と なるコントロールの Sort プロパティを True に設定すると、コントロールにデータ が挿入される時点でソートされてしまい、このインデックス指定順にならない場 合がありますのでご注意ください。 プロパティは文字型で、コントロールのプロパティ・ダイアログで指定する場合は、 DbListSource,DbListTable プロパティが設定されていないと、選択肢がリストさ れないのでプロパティの設定順にご注意ください。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、スクロール DbListSource 概要 リスト系の VBMan コントロールが参照する VBMan データベース・コントロール の Name プロパティの値を指定します。このプロパティを設定する対象となる VB Man コントロールより先にフォームに VBMan データベース・コントロールが置か れていない場合には、プロパティ設定ダイアログで選択肢が表示されません。 実行時にはこのプロパティで指定される VBMan コントロールの DDFDir プロパ ティで指定されるテーブル、フィールド情報にしたがって、Btrieve データをリスト します。 プロパティ・データ・タイプ 文字列型 対象コントロール リスト、コンボ、拡張コンボ、拡張リスト、グリッド DbListTable 概要 リスト系の VBMan コントロールがデータをリストするテーブル名を指定します。 プロパティ設定ダイアログでは、DbListSource が先に設定されていないと、選択 肢が表示されません。 プロパティ・データ・タイプ 87 文字列型 対象コントロール リスト、コンボ、拡張コンボ、拡張リスト、グリッド DbLocks 概要 DbLocksプロパティはBtrieveデータベースに対するオペレーション実行時にか けるロックのタイプを指定します。シングル、マルチ、Wait,NoWaitを選択します。 13 プロパティ値 0 1 2 3 4 意味 ロックしない シングル・ウェイト シングル・ノーウェイト マルチ・ウェイト マルチ・ノーウェイト ロックを解除する場合はDbUnlockメソッドまたは関数を使用することでも可能で す。 14 プロパティ・データ・タイプ 整数型 対象コントロール ボタン、拡張コンボ、拡張リスト、グリッド DbMaxRecords 概要 Btrieve の Extended 系オペレーションでデータを取得する VBMan コントロール で、検索結果の最大レコード件数を設定します。Btrieve では結果はリニアなメ モリに返されるため、65,536 バイト以上を越えることができません。65,536 を Db ListFields プロパティで指定する抽出するフィールドの合計サイズで割った値以 13 DbAccess メソッド・関数でロックをかける場合は第一パラメータの値にロック・ バイアス値を加算します。 14 Single ロックなどの場合は別のレコードにロックするとそれ以前のロックは解除 されます。 88 上は設定できません。 プロパティ・データ・タイプ 整数型 対象コントロール 拡張コンボ、拡張リスト、グリッド DbOperation 概要 VBMan ボタンがクリックされたときに発行する Btrieve オペレーションを指定しま す。以下の値が指定可能です。 プロパティ値 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 BTRIEVE オペレーション Insert Update Delete GetEqual GetFirst GetLast GetNext GetPrevious GetGreater GetLessThan GetGreaterOrEqual GetLessThanOrEqual StepFirst StepLast StepNext StepPrevious プロパティ・データ・タイプ 整数型 対象コントロール ボタン 89 DbPhysicalPosition 概要 AllowDelete/AllowUpdate を True に設定したグリッドコントロールに表示されて いるレコードの Btrieve ファイル上の物理位置を保持します。物理位置を取得す る場合にはゼロ・オフセットのインデックスを指定して4バイトの物理位置を得る ことができます。Fixed セルにはデータは表示されませんから、グリッドに表示さ れている先頭のレコードの物理位置を得る場合には値0をプロパティ・インデッ クスとして指定します。取得した物理位置は DbGetDirect メソッドに指定してレコ ード全体を取得する等の利用が可能です。 プロパティ・データ・タイプ 長整数型 対象コントロール グリッド サンプル・コード Dim lPos As Long Dim rc As Integer lPos = VBManGrid1.DbPhysicalPositon(3) rc = VBManDb1.DbGetDirect(“TEST_TABLE”,lPos,”INDEX-1”) DbResultID 概要 Btrieve の Extended 系オペレーションでデータをリストする VBMan コントロール の DbLeaveResults プロパティを True に設定した場合には、このプロパティに結 果 ID が返されます。この ID を基に DbExGetFieldData メソッド/関数で検索結 果を得ることができます。検索結果が不要になったら、この ID を DbExFree メソ ッド/関数で開放してください。プログラムの終了時に開放されていない場合の 動作については保証できません。 プロパティ・データ・タイプ 文字列型 対象コントロール 拡張コンボ、拡張リスト、グリッド 90 DbSavePosition 概要 このプロパティを True に設定すると、検索結果の Btrieve レコード物理位置を It emData プロパティに保持します。この物理位置からレコード全体を取得するに は DbGetDirect メソッドまたはバージョン 1.x コンパチブル・関数を使います。以 下はコード例です。 Dim Position As Long Dim rc As Integer ‘ リストの先頭にあるレコードをカレント・レコードにする。 Position = VBManComboBox1.ItemData(0) rc = VBMan1.DbGetDirect(“CUSTOMER”,Position,”INDEX1”) If rc <> 0 Then MsgBox “Btrieve error “ & CStr(rc) Stop End If プロパティ・データ・タイプ 論理型 対象コントロール 拡張リスト・ボックス、拡張コンボ・ボックス DbSkipRecords 概要 BtrieveのExtended系オペレーションでデータを取得するVBManコントロールで、 DbConditionsプロパティで指定される検索条件に合致しないレコード件数を指定 します。このプロパティの値だけ検索結果に合致しないレコードを読み込んだ場 合、Btrieveはステータス 64 15を返します。このステータスを得た場合はこの値を 大きくしてください。0 を指定した場合はシステムで定義された最大値となります。 Btrieve 6.15 ではこの値は 4,095 です。 プロパティ・データ・タイプ 15 Filter Limit Reached 91 整数型 対象コントロール 拡張コンボ、拡張リスト、グリッド DbSource 概要 VBMan コントロールがデータを交換する VBMan データベース・コントロールの Name プロパティの値を指定します。このプロパティを設定する対象となる VBMa n コントロールより先にフォームに VBMan データベース・コントロールが置かれ ていない場合には、プロパティ設定ダイアログで選択肢が表示されません。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、チェック・ボックス、コンボ、拡張コンボ、拡張リスト、エディット、グリッド、 オプション・ボタン、リスト、ピクチャー、スクロール DbTable 概要 コントロールがデータを交換するテーブル名を指定します。プロパティの設定ダ イアログでは DbSource プロパティを選択した後でなければ、選択肢は表示され ません。 プロパティ・データ・タイプ 文字列型 対象コントロール ボタン、チェック・ボックス、コンボ、拡張コンボ、拡張リスト、エディット、グリッド、 オプション・ボタン、リスト、ピクチャー、スクロール DbTabStops 概要 拡張リスト・ボックスにおいて複数のフィールドを表示するように DbListFieds プ ロパティで指定した時、それぞれのフィールドの表示開始カラム位置をこのプロ パティで設定します。タブ位置はカンマで区切り、表示するフィールドの数だけ指 92 定します。 プロパティ・データ・タイプ 文字列型 対象コントロール 拡張リスト Visual Basic サンプル VBManExListBox1.DbTabStops = “1,20,30” VBManExListBox1.Refresh DbUpdateOption 概要 リスト・ボックスやコンボ・ボックスにデータを読み込むタイミングを設定します。 設定値は以下です。 プロパティ値 0 1 2 動作 データはリストされません。Refresh メソッドを発行してデータ をリストしてください。 初期化時。コントロールがロードされた時、またはこのコント ロールが参照しているデータベース・コントロールがロードさ れた時にデータをリストします。 フォーカス時にデータをリストします。大量のデータをリスト する場合、フォーカス時に設定すると、フィールドを移動する ときにパフォーマンスに問題がでる場合が考えられます。デ ータ量をよく見積もってからこの値を設定してください。 プロパティ・データ・タイプ 整数型 対象コントロール コンボ、リスト、拡張リスト、拡張コンボ DbValueFalse 93 概要 Btrieve データ・ベースのフィールドの値がこのプロパティで指定される値と同一 になった場合に、チェック・ボックスの場合は非チェック状態に、オプション・ボタ ンの場合は非選択状態になります。VBMan バージョン 1.x では論理値しか設定 できませんでしたが、VBMan Controls for Btrieve からは、フィールドの値を表 示形式にした値とこのプロパティに設定した値を比較するように変更されました。 プロパティ・データ・タイプ 文字列型 対象コントロール チェック・ボックス、オプション・ボタン DbValueIndetraminate 概要 Btrieveデータ・ベースのフィールドの値がこのプロパティで指定される値と同一 になった場合に、チェック・ボックスはグレー状態 16になります。 プロパティ・データ・タイプ 文字列型 対象コントロール チェック・ボックス DbValueTrue 概要 Btrieveデータ・ベースのフィールドの値がこのプロパティで指定される値と同一 になった場合に、チェック・ボックスの場合はチェック状態に、オプション・ボタン の場合は選択状態になります。VBManバージョン 1.xでは論理値しか設定でき ませんでしたが、VBMan Controls for Btrieveからは、フィールドの値を表示形 式 17にした値とこのプロパティに設定した値を比較するように変更されました。 プロパティ・データ・タイプ 16 Win32 API リファレンスの BM_SETCHECK メッセージの説明を参照してくださ い。WPARAM の値が 2 の場合にこの状態になります。 17 たとえば、バイナリの整数型をプリントできる文字(printable character)に変換 すること。 94 文字列型 対象コントロール チェック・ボックス、オプション・ボタン DDFDir 概要 VBMan データベース・コントロールのプロパティで DDF ファイルが存在するディ レクトリを指定します。指定するディレクトリには以下の3ファイルが存在してい ることが必要です。 FILE.DDF FIELD.DDF INDEX.DDF プロパティ・データ・タイプ 文字列型 対象コントロール データベース・コントロール DistName 概要 このプロパティは DDFDir プロパティをアプリケーション配布時に置き換える VB MAN.INI ファイルのセクション名を指定します。詳細は VBMan Controls for Btr ieve で作成したアプリケーションの配布の章を参照してください。 プロパティ・データ・タイプ 文字列型 対象コントロール データベース・コントロール Format 概要 Format プロパティは Visual Basic を開発言語としている場合のみ、設定可能な 95 プロパティです。このプロパティの書式は Visual Basic の Format$関数の整形 文字列が指定可能です。たとえば、数値型であれば、このプロパティには “###, ###,###”のような文字列を指定すると、数値入力された場合に、以下で説明す る FormatOption 設定のタイミングで”123,456”のように文字列が整形され、VBM an エディットに設定・表示されます。 VBMan エディットは関連するフィールドのデータ型が Date 型、Time 型の場合、 この Format プロパティに何も指定されていなければ、それぞれ”YYYY/MM/D D”,”HH:MM:SS”の形式でデータを整形します。 プロパティ・データ・タイプ 文字列型 対象コントロール エディット 注意 リスト・ボックス、コンボ・ボックス、拡張リスト・ボックス、拡張コンボ・ボックス、グ リッドには Format イベントが存在し、エディットには Format プロパティが存在し ます。 FormatOption 概要 Format プロパティを設定したときに、VBMan エディットの動作オプションを設定 します。以下の値がプロパティに設定可能です。 プロパティ値 0 1 2 3 オプション動作 オプションを設定しません。 文字単位でフォーマット。キーボードからの文字入力が発 生する度に Format プロパティの指定があれば、これにし たがって整形した文字列を VBMan エディットに設定しま す。 右揃え。Format 文字列で整形した文字列を MaxLength プ ロパティにしたがって、右揃えで表示します。また、VBMan エディットがフォーカスを受け取った場合、文字列の右にカ ーソルを設定します。かならず MaxLength プロパティに適 当な値を設定することが必要なことに注意してください。 右そろえ+文字単位フォーマット。このプロパティの値1と2 の動作をあわせておこないます。 プロパティ・データ・タイプ 96 整数型 対象コントロール エディット FormatString 概要 グリッドのカラム単位に整形文字列を指定します。整形文字列の形式は Visual Basic の Format 関数とコンパチブルです。ホスト言語が Visual Basic の場合の みこのプロパティの動作が保証されます。カラムの指定はプロパティのインデッ クスで0ベースになります。 プロパティ・データ・タイプ 文字列型配列 対象コントロール グリッド サンプル・コード With VBMGrid1 .FormatString(0) = “@@@@@@@@@@” .FormatString(1) = “###,###,###” .Refresh End With NumericMask 概要 VBManエディットコントロールに入力される文字を数値と特定の文字に限定しま す。マスクを通過する文字は数値 18と,.+-です。Formatプロパティに###,###,### のような数値を整形する文字列を設定する場合、このプロパティをTrueに設定 すると、ユーザーが誤って、英文字を入力したりすることを防止できます。 プロパティ・データ・タイプ 論理型 対象コントロール 18 シングル・バイトのみ。 97 エディット OpenMode 概要 VBManデータベース・コントロールに関連するBtrieveファイルのオープン・モード 19を指定します。オープン・モードとして指定可能なプロパティ値は以下です。 プロパティ値 0 1 2 3 4 5 6 オープン・モード ノーマル アクセルレーテッド リード・オンリー ベリファイ エクスクルーシブ シングル・エンジン・ファイル・シェア マルチ・エンジン・ファイル・シェア プロパティ・データ・タイプ 整数型 対象コントロール データベース・コントロール OwnerName 概要 VBMan データベース・コントロールに関連する Btrieve ファイルの オーナー名 を指定します。 プロパティ・データ・タイプ 文字列型 対象コントロール データベース・コントロール 19 Btrieve ファイルのオープン・モードの詳細は Btrieve プログラマーズ・マニュア ルの Open オペレーションにあります。 98 ReadOnly 概要 このプロパティを True に設定すると、VBMan エディット・コントロールを読み取り 専用に設定します。キーボードによる、文字は受け付けなくなります。 プロパティ・データ・タイプ 論理型 対象コントロール エディット SetColNames 概要 このプロパティの値を True に設定するとグリッドにデータを表示するときに、最 初の Fixed カラムに DbListFields プロパティで指定されたフィールド名を設定、 表示します。グリッドの FixedCols プロパティの値は1に設定してください。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド SetColWidth 概要 SetColNames プロパティとこのプロパティに値 True を設定した場合はグリッドに データ・ベースから読み、カラム名を Fixed セルに設定する時にセルの幅を自動 的に調整します。設定されるセルの幅はフィールド名の文字列がすべて表示さ れる幅となります。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド SetRecordNumber 99 概要 このプロパティの値を True に設定するとグリッドにデータを表示するときに、最 初の Fixed ローにレコード番号を設定、表示します。グリッドの FixedRows プロ パティの値は1に設定してください。 プロパティ・データ・タイプ 論理型 対象コントロール グリッド TextAlign 概要 グリッドのセルに表示される文字列のアライメントを指定します。セルの指定は 列単位での指定が可能です。列の指定はプロパティの配列で指定します。固定 セルに関しては AlignFixedCells プロパティを False に設定すると右つめの指定 は無効となります。 指定可能なプロパティ値は以下です。 プロパティ値 0 1 アライメント 左つめ 右つめ プロパティ・データ・タイプ 整数型 対象コントロール グリッド サンプル・コード Private Sub Form_Load With VBManGrid1 .TextAlign(1) = 1 ‘右つめ .ColWidth(1) = 1000 ‘セル幅を設定 .ImeMode(1) = 1 ‘IME モードを設定 .CellMaxLength(1) = 10 ‘入力の最大長を設定 .Col = 1 100 .Row = 0 .Text = “売上高” .Refresh End With End Sub ‘ データを読み込む UpperCase 概要 このプロパティを True に設定すると、VBMan エディット・コントロールに英数文 字を入力された場合にはアッパーケースに変換します。 プロパティ・データ・タイプ 論理型 対象コントロール エディット 101 カスタム・イベント・リファレンス VBMan Controls for Btrieve のカスタム・イベントについて解説します。 AfterColUpdate 書式 Object_AfterColUpdate() パラメータ なし 概要 グリッドコントロールでは AllowUpdate プロパティを True に設定した場合にセル が編集可能になります。編集可能となったセルからフォーカスが右矢印キーま たは Enter キーにて次のセルに移動するときに編集内容が Text プロパティとし て保持された後に当イベントが発生します。 対象コントロール グリッド AfterDelete 書式 Object_AfterDelete() パラメータ なし 概要 AllowDelete プロパティを True に設定したグリッドでレコード削除が実行された 後に発生するカスタム・イベントです。 対象コントロール グリッド AfterUpdate 102 書式 Object_AfterUpdate() パラメータ なし 概要 AllowUpdate プロパティを True に設定したグリッド・コントロールでレコードの Up date 終了後に発生するイベントです。 対象コントロール グリッド BeforeColUpdate 書式 Object_BeforeColUpdate( Cancel As Integer, ColValue As String ) パラメータ Cancel ColValue 0 以外の値をイベント無いで設定した場合にはカラムの変更を キャンセルします。 編集されたテキストの値です。編集前のテキストは Text プロパ ティに設定されています。 概要 AllowUpdate プロパティを True に設定したグリッド・コントロールではカラムの編 集が可能になります。当イベントはカラムが編集されて変更がグリッドの Text プ ロパティとして設定される前に発生します。アプリケーションはカラムの値を検査 して不正と判断した場合には Cancel パラメータに 0 以外の値をセットすることで 編集以前の値に戻すことが出来ます。 対象コントロール グリッド BeforeDelete 書式 Object_BeforeDelete( Cancel As Integer ) 103 パラメータ Cancel 0 以外の値をイベント無いで設定した場合にはレコードの Delet e をキャンセルします。 概要 対象コントロール グリッド BeforeUpdate 書式 Object_BeforeUpdate( Cancel As Integer ) パラメータ Cancel 0 以外の値をイベント無いで設定した場合にはレコードの Upda te をキャンセルします。 概要 AllowUpdate プロパティを True に設定したグリッド・コントロールでレコードの Up date を実行する直前に発生するイベントです。アプリケーションはイベント内で は変更されるデータの妥当性を検証して、データに不正が発見された場合はエ ラー・メッセージを表示して Calcel パラメータに 0 以外の値を設定することでレコ ードの Update 処理を無効にできます。 対象コントロール グリッド BtrieveError 書式 Object_BtrieveError( TableName As String, Status As Integer ) パラメータ TableName Status Btrieve 呼び出しの対象となったテーブル名。 Btrieve からのステータス。 104 概要 VBMan カスタム・コントロールが Btrieve を呼び出した結果、ステータスが 0 以 外の値が Btrieve から返された場合にこのイベントが発生します。 VBMan ボタンなどのオペレーション時に Btrieve からエラーが返されると、この イベントが発生した後にはデフォルトでメッセージ・ボックスが表示されます。こ のメッセージ・ボックスを表示したくない場合は、第 2 パラメータの値に 0 をセッ トします。以下は Visual Basic でのコード例です。 Sub BtrieveError( TableName As String, Status As Integer ) MsgBox “Btrieve エラーです “ & CStr(Status) Status = 0 End Sub 対象コントロール VBMan カスタム・コントロール Format 書式 Object_Format( LineData As String ) パラメータ LineData リスト・ボックス/コンボ・ボックスに表示する文字列 概要 リスト・ボックス等にデータを挿入する直前にこのイベントが発生します。 リスト・ボックス、コンボ・ボックスではこのイベントが発生した時にはパラメータと して渡されたフィールドを含むデータのカレント・レコードが存在します。したがっ て DbGetFieldData メソッドまたは関数を呼び出すことで、イベント・パラメータ Li neData 以外のフィールドの値を得ることができます。 拡張リスト、拡張コンボ、グリッドでは Format イベントが発生したときには、Btrie ve の Extended 系のオペレーションが終了しているので、カレント・レコードは最 後に取得したレコードになります。したがって、Format イベントで DbGetFieldDat a メソッドを使っても常に同じレコードのフィールドの値が返されるので、このメソ ッドを使う意味はありません。これらのコントロールでは DbListFields プロパティ に複数のフィールドが指定可能でそれらの値が LineData プロパティで渡される ので、他のフィールドを参照するのではなく、DbListFields プロパティに参照した いフィールドを記述することになります。これは同じテーブルに関することで、他 のテーブルを参照する場合は、LineData に他のテーブルのキーとなる値が存 105 在すれば、DbAccess メソッドを使って他のテーブルの値を GET EQUAL オペレ ーション等で参照することは可能です。 拡張リストではTabStopsプロパティを指定した場合、フィールドの間はタブ文字 20で連結されてFormatイベントに渡されます。 拡張コンボでは DbDelimitChar プロパティの値で指定した文字がフィールドの間 を連結して Format イベントに渡されます。 対象コントロール コンボ、リスト、拡張リスト、拡張コンボ、グリッド SetData 書式 Object_SetData() パラメータ 無し 概要 VBMan ボタンコントロールにおいて DbOperation プロパティにデータを登録する オペレーションがセットされている場合、ユーザーがボタンを押したときにこのイ ベントが発生します。このイベントでは DbSetFieldData メソッド/関数を使って、 フォームのコントロールにないテーブルのフィールドにデータをセットしたり、フォ ームのコントロールへの入力の正当性をチェックして不正であれば、メッセージ を表示して、Abort プロパティを True にセットすれば、ボタンを押したオペレーシ ョンを中断することもできます。イベントのタイミングはフォームにある関連するコ ントロールのデータを VBMan データ・ベース・コントロールのレコード・イメージ のバッファに転送した後で、Btrieve を呼び出す直前です。以下は Visual Basic によるサンプル・コードです。 ‘ ボタンの Name プロパティは InsertData となっている例です。 ‘ このボタンの DbSource プロパティは VBMan1 となっています。 Sub InsertData_SetData() If Val( ItemPrice.Text ) <= 0 Then MsgBox “商品の値段が入力されていません” InsertData.Abort = True Exit Sub End If ‘ 在庫個数を 0 にセット 20 アスキー・コード 9 106 VBMan1.DbSetFieldData(“商品”,”在庫”,”0”) End Sub VBMan ボタンのイベントとデータベースへのアクセスに関する順序を以下に示 します。 マウスによるボタン・クリック 確認メッセージ データベース・コントロールの データをファイル・バッファへ転送 Abort=True SetDataイベント発生 Btrieveオペレーション 異常終了? BtrieveErrorイベント発生 Clickイベント発生 対象コントロール ボタン 107 カスタム・メソッド・リファレンス コンパチビリティの章でも説明しましたが、VBMan Controls for Btrieve では、 従来のバージョン 1.x コンパチブル関数に加えて、VBMan データベース・コント ロールのメソッドとして、バージョン 1.x 関数相当のメソッドがデータ・ベース・コン トロールに追加されました。 Visual Basic 32bit 版では関数からメソッドへの変更に伴って、関数宣言は必要 なくなりましたが、メソッドのパラメータでの定数は Btrieve.bas ファイルに定義さ れていますのでこのファイルをプロジェクトに追加してメソッドをご利用ください。 DbAbortTransaction Object.DbAbortTransaction() As Integer 概要 トランザクションの中止を宣言します。 パラメータ なし。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外の正の値 Btrieve のステータス・コードが返されます。 DbAccess Object.DbAccess(BtrieveOpCode As Integer, TableName As String, KeyName As String) As Integer 概要 BtrieveOpCode で指定される Btrieve の機能を呼び出します。 パラメータ BtrieveOpCode Btrieve の機能番号を指定します。VBMan に添付される BTRIEVE.BAS ファイル に定義されています。このメソッドで使用できる Btrieve オペレーション・コードは 108 このファイルに定義されているものに限定されます。 TableName Btrieve オペレーションを発行するテーブルの名前を指定します。 KeyName Btrieve オペレーションに関連するキーの名前を指定します。テーブル定義上、 同じキーの名前が存在する場合は VBMan DDF ビルダーでキーに別名を設定 してください。 戻り値 正常終了ならば 0 が返ります。負の値は VBMan エラー・コード一覧を参照して ください。それ以外の正の値 Btrieve のステータス・コードです。 Visual Basicサンプル Dim rc% With VBManDb1. rc% = .DbSetFieldData(“従業員”,”社員番号”,"066217") rc% = .DbAccess(BTR_GET_EQUAL,”従業員”,”社員キー”) If rc% <> 0 Then MsgBox "Btrieveの呼び出しに失敗しました" + Str$(rc%) Exit Sub End If ‘読み込んだ結果をフォーム上のコントロールに転送 rc% = .DbTransferToControl(“従業員”) End With DbAccessByID Object.DbAccessByID(BtrieveOpCode As Integer, TableID As Integer, KeyID As Integer) As Integer 概要 BtrieveOpCode で指定される Btrieve の機能を呼び出します。テーブルとキー は整数値の ID を指定します。ID によるテーブル、フィールドの指定は VBMan バージョン 1.x での仕様と同様になりますので既存のバージョン 1.x コードを移 植する際に有効です。 109 パラメータ BtrieveOpCode Btrieve の機能番号を指定します。VBMan に添付される BTRIEVE.BAS ファイル に定義されています。このメソッドで使用できる Btrieve オペレーション・コードは このファイルに定義されているものに限定されます。 TableID Btrieve オペレーションを発行するテーブル ID を指定します。 KeyID Btrieve オペレーションに関連するキーID を指定します。キーID は DDF ビルダ ーで定義されたキーを識別する整数値です。ゼロ・オフセットで指定します。 戻り値 正常終了ならば 0 が返ります。負の値は VBMan エラー・コード一覧を参照して ください。それ以外の正の値 Btrieve のステータス・コードです。 サンプル・コード Const TID_EMP = 10 Const FID_EMP_NO = 1 Const KID_EMP_NO = 0 Dim rc% With VBManDb1. rc% = .DbSetFieldDataByID(TID_EMP,FID_EMP_NO,"066217") rc% = .DbAccessByID(BTR_GET_EQUAL,TID_EMP_NO,KID_EMP_NO) If rc% <> 0 Then MsgBox "Btrieveの呼び出しに失敗しました" + Str$(rc%) Exit Sub End If End With 110 DbBeginConCurTransaction Object.DbBeginConCurTransaction(LockBias As Integer) As Integer 概要 コンカレント・トランザクションの開始を宣言します。 パラメータ LockBias トランザクション・ロックを指定。値は 100,200,300,400,500 を指定可能。詳細は Btrieve プロクラマーズ・マニュアルを参照してください。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbBeginTransaction Object.DbBeginTransaction(LockBias As Integer) As Integer 概要 トランザクションの開始を宣言します。 パラメータ LockBias トランザクション・ロックを指定。値は 100,200,300,400 を指定可能。詳細は Btrie ve プロクラマーズ・マニュアルを参照してください。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbClearControlData Object.DbClearControlData(TableName As String) As Integer 概要 111 アクティブなフォームにあるコントロールのデータ 21を初期化します。Btrieveの データ入出力に使われるメモリ・バッファは初期化されません。こちらを初期化し たい場合は、DbClearFieldBufferメソッドを使ってください。 パラメータ TableName データを初期化したいコントロールが関連しているテーブル名 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbClearFieldBuffer Object.DbClearFieldBuffer( TableName As String ) As Integer 概要 指定したテーブルのデータ・バッファを初期化します。データ・バッファは Btrieve とのデータを交換するメモリ・エリアです。 パラメータ TableName テーブルの名前を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbClose Object.DbClose( TableName As String ) As Integer 概要 指定されるテーブルに関連する Btrieve ファイルをクローズします。このメソッド を呼び出す以前に Btrieve ファイルはオープンされている必要があります。 21 VBMan エディットのテキスト・プロパティを空にします。 112 パラメータ TableName テーブルの名前を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbCloseAll Object.DbCloseAll() As Integer 概要 DDF に定義された Btrieve ファイルをすべてクローズします。 パラメータ なし 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbCreate Object.DbCreate( TableName As String ) As Integer 概要 TableName で指定されるテーブルに関連する Btrieve ファイルを生成(Create)し ます。レコード長、インデックスの構成などは DDF の定義を参照します。このメ ソッドを呼び出す時には関連する Btrieve ファイルはクローズされていることが 必要です。サーバーにある Btrieve ファイルをマルチ・ユーザーで使用する場合 は一つのクライアントから DbClose しても、他でオープンしていれば、このメソッ ドは成功しません。すでに Btrieve ファイルが存在するような場合は上書きされ ますので注意してください。生成される Btrieve ファイルのページ・サイズは 4,09 6 となります。 パラメータ TableName 113 テーブルの名前を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 Visual Basic サンプル Dim rc As Integer rc = VBMan1.DbClose(“月次ファイル”) Kill “c:\data\月次.btr” rc = VBMan1.DbCreate(“月次ファイル”) If rc <> 0 Then MsgBox “Btrieve create ステータス “ & CStr(rc) Stop End If rc = VBMan1.DbOpen(“月次ファイル”) If rc <> 0 Then MsgBox “Btrieve open ステータス “ & CStr(rc) Stop End If DbEndTransaction Object.DbEndTransaction() As Integer 概要 トランザクションの終了を宣言します。 パラメータ なし。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbExAccess Object.DbExAccess( OpCode As Integer, TableName As String, SearchCondition As String, Fields As String, 114 IndexName As String, SkipRecords As Integer, MaxRecords As Integer, IgnoreCase As Integer, ResultID As Integer, NumberOfResults As Integer ) As Integer 概要 Btrieve の Extended 関数を実行します。 パラメータ TableName テーブル名を指定します。 OpCode Extended オペレーション・コードを指定します。指定できる値は BTRIEVE.BAS に宣言してある以下の値です。 BTR_GET_PREVIOUS_EXTENDE 37 D BTR_GET_NEXT_EXTENDED 36 BTR_STEP_PREVIOUS_EXTENDE 39 D BTR_STEP_NEXT_EXTENDED 38 SearchCond 検索条件文字列を指定します。拡張リスト・ボックス、拡張コンボ・ボックスの検 索条件文字列と同じ形式で指定します。 フィールドは@をプリフィックスとして比較式の左辺に指定します。@プリフィック スの後にはフィールド名を記述します。バージョン 1.x とのコンパチビリティのた めに、フィールド ID も指定できます。(例;フィールド ID の10は@10と指定す る)比較演算子は以下を指定します。 = > < <> >= <= 等しい より大きい より小さい 等しくない より大きいか等しい より小さいか等しい 複合検索をする場合は検索条件を&(AND)または|(OR)で結合します。比較 115 対象を即値で指定する場合はスペースがディリミッタになります。スペースが含 まれる即値を指定する場合はシングル・クゥオート、ダブル・クゥォート、スラッシ ュで文字列を囲みます。以下に検索文字列の例を示します。 @0 >= 100 & @1 <= 1000 @製品 = “VBMan” | @製品 = “Visual Basic” @2 <> /Microsoft/ & @2 <> /Borland/ Fields 検索結果として抽出するフィールドを指定します。フィールド名またはフィールド I D をカンマで区切ったものを指定します。フィールドは ID をカンマで区切った文 字列を指定します。フィールド ID は DDF ビルダーの表示値を 0 オフセットにし た値です。(例:10,22,34) IndexName GET NEXT/PREVIOUS EXTENDED オペレーションを実行する際のインデック スのパスを指定します。DbAccess 関数の第三パラメータと同じ形式で指定しま す。カレント・レコードが確立されていない場合、GET NEXT/PREVIOUS EXTEN DED オペレーションはエラーを返します。 SkipRecords 検索条件を満たさない場合にスキップするレコード数を指定します。 MaxRecords 検索結果の最大レコード件数を指定します。Btrieve では結果が 65,536 バイト をこえることができません。65,535 を Fields で指定した抽出するフィールドのデ ータ長の合計値で割った数以上は設定できません。 IgnoreCase 文字列フィールドを比較する場合、0 以外の値を指定すると英数字に関して大 文字、小文字の区別無く比較を実行します。2 バイト文字にはこのオプションは サポートされません。 ResultID 結果 ID が整数値で返されます。結果を取得するにはこの ID を指定して DbExG etFieldData,DbExGetPosition 関数を使用します。結果が不要になったらこの ID で DbExFree 関数を呼び出し資源を解放します。 NumberOfResults 検索結果件数が返されます。 戻り値 116 正常ならば0が返されます。正の整数値が返された場合は Btrieve からのエラ ー・コードです。負の整数値は VBMan エラー・コード一覧を参照してください。 また、エラー9,22,60,64,65 等が返った場合でも結果が存在する場合もあることに 注意してください。 以下にこのオペレーションで Btrieve から返されるエラー・コードを抜粋します。 03 06 07 08 09 22 60 61 62 64 65 82 FILE NOT OPEN Invalid Key Number Different Key Number Invalid Position End Of File Data Buffer Length Reject Count Reached Work Space Too Small Incorrect Descriptor Filter Limit Reached Incorrect Field Offset Lost Position 注意 カレント・レコードを検索の対象から除外したい場合は DbExSetMode メソッドで 指定します。 Visual Basic サンプル Dim rc As Integer Dim ResultID As Integer Dim NumOfRecords As Integer Dim Fields As String Dim SearchCond As String Dim a$,I As Integer SearchCond = “@売値 > 100 & @売値 < 200” Fields = “コード,売値,仕切値,仕入先” rc = DbExAccess( BTR_GET_NEXT_EXTENDED, 0, SearchCond, Fields, 0,12 7,100,0,ResultID,NumOfRecords ) If rc <> 9 & rc <> 0 & rc <> 60 Then MsgBox “Btrieve Extended Opeartion Error “ & Str$(rc) Stop End If ‘ 結果をリスト・ボックスに追加 117 For I = 0 To NumOfRecords -1 a$ = DbExGetFieldData(ResultID,0,I) a$ = a$ & “ “ & DbExGetFieldData(ResultID,1,I) ResultListBox.AddItem a$ Next I ‘ 結果を保持するメモリを解放 rc = DbExFree(ResultID) DbExFree Object.DbExFree( ResultID As Integer ) 概要 DbExAccess 関数によって返される結果に付随する資源を解放します。 パラメータ ResultID DbExAccess 関数の結果として返される結果 ID を指定します。 戻り値 なし。 注意 DbExAccess 関数の結果は検索結果件数と抽出するフィールドのサイズと件数 に比例してメモリを消費します。不要になった結果はこの関数を呼び出して解放 してください。 DbExGetFieldData Object.DbExGetFieldData( ResultID As Integer, FieldID As String, Location As Integer) As String 概要 DbExAccess メソッドの結果をフィールド単位で取得します。 パラメータ ResultID DbExAccess メソッドの結果として返される結果 ID を指定します。 118 FieldID フィールド名を文字列で指定します。 Location DbExAccess は検索結果として複数のレコード・イメージを返します。Location パラメータは所得する結果の位置を指定します。0 オフセットで結果位置を整数 で指定します。DbExAccess では検索結果件数を返しますがその値以上を指定 することはできません。 戻り値 パラメータ不正、メモリが不足して Visual Basic 文字列が作成できない場合にヌ ル文字列を返します。正常の場合はフィールドの値を文字列で返します。 DbExGetPosition Object.DbExGetPosition( ResultID As Integer, Location As Integer ) As Long 概要 DbExAccess 関数の結果を物理レコード位置単位で所得します。 パラメータ ResultID DbExAccess 関数の結果として返される結果 ID を指定します。 Location DbExAccess は検索結果として複数のレコード・イメージを返します。Location パラメータは所得する結果の位置を指定します。0 オフセットで結果位置を整数 で指定します。DbExAccess では検索結果件数を返しますがその値以上を指定 することはできません。 戻り値 Btrieve の物理位置が返されます。 注意 レコードの物理位置は Btrieve で管理される値で整数のシリアルな値ではあり ません。 DbExSetMode Object.DbExSetMode( NewMode As String ) As Integer 119 概要 DbExAccess メソッド/関数にてカレント・レコードを検索対象とするか除外するか を設定します。 パラメータ NewMode 検索対象にする場合はも列”UC”をパラメータとして設定します。カレント・レコー ドを検索対象としない場合は文字列”EG”をパラメータとして設定します。”UC” または “EG”以外の文字列を設定した場合は、DbExAccess メソッド/関数でエラ ーが発生します。 パラメータ値 UC EG 動作 カレント・レコードを検索対象に含める。 カレント・レコードを検索対象から除外する。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbFindPercentage Object.DbFindPercentage(TableName As String, KeyName As String, PhysicalPosition As Long, Percentage As Integer) As Integer 概要 レコード位置をパーセントで取得します。 パラメータ TableName テーブル名を指定します。 KeyName インデックス名を指定します。ヌルを指定した場合は物理位置で取得します。 PhysicalPosition パーセンテージを得る物理位置を指定します。このパラメータを有効にするため には、KeyName にヌル文字列を設定します。 Percentage 取得する位置。たとえば、80 パーセントの位置の場合、整数値で 8000 が返りま 120 す。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 03 06 07 08 09 22 41 43 82 FILE NOT OPEN Invalid key number Different key number Invalid positioning End of file Data buffer length Operation not allowed Invalid data record address Lost position 注意 Btrieve ファイルはバージョン 6.X 以降の形式でなければ使用できません。 DbGetByPercentage Object.DbGetByPercentage(TableName As String, KeyName As String, Percentage As Integer) As Integer 概要 パーセント指定でレコードを取得します。 パラメータ TableID テーブル名を指定します。 KeyName インデックス名を指定します。ヌル文字列を指定した場合は物理位置でレコード を取得します。 Percentage 取得する位置をパーセントで指定します。たとえば、80 パーセントの位置の場 合、8000 を指定します。 121 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 03 06 07 08 09 22 41 82 FILE NOT OPEN Invalid key number Different key number Invalid positioning End of file Data buffer length Operation not allowed Lost position 注意 Btrieve ファイル形はバージョン 6.x 以降であることが必要です。 DbGetDataSize Object.DbGetDataSize(TableName As String, FieldName As String) As Integer 概要 指定したフィールドのデータ・サイズ(バイト)を返します。 パラメータ TableName テーブル名を指定します。 FieldName フィールド名を指定します。 戻り値 正常ならばフィールドのデータ・サイズが返されます。負の値は VBMan エラー・ コード一覧を参照してください。 DbGetDataType Object.DbGetDataType( TableName As String, FieldName As String ) As Integer 122 概要 指定したフィールドの Btrieve データ型を返します。 パラメータ TableName テーブル名を指定します。 FieldName フィールド名を指定します。 戻り値 正常ならばフィールドのデータ型が返されます。負の値は VBMan エラー・コード 一覧を参照してください。 データ型 String Integer Float Date Time Decimal Money Logical Numeric Bfloat Lstring Zstring Note Lvar Unsinged Binary Auto increment Named Index リターン値 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 255 DbGetDirect Object.DbGetDirect(TableName As String, Pos As Long, NewIndexName As String) As Integer 123 概要 指定された物理レコード位置から、Btrive データを読み込みます。 パラメータ TableName テーブル名を指定します。 Pos 物理レコード位置を設定します。DbGetPosition 関数で取得する、4 バイトの整 数です。 NewIndexName この関数によって得られたレコードの新アクセス・パスをインデックス名で指定し ます。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbGetFieldData Object.DbGetFieldData(TableName As String, FieldName As String) As String 概要 データベースのフィールドの値を指定されたテーブルのデータ・バッファから文 字列データとして返します。 パラメータ TableName テーブル名を指定します。 FieldName フィールド名を指定します。 戻り値 フィールドの値が文字列で返されます。データベースのフィールドから文字列デ ータ型への変換はこの関数内部でおこなわれます。たとえば時間型は、"hh:m m:ss"の形で返されます。エラーが発生した場合は、ヌル文字列が返されます。 ヌル文字が返されるのは、テーブル名、フィールド名がこのメソッドの関連する D DF 定義に存在しない場合です。 124 DbGetFieldDataByID Object.DbGetFieldDataByID(TableID As Integer, FieldID As Integer) As String 概要 テーブル ID,フィールド ID で指定したデータベースのフィールドの値を文字列デ ータとして返します。 パラメータ TableID テーブル ID を指定します。 FieldID フィールド ID を指定します。 戻り値 フィールドの値が文字列で返されます。データベースのフィールドから文字列デ ータ型への変換はこの関数内部でおこなわれます。たとえば、時間型は、"hh:m m:ss"の形で返されます。エラーが発生した場合は、ヌル文字列が返されます。 ヌル文字が返されるのは、テーブル ID、フィールド ID がこのメソッドの関連する DDF 定義に存在しない場合です。 注意 VBMan for Btrieve/VBX バージョン 1.x でのテーブル指定、フィールド指定に 用いた整数値 ID を利用できますので、バージョン 1.x のコードを移植する際に 便利です。 また、Visual Basic 等の 32bit 言語では文字列型は UNICODE を使っており、当 メソッドのパラメータを文字列で指定する DbGetFieldData メソッドに比べて、内 部的に消費するメモリ量が少なくて済みます。内部ロジックでデータが保持され ている領域を検索する際にも整数値での指定をする当メソッドのほうが比較す るバイト数が少なくなりますのでパフォーマンスの向上が期待できます。 DbGetFieldName Object.DbGetFieldName(TableName As String, FieldID As Integer, FieldName As String) As Integer 概要 テーブル名,フィールド ID で指定したフィールド名を返します。 125 パラメータ TableName テーブル名を指定します。 FieldID フィールド ID を指定します。0 ベースで指定します。 FieldName フィールド名が返されます 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbGetIndexName Object.DbGetIndexName(TableName As String, IndexID As Integer, IndexName As String) As Integer 概要 インデックス ID で指定したインデックスが設定されているフィールド名を返しま す。 パラメータ TableName テーブル名を指定します。 IndexID インデックス ID を指定します。0 ベースで指定します。 IndexName インデックスが設定されているフィールド名が返されます 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 インデックス名(NamedIndex)はこのメソッドでは得ることができません。 DbGetModulePath 126 Object.DbGetModulePath( BtrieveModulePath As String ) As Integer 概要 VBMan が利用している Btrieve API モジュールへのパスを取得します。複数の バージョンの Btrieve が同じパソコンにインストールされている場合、どのモジュ ールを利用しているかを判別するために使います。 パラメータ BtrieveModulePath VBMan が利用しているモジュールへのパスとモジュール名が返されます。(例: c:\windows\system\wbtrv32.dll) 戻り値 正常ならば 0 が返されます。VBM_ERR_GENERIC(-1)が返される場合は Btrieve のモジュールを Win32 API でロードできない場合です。 注意 Btrieve 開発キット、Btrieve サーバーに添付されるクライアント・モジュール、VB Man に添付される Btrieve Workstation Engine 等複数の Btrieve エンジンがイ ンストールされていてそれぞれバージョンが異なる場合、サーバー上のファイル でもワーク・ステーション・エンジンでオープンされるなどの現象が発生します。 そのような場合、Btrieve サーバーのバージョンとクライアント・モジュールのバ ージョンを合致させる必要があります。当メソッドはそのような状況でのトラブ ル・シュートのために用意されました。 DbGetNumOfField Object.DbGetNumOfField( TableName As Stirng, NumOfField As Integer ) As Integer 概要 指定されたテーブル定義されているフィールド数を返します。 パラメータ TableName テーブル名を指定します。 NumOfField 定義されているフィールドの数が返されます。 戻り値 127 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbGetNumOfIndex Object.DbGetNumOfIndex ( TableName As Stirng, NumOfIndex As Integer ) As Integer 概要 指定されたテーブル定義されているインデックス数を返します。 パラメータ TableName テーブル名を指定します。 NumOfIndex 定義されているインデックスの数が返されます。セグメント・キーが含まれる場合 はその構成メンバーの数も加算された値が返されます。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbGetNumOfRecords Object.DbGetNumOfRecords( TableName As Stirng, NumOfRec As Long ) As Integer 概要 指定されたテーブルに存在するレコード数を返します。 パラメータ TableName テーブル名を指定します。 NumOfRec レコード数が返されます。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく 128 ださい。それ以外は Btrieve のステータス・コードが返されます。この関数内部で は Btrieve の stat オペレーションを発行します。 DbGetNumOfTable Object.DbGetNumOfTable(NumOfTable As Integer) As Integer 概要 現在読みこんでいる DDF に存在するテーブル数を返します。 パラメータ NumOfTable テーブル数が返ります。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbGetPosBlock Object.DbGetPosBlock( TableName As String, PosBlock(0 To 127) As Byte) As Integer 概要 指定されたテーブルに関連する Btrieve のポジション・ブロックを返します。 パラメータ TableName テーブル名を指定します。 PosBlock Btrieve の PosBlock を保持する Byte 型の配列を指定します。配列のサイズは Btrieve の仕様により 128 バイトを割振る必要があります。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 ポジション・ブロックは Btrieve ファイルがオープンされている時にのみ有効とな りますのでこのメソッドを呼び出す際には Btrieve ファイルがオープンされている 129 ことが必須となります。ポジション・ブロックは Btrieve が管理する領域なので通 常のアプリケーションではデータはセットできません。このメソッドで得られるポ ジション・ブロックを利用して Btrieve API を発行し、DDF に合致しないようなデ ータを登録した場合は他のコントロールやメソッドでのオペレーションに障害が 出る可能性があり、弊社では動作を保証できませんので、Btrieve のデータ型、 オペレーション、プログラミングを十分理解した上でのご利用をお願いします。 DbGetPosition Object.DbGetPosition(TableName As String) As Long 概要 指定されたテーブルの現在のレコードの物理位置を返します。 パラメータ TableName テーブル名を指定します。 戻り値 正常ならば物理レコード位置(4 バイト)が返されます。テーブル ID の誤り、デー タベースがオープンされていない場合は-1 が返されます。 注意 戻り値はシリアルな値ではなく、Btrieve で管理されるユニークな値です。整数 値でレコードを識別したい場合は、AutoIncrement 型のフィールドを利用します。 DbGetRecord Object.DbGetRecord( TableName As String, _ ArrayOfData() As String ) As Integer 概要 配列に現在のレコードの内容を取得します。大量の複数のフィールドを DbGetFi eldData メソッドの呼び出し得る方法に比較して実行のパフォーマンス向上が期 待できます。 パラメータ TableName テーブル名を指定します。 130 ArrayOfData String 型の配列を指定します。配列のインデックスはフィールド ID になります。 戻り値 正常終了の場合は0が返されます。負の値に関しては VBMan エラー・コード一 覧をご参照ください。 注意 配列のインデックスが DDF で定義されるフィールド数以内で定義してください。 フィールド ID はベースが0なのでデータを受け取る String 型の配列のベースも 0にすると最初のフィールドから順にデータを得ることができます。 サンプル・コード Private Sub GetFirstRecord() Dim rc As Integer, I As Integer Dim f(0 To 20) As String rc = Db1.DbAccess(BTR_GET_FIRST, “TEST1”, “PRIM_KEY”) If rc <> 0 Then MsgBox “エラー “ & CStr(rc) Exit Sub End If rc = Db1.DbGetRecord( “TEST1”, f ) If rc <> 0 Then MsgBox “エラー “ & CStr(rc) Exit Sub End If For I = Lbound(f) To Ubound(f) Debug.Print f(I), “ “; Next I Debug.Print ‘ 改行 End Sub DbGetRecordImage Object.DbGetRecordImage( TableName As String, ByteArray() As Byte ) As Integer 131 概要 指定されたテーブルのレコード・イメージをバイト型の配列に取得します。レコー ド・イメージとは Btrieve の GET 系のオペレーションで取得できるメモリの領域で す。 パラメータ TableName テーブル名を指定します。 ByteArray レコード・イメージを取得する Byte 型の配列を指定します。配列のローワー・バ ウンド値に関係なく、レコード・イメージはゼロ・オフセットから設定されます。配 列のサイズを決定する際にレコード長が必要になる場合は DbGetRecordLengt h メソッドで取得することが可能です。Delphi をホスト言語としてご利用の場合は OleVariant 型で varByte の配列を指定してください。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 サンプル・コード Dim rc As Integer Dim b(0 To 32) As Byte Rc = VBManDb1.DbGetRecordImage(“TEST1”,b) If rc <> 0 Then MsgBox “エラー “ & CStr(rc) Stop End If Debug.Print b(0),b(1),b(2) DbGetRecordLength Object.DbGetRecordLength( TableName As String, RecLen As Integer ) As Integer 概要 指定されたテーブルに関連する Btrieve ファイルのレコード長をバイト単位で返 します。 パラメータ 132 TableName テーブル名を指定します。 RecLen レコード長が返される 2 バイト長の整数を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 当メソッドが呼び出される時点で DDF が読みこまれている必要があります。 DbGetTableName Object.DbGetTableName( TableID As Integer, TableName As String )As Integer 概要 テーブル ID を指定してテーブル名を取得します。 パラメータ TableID テーブル ID を指定します。0ベースの値を指定します。 TableName テーブル名が返されます。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 当メソッドが呼び出される時点で DDF が読みこまれている必要があります。 DbIsNull Object.DbIsNull(TableName As String, FieldName As String ) As Boolean 概要 指定されたフィールドのヌル状態を返します。True 時にはフィールドはヌルです。 133 パラメータ TableName テーブル名を指定します。 FieldName フィールド名を指定します。 戻り値 フィールドのヌル状態を返します。指定したフィールドが”not null”制約がある場 合には False を返します。 DbIsOpen Object.DbIsOpen( TableName As String ) As Integer 概要 指定されたテーブルに関連する Btrieve ファイルのオープン状態を返します。 パラメータ TableName テーブル名を指定します。 戻り値 オープンしているなら値 1 が返されます。オープンしていない場合は 0 を返しま す。負の値は VBMan エラー・コード一覧を参照してください。 DbLoadDDF Object.DbLoadDDF() As Integer 概要 Pervasive.SQL ver 8 のセキュアーデーターベースにログインします。 パラメータ なし 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 134 注意 DbLogIn Object.DbLogIn(URI As String) As Integer 概要 Pervasive.SQL ver 8 のセキュアーデーターベースからログアウトします。 パラメータ データベース URI を文字列で指定します。詳細は Pervasive.SQL V8 マニュア ルをご参照ください。”btrv://localhost/mydb?pwd=hello&dbfile=test1.mkd”のよ うな形式になります。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 DbLogOut Object.DbLogOut() As Integer 概要 Pervasive.SQL ver 8 のセキュアーデーターベースからログアウトします。 パラメータ なし 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 注意 このメソッドを呼び出す前に DbLogIn メソッドでログインする必要があります。 DbOpen 135 Object.DbOpen( TableName As String ) As Integer 概要 指定されたテーブルに関連する Btrieve ファイルをオープンします。 パラメータ TableName テーブル名を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 注意 このメソッドを呼び出す時は Btrieve ファイルはクローズしている必要があります。 オープン・モードはこのメソッドが関連している VBMan データベース・コントロー ルの OpenMode プロパティによって指定されます。OwnerName についても同様 です。 DbOpenAll Object.DbOpenAll() As Integer 概要 DDF に定義された Btrieve ファイルをすべてオープン状態にします。 パラメータ なし。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 注意 オープン・モードはこのメソッドが関連している VBMan データベース・コントロー ルの OpenMode プロパティによって指定されます。OwnerName についても同様 です。DDF に定義されているファイルにすでにオープン中のものについては Op en オペレーションは実行されません。また、メソッドはオープン中のエラーを返 すこともありません。 136 DbReset Object.DbReset() As Integer 概要 Btrieve リセット・オペレーションを発行します。 パラメータ なし。 注意 リセット・オペレーションはオープン中のファイルをすべてクローズするのですで にアプリケーションでオープンしているファイルが存在する場合には注意が必要 です。リセット・オペレーションの詳細については Btrieve のマニュアルをご参照 ください。 DbSetFieldData Object.DbSetFieldData(TableName As String, FieldName As String, Data As String) As Integer 概要 Btrieve データベースへ登録するフィールドのデータを指定されたテーブルのデ ータ・バッファに設定します。 パラメータ TableName テーブル名を指定します。 FieldName フィールド名を指定します。 Data フィールドの値を文字列で指定します。文字列型データからデータベースのフィ ールドのデータ型への変換はこの関数内部でおこなわれます。Integer 型など のバイナリ型も文字列で指定します。Date 型は、"YY/MM/DD"または”YYYY/ MM/DD”の形で指定します。Time 型は”HH:MM:SS”の形で指定します。 戻り値 137 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 サンプル Dim rc% rc% = DbSetFieldData(“給与”,”欠勤”,"10") If rc%<> 0 then ' エラー処理 End If DbSetFieldDataByID Object.DbGetFieldDataByID(TableID As Integer, _ FieldID As Integer, _ Data As String) As Integer 概要 テーブル ID,フィールド ID で指定したデータベースのフィールドの値を文字列デ ータとして返します。 パラメータ TableID テーブル ID を指定します。 FieldID フィールド ID を指定します。 Data フィールドの値を文字列で指定します。文字列型データからデータベースのフィ ールドのデータ型への変換はこの関数内部でおこなわれます。Integer 型など のバイナリ型も文字列で指定します。Date 型は、"YY/MM/DD"または”YYYY/ MM/DD”の形で指定します。Time 型は”HH:MM:SS”の形で指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 VBMan for Btrieve/VBX バージョン 1.x でのテーブル指定、フィールド指定に 用いた整数値 ID を利用できますので、バージョン 1.x のコードを移植する際に 便利です。 また、Visual Basic 等の 32bit 言語では文字列型は UNICODE を使っており、当 メソッドのパラメータを文字列で指定する DbSetFieldData メソッドに比べて、内 138 部的に消費するメモリ量が少なくて済みます。内部ロジックでデータが保持され ている領域を検索する際にも整数値での指定をする当メソッドのほうが比較す るバイト数が少なくなりますのでパフォーマンスの向上が期待できます。 サンプル・コード Const TID_EMPLOY = 10 Const FID_EMPLOY_AGE = 2 Dim rc% rc% = DbSetFieldDataByID(TID_EMPLOY,FID_EMPLOY ,"34") If rc%<> 0 then ' エラー処理 End If DbSetFileName Object.DbSetFileName( TableName As Stirng, NewFileName As Stirng ) As Integer 概要 テーブルに関連する Btrieve ファイル名を指定します。DDF ビルダーによる定義 を実行時に変更します。ファイルがオープンされている状態では変更はできま せん。 パラメータ TableName テーブル名を指定します。 NewFileName Btrieve ファイル名を指定します。ドライブ、パスまで含めることができます。ドラ イブ、パスを省略した場合は DDF が存在するディレクトリにある Btrieve ファイ ルを扱います。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 DbSetLockBias Object.DbSetLockBias( BiasValue As Integer ) As Integer 139 概要 ロック・バイアス値を指定します。当メソッドで指定したロック・バイアス値はこの メソッド呼び出し移行の DbAccess/DbGetDirect メソッドに反映されます。DbAcc ess メソッドの第一パラメータにロック・バイアス値を毎回加算するコードを記述 する必要がなくなります。 パラメータ BiasValue ロック・バイアス値を指定します。以下の値が指定可能です。ロック動作の詳細 は Btrieve のマニュアル記載をご参照ください。 0 100 200 300 400 通常の状態 シングルウェイトロック シングルノーウェイトロック マルチウェイトロック マルチノーウェイトロック 戻り値 正常終了の場合は0が返されます。負の値に関しては VBMan エラー・コード一 覧をご参照ください。 サンプル・コード Dim rc As Integer Const TableName = “商品” Const IndexName = “商品コード” With VBMan rc = .DbSetLockBias(400) ‘ multi no wait lock If rc <> 0 Then Stop ‘全レコードをロックする。 rc = .DbAccess(BTR_GET_FIRST,”商品”,”商品コード”) Do If rc <> 0 Then Exit Do Rc = .DbAccess(BTR_GET_NEXT,”商品”,”商品コード”) Loop rc = .DbSetLockBias(0) Debug.Print rc ‘ バイアス解除 140 rc = .DbUnlock(“商品”,-2) Debug.Print rc End With ‘ロック解除 DbSetRecord Object.DbSetRecord( TableName As String, _ ArrayOfData() As String) As Integer 概要 配列設定したデータを現在レコードのバッファに設定します。大量の複数のフィ ールドを DbSetFieldData メソッドの呼び出し得る方法に比較して実行のパフォ ーマンス向上、コードの簡略化が期待できます。 パラメータ TableName テーブル名を指定します。 ArrayOfData String 型の配列を指定します。配列のインデックスはフィールド ID になります。 戻り値 正常終了の場合は0が返されます。負の値に関しては VBMan エラー・コード一 覧をご参照ください。 注意 配列のインデックスが DDF で定義されるフィールド数以内で定義してください。 フィールド ID はベースが0なので先頭フィールドからデータをセットしたい場合 は配列のベースも0に設定します。 サンプル・コード Private Sub InsertRecord() Dim rc As Integer, I As Integer Dim f(0 To 20) As String For I = Lbound(f) To Ubound(f) f(I) = Text(I).Text ‘ Text はコントロール配列 Next I rc = Db1.DbSetRecord(“TEST1”,f) 141 If rc <> 0 Then MsgBox “エラー “ & CStr(rc) Exit Sub End If rc = Db1.DbAccess(BTR_INSERT, “TEST1”, “PRIM_KEY”) If rc <> 0 Then MsgBox “エラー “ & CStr(rc) Exit Sub End If End Sub DbSetRecordImage Object.DbSetRecordImage(TableName As String, _ ByteArray() As Byte) As Integer 概要 Btrieve のレコード・イメージを Byte 型の配列で設定します。 パラメータ TableName レコード・イメージを設定する対象となるテーブル名を文字列で指定します。 ByteArray 設定するレコード・イメージ・データを保持する Byte 型の配列を指定します。配 列は 0 ベースでなくても配列のローワー・バウンドからゼロ・オフセットでレコー ド・イメージの内部データ・バッファに設定されます。Delphi の場合は OleVariant 型で varByte 型の配列を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 レコード・イメージは DDF で定義された Btrieve データ型に従って1バイトアライ メントで保持されています。Btrieve データ型については Btrieve のマニュアル等 を参照してください。レコード・イメージ・データを保持する配列の上限を設定す るにはレコード長が必要になる場合がありますが、レコード長は DbGetRecordL ength メソッドにて取得することが可能です。 142 サンプル・コード Dim rc As Integer Dim length As Integer Dim b(0 To 30) As Byte b(0) = 33 b(1) = 34 b(2) = 35 rc = VBManDb1.DbSetRecordImage("TEST1", b) Debug.Print rc, b(0), b(1), b(2) DbTransferFromControl Object.DbTransferFromControl(TableName As String) As Integer 概要 現在のフォームにあるデータベース・コントロールのデータを Btrieve とのデータ 入出力バッファに転送します。 パラメータ TableName テーブル名を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 注意 データ転送の対象となるコントロールは、エディット、コンボボックス、リスト、オプ ション・ボタン、チェック・ボックスです。 DbTransferToControl Object.DbTransferToControl(TableName As String) As Integer 概要 現在のレコードをフォームにある VBMan コントロール の該当フィールドに転送 します。 パラメータ 143 TableName テーブルの ID を整数値で指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のステータス・コードが返されます。 注意 データ転送の対象となるコントロールは、エディット、コンボボックス、リスト、オプ ション・ボタン、チェック・ボックスです。 DbUnlock Object.DbUnlock(TableName As String, UnlockType As Integer) As Integer 概要 指定されたテーブルのレコード・ロックを解除します。 パラメータ TabldName テーブル名を指定します。 UnlockType 以下の値が有効です。 アンロックタイプ 0 -1 -2 詳細 シングル・レコード・ロックを解除する マルチ・レコード・ロックされている現在のレコードのみ ロックを解除する。 マルチ・レコード・ロックのすべてを解除 戻り値 正常ならば 0 が返されます。テーブル ID の誤り、データベースがオープンされ ていない場合は-1 が返されます。 144 バージョン 1.X データ・アクセス関数 この章は、VBMan for Btrieve/VBX バージョン 1.x アプリケーションを VBMan Controls for Btrieve への移行を容易にするために提供されるバージョン 1.x デ ータ・アクセス関数についてのリファレンスです。 これらの関数の宣言はインストールディレクトリの下の samples ディレクトリにあ るファイル VBManV1.BAS に用意されています。Btrieve の仕様に依存している 部分が多いため、詳細は Btrieve プログラマーズ・マニュアルを参照してくださ い。 関数名 DbAbortTransaction DbAccess DbAttachControl DbBeginTransaction DbClearControlData DbClearFieldBuffer DbEndTransaction DbFindPercentage DbGetByPercentage DbGetDataSize DbGetDataType DbGetDirect DbGetFieldData DbGetFieldName DbGetPosition DbGetVersion DbSetFieldData DbSetFormattedString DbTransferFromControl DbTransferToControl 概要 トランザクションの中止 Btrieve機能の呼び出し バージョン1.xコンパチブル関数が参照するVBMa nデータベース・コントロールを設定します。バージ ョン1.xコンパチブル関数の中で一番最初に実行 すべき関数です。 トランザクションを開始 データベース・フィールド・コントロールのデーター を空にする。 データベースのバッファを初期化 トランザクションを終了 現在のレコード位置をパーセントで得る。 パーセント指定でレコードを取得する。 データ・サイズを得る データ型を得る 物理位置を指定して、レコードを得る。 フィールドのデータをデータベースのバッファから 得る フィールド名を得る。 現在レコードの物理位置を得る。 現在使用中のBtrieveのバージョンを得る。 フィールドのデータをデータベースのバッファにセ ット リスト・ボックス、コンボ・ボックスにフォーマットさ れた文字列を設定 データベース・フィールドの入力値をBtrieveのレコ ードに転送する。 Btrieveのデータ・バッファの内容をデータベース・ フィールド・コントロールに転送する。 145 DbUnlock レコード・ロックの解除 以下は Btrieve の Extended オペレーションに対応したデータベース・アクセス 関数です。 関数名 概要 DbExAccess ExtendedBtrieve オペレーションの実行 DbExGetFieldData DbExAccess 関数による検索結果をフィールド単 位で取得する。 DbExGetPosition DbExAccess 関数による検索結果の物理レコー ド位置を取得する。 DbExFree DbExAccess 関数の結果を解放する。 DbExSetFormattedString 拡 張 リ ス ト・ ボ ッ クス 、 拡 張 コンボ・ボックスの Format イベント内で整形された文字列を設定す る。 146 DbAbortTransaction DbAbortTransaction() As Integer 概要 トランザクションの中止を宣言します。 パラメータ なし。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のエラー・コードが返されます。 147 DbAccess DbAccess(BtrieveOpCode As Integer, TableID As Integer, KeyID As Integer) As Integer 概要 BtrieveOpCode で指定される Btrieve の機能を呼び出します。 パラメータ BtrieveOpCode Btrieve のオペレーション・コードを指定します。詳細は Btrieve プログラマーズ・ マニュアルを参照。VBMan に添付される BTRIEVE.BAS ファイルにも定義されて います。 TableID テーブルの ID を整数値で指定します。データベース・コントロールの DbTableID プロパティに設定する値を指定します。 KeyID Btrieve オペレーションに関連するキーの ID を指定します。ID は VBMan 日本 語 DDF ビルダーで指定した値から1を引いたものを指定します。Btrieve ではセ グメント・キーがある場合はキーの ID がシリアルではなくなりますが、VBMan で は日本語 DDF ビルダーで決定されるシリアルな値を指定します。 戻り値 正常終了ならば 0 が返ります。負の値は VBMan エラー・コード一覧を参照して ください。それ以外は Btrieve のステータス・コードです。 サンプル Dim rc% Const EMP_TABLE = 10 Const EMP_ID = 0 Const EMP_PRIMARY = 0 rc% = DbSetFieldData(EMP_TABLE,EMP_ID,"066217") rc% = DbAccess(BTR_GET_EQUAL,EMP_TABLE,EMP_PRIMARY) If rc% <> 0 Then MsgBox "Btrieveの呼び出しに失敗しました" + Str$(rc%) Exit Sub End If ‘読み込んだ結果をフォーム上のコントロールに転送 148 rc% = DbTransferToControl(EMP_TABLE) 149 DbAttachControl DbAttachControl( ControlName As String, FormName As String ) As Integer 概要 バージョン 1.x コンパチブル関数を使用可能な状態にします。 パラメータ ControlName この関数呼び出しが成功した以降に呼び出すバージョン 1.x コンパチブル関数 が参照する DDF ディレクトリが設定されている VBMan データベース・コントロー ルの Name プロパティの値を設定します。 FormName 上で説明した VBMan データベース・コントロールがおいてあるフォームの名前 を指定します。 戻り値 正常終了の場合0を返します。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 当関数の呼び出し正常終了後、VBMan データベース・コントロールがおいてあ るフォームをアンロードした場合、それ以降のバージョン 1.x コンパチブル関数 の呼び出しは動作が保証できません。この関数で指定した VBMan データベー ス・コントロールがアンロードされた以降にバージョン 1.x コンパチブル関数を使 う場合は、再度この関数を呼び出して別の現在参照可能な VBMan データベー ス・コントロールを指定してください。 150 DbBeginTransaction DbBeginTransaction(LockBias As Integer) As Integer 概要 トランザクションの開始を宣言します。 パラメータ LockBias トランザクション・ロックを指定。値は 100,200,300,400 を指定可能。詳細は Btrie ve プロクラマーズ・マニュアルを参照してください。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のエラー・コードが返されます。 注意 トランザクションを開始したら Btrieve ファイルをクローズする前にトランザクショ ンの終了または中断を実行してください。 151 DbClearControlData DbClearControlData(TableID As Integer) As Integer 概要 アクティブなフォームにあるコントロールのデータ 22を初期化します。Btrieveデ ータ入出力に使われるバッファは初期化されません。 パラメータ TableID データを初期化したいコントロールが関連しているテーブルの ID 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 コンパチビリティ バージョン 1.x からはパラメータとして TableID の指定が追加されました。 22 VBMan エディットのテキスト・プロパティを空にします。 152 DbClearFieldBuffer DbClearFieldBuffer( TableID As Integer ) As Integer 概要 指定したテーブルのデータ・バッファを初期化します。 パラメータ TableID テーブルの ID を整数値で指定します。データベース・コントロールの DbTable プ ロパティに設定する値を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 153 DbEndTransaction DbEndTransaction() As Integer 概要 トランザクションの終了を宣言します。 パラメータ なし。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のエラー・コードが返されます。 154 DbExAccess DbExAccess( OpCode As Integer, TableID As Integer, SearchCondtion As String, Fields As String, IndexID As Integer, SkipRecords As Integer, MaxRecords As Integer, IgnoreCase As Integer, ResultID As Integer, NumberOfResults As Integer ) As Integer 概要 Btrieve の Extended 関数を実行します。 パラメータ TableID テーブルの ID を整数値で指定します。 OpCode Extended オペレーション・コードを指定します。指定できる値は BTRIEVE.BAS または VBManV1.BAS に宣言してある以下の値です。 BTR_GET_PREVIOUS_EXTENDE 37 D BTR_GET_NEXT_EXTENDED 36 BTR_STEP_PREVIOUS_EXTENDE 39 D BTR_STEP_NEXT_EXTENDED 38 SearchCond 検索条件文字列を指定します。拡張リスト・ボックス、拡張コンボ・ボックスの検 索条件文字列と同じ形式で指定します。 フィールドは@をプリフィックスと比較式の左辺に指定します。(例;フィールド ID の 10 は@10 と指定する)比較演算子は以下を指定します。 = > < 等しい より大きい より小さい 155 <> >= <= 等しくない より大きいか等しい より小さいか等しい 複合検索をする場合は検索条件を&(AND)または|(OR)で結合します。比較 対象を即値で指定する場合はスペースがディリミッタになります。スペースが含 まれる即値を指定する場合はシングル・クゥオート、ダブル・クゥォート、スラッシ ュで文字列を囲みます。以下に検索文字列の例を示します。 @0 >= 100 & @1 <= 1000 @1 = “VBMan” | @1 = “Visual Basic” @2 <> /Microsoft/ & @2 <> /Borland/ Fields 検索結果として抽出するフィールドを指定します。フィールドは ID をカンマで区 切った文字列を指定します。フィールド ID は DDF ビルダーの表示値を 0 オフセ ットにした値です。(例:10,22,34) IndexID GET NEXT/PREVIOUS EXTENDED オペレーションを実行する際のインデック スのパスを指定します。DbAccess 関数の第三パラメータと同じ形式で指定しま す。カレント・レコードが確立されていない場合、GET NEXT/PREVIOUS EXTEN DED オペレーションはエラーを返します。 SkipRecords 検索条件を満たさない場合にスキップするレコード数を指定します。 MaxRecords 検索結果の最大レコード件数を指定します。Btrieve では結果が 65,536 バイト をこえることができません。65,535 を Fields で指定した抽出するフィールドのデ ータ長の合計値で割った数以上は設定できません。 IgnoreCase 文字列フィールドを比較する場合、0 以外の値を指定すると英数字に関して大 文字、小文字の区別無く比較を実行します。2 バイト文字にはこのオプションは サポートされません。 ResultID 結果 ID が整数値で返されます。結果を取得するにはこの ID を指定して DbExG etFieldData,DbExGetPosition 関数を使用します。結果が不要になったらこの ID で DbExFree 関数を呼び出し資源を解放します。 156 NumberOfResults 検索結果件数が返されます。 戻り値 正常ならば0が返されます。負の値は VBMan エラー・コード一覧を参照してくだ さい。これらのプログラミング・レベルのエラーは関数内部からメッセージ・ボック スで詳細が表示されます。整数値が返された場合は Btrieve からのエラー・コー ドです。また、エラー9,22,60,64,65 等が返った場合でも結果が存在する場合もあ ることに注意してください。 以下にこのオペレーションで Btrieve から返されるエラー・コードを抜粋します。 03 06 07 08 09 22 60 61 62 64 65 82 FILE NOT OPEN Invalid Key Number Different Key Number Invalid Position End Of File Data Buffer Length Reject Count Reached Work Space Too Small Incorrect Descriptor Filter Limit Reached Incorrect Field Offset Lost Position 注意 Btrieve ファイル形式は 6.x/7.x を使用してください。 サンプル Dim rc As Integer Dim ResultID As Integer Dim NumOfRecords As Integer Dim Fields As String Dim SearchCond As String Dim a$,I As Integer SearchCond = “@1 > 100 & @1 < 200” Fields = “0,1,2,3” rc = DbExAccess( BTR_GET_NEXT_EXTENDED, _ 0, _ SearchCond, _ 157 Fields, _ 0, _ 127, _ 100, _ 0, _ ResultID, _ NumOfRecords ) If rc <> 9 & rc <> 0 & rc <> 60 Then MsgBox “Btrieve Extended Opeartion Error “ & Str$(rc) Stop End If ‘ 結果をリスト・ボックスに表示 For I = 0 To NumOfRecords -1 a$ = DbExGetFieldData(ResultID,0,I) a$ = a$ & “ “ & DbExGetFieldData(ResultID,1,I) ResultListBox.AddItem a$ Next I ‘ 結果を保持するメモリを解放 rc = DbExFree(ResultID) 158 DbExFree DbExFree( ResultID As Integer ) As Integer 概要 DbExAccess 関数によって返される結果に付随する資源を解放します。 パラメータ ResultID DbExAccess 関数の結果として返される結果 ID を指定します。 戻り値 ResultID が不正の場合に-1 が返されます。正常に資源を解放できた場合は 0 を返します。 注意 DbExAccess 関数の結果は検索結果件数と抽出するフィールドのサイズと件数 に比例してメモリを消費します。不要になった結果はこの関数を呼び出してかな らず解放してください。 159 DbExGetFieldData DbExGetFieldData( ResultID As Integer, FieldID As Integer, Location As Integer) As String 概要 DbExAccess 関数の結果をフィールド単位で取得します。 パラメータ ResultID DbExAccess 関数の結果として返される結果 ID を指定します。 FieldID フィールドの値を整数値で指定します。データベース・コントロールの DbFieldID プロパティに設定する値を指定します。VBMan DDF ビルダーで表示されるのフ ィールド ID を 0 オフセットした値です。 Location DbExAccess は検索結果として複数のレコード・イメージを返します。Location パラメータは所得する結果の位置を指定します。0 オフセットで結果位置を整数 で指定します。DbExAccess では検索結果件数を返しますがその値以上を指定 することはできません。 戻り値 パラメータ不正、メモリが不足して Visual Basic 文字列が作成できない場合にヌ ル文字列を返します。正常の場合はフィールドの値を文字列で返します。 160 DbExGetPosition DbExGetPosition( ResultID As Integer, Location As Integer ) As Long 概要 DbExAccess 関数の結果を物理レコード位置単位で所得します。 パラメータ ResultID DbExAccess 関数の結果として返される結果 ID を指定します。 Location DbExAccess は検索結果として複数のレコード・イメージを返します。Location パラメータは所得する結果の位置を指定します。0 オフセットで結果位置を整数 で指定します。DbExAccess では検索結果件数を返しますがその値以上を指定 することはできません。 戻り値 Btrieve の物理位置が返されます。 注意 レコードの物理位置は Btrieve で管理される値で整数のシリアルな値ではあり ません。 161 DbExSetFormattedString DbExSetFormattedString( FldData As String ) As Integer 概要 拡張リスト・ボックス・コントロール、拡張コンボ・ボックス・コントロールの Format イベント内で整形された文字列を設定します。 パラメータ FldData 拡張リスト・ボックス・コントロール、拡張コンボ・ボックス・コントロールに挿入す る文字列を指定します。最大長 2,048 バイトまでの文字列を指定できます。 戻り値 正常ならば 0 が返ります。設定する文字列の長さが 2,048 バイト以上の場合 は-1 が返されます。 サンプル 以下はリスト・ボックスの Format イベントのサンプルです。Format イベントには DbTabStops プロパティを設定した場合、複数の項目データがタブ文字で区切ら れて渡されてきます。以下の例ではその先頭の項目だけをリスト・ボックスに表 示する例です。 Sub VBManExListBox1_Format( FldData As String ) Dim rc As Integer, Formatted$ As String Dim Pos As Integer Pos = Instr( FldData, chr$(9) ) If Pos > 0 Then Formatted$ = Left$(FldData,Pos - 1 ) rc = DbSetFormattedString( Formatted$ ) End If End Sub 162 DbFindPercentage DbFindPercentage(TableID As Integer, KeyNo As Integer, PhysicalPosition As Long, Percentage As Integer) As Integer 概要 レコード位置をパーセント指定で取得します。 パラメータ TableID テーブルの ID を整数値で指定します。 KeyNo キー番号を指定します。-1 を指定した場合は物理位置で取得します。 PhysicalPosition パーセンテージを得る物理位置を指定します。このパラメータを有効にするため には、KeyNo を-1 に設定します。 Percentage 取得する位置。たとえば、80 パーセントの位置の場合、整数値で 8000 が返りま す。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。エラーの場合は Btrieve のステータス・コードがそのまま返されます。 03 06 07 08 09 22 41 43 82 FILE NOT OPEN Invalid key number Different key number Invalid positioning End of file Data buffer length Operation not allowed Invalid data record address Lost position 注意 Btrieve ファイルはバージョン 6.X 以降の形式でなければ使用できません。 163 DbGetByPercentage DbGetByPercentage( TableID As Integer, KeyNo As Integer, Percentage As Integer) As Integer 概要 パーセント指定でレコードを取得します。 パラメータ TableID テーブルの ID を整数値で指定します。 KeyNo キー番号を指定します。-1 を指定した場合は物理位置でレコードを取得します。 Percentage 取得する位置をパーセントで指定します。たとえば、80 パーセントの位置の場 合、8000 を指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外の値は Btrieve のステータス・コードがそのまま返されます。 03 06 07 08 09 22 41 82 FILE NOT OPEN Invalid key number Different key number Invalid positioning End of file Data buffer length Operation not allowed Lost position 注意 Btrieve ファイルの形式はバージョン 6.x 以降であることが必要です。詳細は Btr ieve Programmer's Manual を参照してください。 164 DbGetDataSize DbGetDataSize(TableID As Integer, FieldID As Integer) As Integer 概要 指定したフィールドのデータ・サイズ(バイト)を返します。 パラメータ TableID テーブルの ID を整数値で指定します。 FieldID フィールドの ID を整数値で指定します。 戻り値 正常ならば指定されたフィールドのデータ・サイズが返されます。負の値は VBM an エラー・コード一覧を参照してください。 注意 なし。 165 DbGetDataType DbGetDataType(TableID As Integer, FieldID As Integer) As Integer 概要 指定したフィールドのデータ型を返します。 パラメータ TableID テーブルの ID を整数値で指定します。 FieldID フィールドの ID を整数値で指定します。 戻り値 正常ならば DDF で定義されるデータ型の ID が返されます。負の値は VBMan エラー・コード一覧を参照してください。 データ型 String Integer Float Date Time Decimal Money Logical Numeric BFloat LString ZString Note LVar Unsigned Binary Auto increment Named Index データ型 ID 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 255 注意 なし。 166 DbGetDirect DbGetDirect(TableID As Integer, Pos As Long, NewIndex As Integer) As Integer 概要 指定された物理レコード位置から、レコードを読み込みます。コントロールに入 力されたデータを Btrieve のレコードに転送します。 パラメータ TableID テーブルの ID を整数値で指定します。 Pos 物理レコード位置を設定します。DbGetPosition 関数で取得する、4 バイトの整 数です。 NewIndex この関数によって得られたレコードの新アクセス・パスをインデックス番号で指 定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外は Btrieve のエラー・コードが返されます。 167 DbGetFieldData DbGetFieldData(TableID As Integer, FieldID As Integer) As String 概要 データベースのフィールドの値を指定されたテーブルのデータ・バッファから文 字列データとして取得します。すべての Btrieve データ型は文字列型として返さ れます。バイナリ・データとして取得する場合は DbGetImage メソッドを使います。 パラメータ TableID テーブルの ID を整数値で指定します。データベース・コントロールの DbTableID プロパティに設定する値を指定します。 FieldID フィールドの ID を整数値で指定します。データベース・コントロールの DbFieldID プロパティに設定する値を指定します。 戻り値 フィールドの値が文字列で返されます。データベースのフィールドから文字列デ ータ型への変換はこの関数内部でおこなわれます。したがって、時間型などは、 "hh:mm:ss"の形で返されます。エラーが発生した場合は、ヌル文字列が返され ます。 テーブル ID,フィールド ID の範囲が正しくない場合はこの関数内部からメッセー ジ・ボックスで通知されます。 サンプル Dim rc%,EmpNo$ Const EMP_TABLE = 10 Const EMP_ID = 0 EmpNo$ = DbGetFieldData(EMP_TABLE,EMP_ID) 168 DbGetFieldName DbGetFieldName(TableID As Integer, FieldID As Integer) As String 概要 指定したフィールド ID に対応する DDF 定義のフィールド名を返します。 パラメータ TableID テーブルの ID を整数値で指定します。 FieldID フィールドの ID を整数値で指定します。 戻り値 正常ならばフィールド名が返されます。テーブル ID,フィールド ID が不正の場合 はヌル文字列が返ります。 169 DbGetPosition DbGetPosition(TableID As Integer) As Long 概要 指定されたテーブルの現在のレコードの物理位置を返します。 パラメータ TableID テーブルの ID を整数値で指定します。 戻り値 正常ならば物理レコード位置が返されます。テーブル ID の誤り、データベース がオープンされていない場合は-1 が返されます。 注意 戻り値はシリアルな値ではなく、Btrieve が管理するユニークな 4 バイトの整数 値です。 170 DbGetVersion DbGetVersion(Version As BtrieveVersion) As Integer 概要 現在使用中の Btrieve のバージョン情報を取得します。 パラメータ Version Btrieve バージョンの構造体。VBMANV1.BAS に宣言があります。 Type BtrieveVersion MajorVersion As Integer MinorVersion As Integer BtrieveType As String * 1 End Type たとえば、Btrieve for Windows バージョン 5.10a の WBTRCALL.DLL では Majo rVersion=5, MinorVersion=1, BtrieveType="W" となります。詳細は Btrieve プ ログラマーズ・マニュアルの GET VERSION オペレーションを参照してください。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。それ以外の値は Btrieve のステータス・コードがそのまま返されます。 注意 返される値は VBMan のバージョンではないことに注意してください。 171 DbSetFieldData DbSetFieldData(TableID As Integer, FieldID As Integer, Data As String) As Integer 概要 データベースへ登録するフィールドのデータを指定されたテーブルのデータ・バ ッファに設定します。 パラメータ TableID テーブルの ID を整数値で指定します。データベース・コントロールの DbTableID プロパティに設定する値を指定します。 FieldID フィールドの ID を整数値で指定します。データベース・コントロールの DbFieldID プロパティに設定する値を指定します。 Data フィールドの値を文字列で指定します。文字列からデータベースのフィールドの データ型への変換はこの関数内部でおこなわれます。したがって、日付け型な どは、"YYYY/MM/DD"などの形で指定します。 戻り値 正常ならば 0 が返ります。負の値は VBMan エラー・コード一覧を参照してくださ い。 サンプル Dim rc% Const EMP_TABLE = 10 Const EMP_ID = 0 rc% = DbSetFieldData(EMP_TABLE,EMP_ID,"100") If rc%<> 0 then Stop ' error process 172 DbSetFormattedString DbSetFormattedString(Formatted As String) As Integer 概要 リスト・ボックス、コンボ・ボックスのフォーマット・イベント・プロシージャで使用し ます。フォーマット・イベント発生時にはリスト・ボックスに挿入されるレコード・セ ットが DbGetFieldData 関数を通じて使用可能となります。プロパティで指定した カラムのデータだけでは不十分な場合、それらの形式を整えた文字列をこの関 数で指定します。 パラメータ Formatted フォーマットした文字列。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 フォーマット・イベント・プロシージャの中でのみ使用してください。それ以外の使 用は結果を保証できません。ヌル文字列が指定された場合にはリスト・ボックス またはコンボ・ボックスへの挿入をおこないません。 サンプル Sub VBManListBox1_Format( FieldData As String ) Dim fmt$,rc As Integer If Val(FieldData) < 100 Then fmt$ = FieldData & “ “ & DbGetFieldData(0,1) rc = DbSetFormattedString(fmt$) Else VBManListBox1.Abort = True End If End Sub 173 DbTransferFromControl DbTransferFromControl(TableID As Integer) As Integer 概要 現在のフォームにあるデータベース・コントロールのデータを Btrieve の入出力 バッファに転送します。 パラメータ TableID テーブルの ID を整数値で指定します。 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 データ転送の対象となるコントロールは、エディット、コンボボックス、リスト、オプ ション・ボタン、チェック・ボックスです。 174 DbTransferToControl DbTransferToControl(TableID As Integer) As Integer 概要 現在のレコードをフォームにあるデータベース・コントロールのデータとして転送 します。 パラメータ TableID テーブルの ID を整数値で指定します。 戻り値 正常ならば 0 が返されます。テーブル ID の誤り、データベースがオープンされ ていない場合は-1 が返されます。フォームがアクティブでない場合は-2 を返し ます。 注意 データ転送の対象となるコントロールは、エディット、コンボボックス、リスト、オプ ション・ボタン、チェック・ボックスです。 175 DbUnlock DbUnlock(TableID As Integer,UnlockType As Integer) As Integer 概要 指定されたテーブルのレコード・ロックを解除します。 パラメータ TabldID テーブルの ID を整数値で指定します。 UnlockType 以下の値を指定してください。 UNLOCKTYP 詳細 E 0 シングル・レコード・ロックを解除する -1 マルチ・レコード・ロックされているBtrieveファイルの現在のレコ ードのみロックを解除する。 -2 マルチ・レコード・ロックのすべてを解除 戻り値 正常ならば 0 が返されます。負の値は VBMan エラー・コード一覧を参照してく ださい。 注意 なし。 176 作成したアプリケーションの配布 VBMan Controls for Btrieve では、DDF ディレクトリがカスタム・コントロールの DDFDir プロパティに設定されます。このプロパティには通常ドライブとパス名が 記述されることが多く、作成したアプリケーションを配布する場合は動作環境に おいて DDF が置かれるパスを DDFDir プロパティで指定される値以外に変更す る必要が生じると思われます。この章では、DDFDir プロパティを実行時に、VB MAN.INI ファイルから指定する方法を解説します。 DistName プロパティと VBMan.INI ファイル VBMan データベース・コントロールには DistName プロパティがあります。このプ ロパティには VBMan.INI ファイルの中に DDF へのパスが記述してあるセクショ ン名を指定できます。アプリケーションの名前や EXE ファイルの名前などシステ ムでユニークに識別できる値を設定します。VBMAN.INI ファイルの DistName プ ロパティで指定されるセクションの中には VBMan データベース・コントロールの Name プロパティの値に置換する DDF ディレクトリを記述します。以下は VBMA N.INI ファイルのサンプルです。 [StockControlApp] ItemDb = c:\StockSys\DDF Tranaction = c:\StockSys\DDF [SalesReport] SalesTrn = z:\Sales\DDF SalesPerson = z:\Sales\DDF SalesTmp = z:\Sales\Tmp 上の例では、StockControlApp には2つの VBMan データベース・コントロール があり Name プロパティはそれぞれ ItemDb,Transaction が設定されています。 配布時には c:\StockSys\DDF というディレクトリを DDF ディレクトリとして参照し ます。 [SalesReport]には3つの VBMan データベース・コントロールがあり、Name プロ パティはそれぞれ SalesTrn,SalesPerson,SalesTmp です。参照する DDF ディレ クトリは最初の2つが z:\Sales\DDF で SalesTmp という名前のコントロールは z: \Sales\Tmp ディレクトリから DDF を読み込みます。 以上からわかるように、複数の環境でDDFの存在するドライブ、パスが変更され る可能性のあるアプリケーションを作成する場合は、DistNameプロパティを設定 することが必須で参照するDDFのディレクトリが異なる場合はVBManデータベー ス・コントロールのNameプロパティの値をシステムでユニークにすることが必要 177 です。この場合のシステムとはVisual Basicでは1つのプロジェクトになります。 23 プロファイルへの書き込み VBMan.INI ファイルへの書き込み方法としては、単にテキスト・エディターで編集 する方法もありますが、インストーラーを作成する場合は WritePrivateProfileStri ng という Windows API を使うのが一般的です。Visual Basic 4.0 では SaveSett ins ステートメントが用意されていますが、32bit 環境ではレジストリに登録される ため Windows API を直接呼び出すことが必要です。以下は Visual Basic 4.0 3 2bit でのプロファイルへの書き込みの例です。 ‘ モジュール・ファイルで宣言してください。 Declare Function WritePrivateProfileString Lib "kernel32" _ Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpString As Any, _ ByVal lpFileName As String) As Long ‘以下は書き込みサンプル Dim rc As Long Dim DDFDir As String DDFDir = “C:\StockSys\DDF” rc = WritePrivateProfileString( “StockControlApp”, _ “ItemDB”, _ DDFDir, _ “vbman.ini” ) この結果 VBMAN.INI ファイルは以下になります。 [StockControlApp] ItemDB = c:\StockSys\DDF 注意 VBMan データベース・コントロールは DistName プロパティが設定されかつ、実 行時であれば、DDFDir プロパティに入れ替えのために VBMan.INI ファイルを参 照します。VBMan.INI ファイルに VBMan データベース・コントロールの Name プ ロパティと同じエントリがあれば、必ず DDFDir プロパティの値は置換されてしま います。デバッグ中などこの DistName プロパティを指定している場合はどちら 23 EXE ファイル単位。 178 の DDF が参照されているか、注意してデバッグしてください。 179 DDF ビルダー・リファレンス Btrieve 6.15 等 DDF 編集環境をお持ちでないお客様用に当製品には VBMan D DF ビルダーが添付されています。Pervasive.SQL 2000i をお使いのお客様は Per vasive Control Center でデータベースの定義、データの入力と共に DDF の編集 が可能になっておりますので、Control Center をお使いください。VBMan DDF ビ ルダーは Btrieve 6.1X 当時に定義されていた Btrieve データ型のみサポートとな ります。 DDF ビルダーの起動 VBMan メニューから DDF ビルダーを選択します。以下のような初期画面が表示さ れます。メニューは初期状態になります。 新規 DDF の作成 DDF ビルダー起動後の「ファイル」メニューの下の「新規 DDF の作成」メニューを 180 選択します。以下のウィンドウが表示されますから、新規に DDF を作成するディレ クトリを指定し「開く」ボタンを押します。以下のテーブル情報入力ダイアログが表 示されます。テーブル名と Btrieve ファイル名を指定して OK ボタンを押します。Bt rieve ファイル名にはドライブ名やサーバー名にパスを含めて記述することも可能 です。単にファイル名を設定した場合には DDF と同じディレクトリに Btrieve ファイ ルが存在することになります。 テーブル情報を入力するとメニューが切り替わり、テーブルを定義できる DDF 編 集モードのメニューになります。以下は初期画面の様子です。 181 フィールドの定義 DDF 編集モードのメニューで「フィールド」メニューから「追加」を選択するとフィー ルド追加のダイアログが以下のように表示されます。 フィールド名を入力してデータ型、データ・サイズを入力します。上の例では String 型のフィールドを定義しているので、小数点以下桁数の入力はディセーブルにな って入力できない状態になっています。入力項目が正しいことを確認したら「登録 ボタン」を押します。 フィールド設定の入力がフィールド・グリッドに表示されます。以下は例です。 182 インデックスの定義 DDF 編集モードのメニュー「インデックス」から追加を選択します。以下のような画 面でインデックスの定義をします。 183 フィールドを選択して、ソート・オーダー、キータイプを選択して OK ボタンを押しま す。「データ変換モード」でセグメントがチェックされている場合にはセグメント・メン バーのリストにメンバーとして表示されるだけで、このダイアログは閉じません。セ グメントのチェックが無いフィールドが定義されて OK ボタンを押すと、すべてのセ グメント・メンバーが定義された状態になり、このダイアログはクローズします。 キーの定義はテーブル・ウィンドウのインデックス・グリッドに表示されます。 セグメント・キーを定義する場合にはキー・タイプ、ソート・オーダーがすべてのセ グメント・キーのメンバーについて同じでないと Btrieve ファイルの生成時にエラー が発生しますのでご注意ください。 184 セグメント・キーはセグメントのフラグがオフになった項目までが1セグメントとなり ます。上の例では ID と ITEMNAME で1つのセグメント・キーが定義されています。 既存 DDF の編集 既存 DDF を編集する場合は、DDF ビルダー起動画面の「ファイル」メニューから 「既存 DDF のオープン」を選択します。ファイルを選択するダイアログが表示され ますので、FILE.DDF, FIELD.DDF, INDEX.DDF の存在するディレクトリを指定しま す。DDF ビルダーの設定を「データ移行モード」とした場合には DDF で指定される ディレクトリにデータ移行する Btrieve データ・ファイルが必要です。この時点で Bt rieve データと DDF の定義が合致しない場合には DDF ビルダーは正常にデータ 変換できなくなるのでご注意ください。 データ変換モードの動作について システム・オプション・メニューから「Btrieve データ変換モード」を選択すると、既存 の Btrieve ファイルに対して追加、削除されたフィールド、インデックスについては DDF の形式の変更と共に実際の Btrieve データにもフィールドやが追加・削除さ れ、DDF との整合性が保たれるように動作します。データ変換モードで動作してい る場合にはフィールドの修正、およびインデックスの修正メニューはディセーブル 185 状態となり利用できない仕様です。既存のデータ・ファイルのフィールドやインデッ クスを修正したい場合は、一旦削除してからフィールドやインデックスを追加する ことになります。 また、重複を許さないインデックスを追加する際には既存のデータに重複が存在 するとエラーになってインデックスが生成できなくなりますのでご注意ください。 テーブルの搬入・搬出 DDF 編集モードでは「ファイル」メニューから「テーブルの搬入」、「テーブルの搬 出」が実行できます。テーブル定義を別の DDF にコピーする場合や一部定義が 異なるが大半の項目が同じテーブルを定義する場合に便利です。搬出したテーブ ルを同じ DDF に搬入する場合は DDF に存在しないテーブル名を設定する必要 があります。搬出されたファイルのテーブル名を変更する場合は搬出したファイル を notepad 等のエディターで[TableName]の次の行を編集します。(2行目)Btriev e ファイル名は[TableLocation]の次の行にあります。(4行目)編集したファイルは 再度、搬入して編集します。 dbMagic データ辞書を搬入 VBMan DDFビルダーのオプションメニューから「dbMagicテーブルの搬入」を選択 することで、dbMagic バージョン 4.26,4.30,7.00のデータ辞書情報をDDFに搬入す ることが可能です。dbMagicのデータ辞書をDDFに搬入する手順は以下のとうりで す。 ① dbMagicでデータ辞書出力を実行します。このとき、dbMagicの出力オプション の「モード」で、「I」を選択します。このモード以外で出力された場合の動作は 保証されませんので、ご注意ください。 ② VBMan DDFビルダーを起動して、DDF編集の状態にします。新規の場合は 最初に適当なテーブル名、Btrieveファイル名を入力して空のテーブルが1つ だけの状態に、オプション・メニューから「dbMagicテーブル搬入」を選択し、搬 入が完了したら、最初のテーブルをファイル・メニューの下からテーブルの削 除を選択し、テーブルを削除します。既存のDDFをオープンした場合にはこ のDDFにdbMagicデータ辞書の定義を追加することになります。 ③ メニューから「dbMagicファイル搬入」を選択すると、ファイル指定ダイアログ が表示されます。先程1で出力したデータ辞書の定義ファイルを指定します。 186 ④ 搬入が完了すると、dbMagicのBtrieveファイル毎にDDFの編集ウィンドウが 表示されます。複数定義を搬入する場合、途中でエラーとなる定義が存在し た場合、それ以降の定義の搬入はされませんので、注意してください。 注意事項 ① dbMagicのデータ辞書でメモ型(M)のフィールドはDDFのString型に変換しま す。VBManでは可変長のレコードはDDFの最後に1フィールドのみサポートと なりますから、複数のメモ型の存在するdbMagicのデータ辞書定義、メモ型の フィールドが最後にないもの等は扱うことができません。 ② dbMagicのデータ辞書で日付け型(D)のフィールドはDDFのInteger型4バイト に変換します。これは、dbMagicがBtrieveのDate型を使っていないことが原 因です。dbMagicでは西暦1年1月1日を1として起算した数値を日付け型と して使っていますので、お客様のアプリケーションでデータを変換するなどの 作業が必要になります。 ③ dbMagicのデータ辞書定義でBtrieveファイル名が指定されないものはVBMan DDFビルダーでは、取り込めません。(出力ファイルのFILEがある行にNAM E=の記述がないもの)データ辞書定義でdbMagicの論理パスを指定して作成 されたBtrieveファイルはVBMan DDFビルダーのオプション・メニューから「Bt rieveファイル情報」で論理パス情報を修正することが可能です。 Visual Basic 用フォームの生成 DDF編集モードのメニューで「オプション」からフォーム生成を選択することでVisual Basic用のフォームを生成することが可能です。Visual Basicで簡単なマスター登 録ができるフォームを生成することが可能です。画面の解像度は無視されるので フィールドが多い場合はアプリケーションが動作するパソコンの解像度にあわせて フォームを編集してください。生成されたフォームはVisual Basicでプロジェクトに 追加して利用します。 フィールド ID リストの生成 Visual Basic でアプリケーションを作成する場合、VBMan のメソッドのパラメータを Const で指定したい場合はこの機能を利用してフィールド ID のリストを生成してそ れを Visual Basic のプロジェクトに追加します。 187 メソッドのパラメータとしてテーブル名やフィールド名を文字列で指定する場合に はフィールドが追加になってもコードの変更は必要無いですが、VBMan バージョ ン 1.x 関数や ID 指定のメソッド(DbGetFieldDataByID 等)を使っている場合、ID を 直接指定しているとフィールドの挿入によって ID が変わるとコードの変更も必要 になる場合があります。関数やメソッドのパラメータをシンボルで指定しておけば、 フィールドの挿入で ID が変わっても、Const 定義部分だけを変更するだけで関数 やメソッドの呼び出しコードを変更する必要はなくなります。 以下は ID リストの例です。 'テーブル ID for Global Const 'フィールド ID Global Const Global Const Global Const 'インデックス ID Global Const Global Const TEST1.DAT TID_TEST1 = 0 FID_ID = 0 FID_ITEMNAME = 1 FID_PRICE = 2 KID_ID = 0 KID_ITEMNAME = 1 以下は上の ID リストでの Visual Basic コード例です。 Dim rc As Integer With VBManDb1 Call .DbSetFieldDataByID(TID_TEST1,FID_ID,”101”) Call .DbSetFieldDataByID(TID_TEST1,FID_ID,”商品名”) Call .DbSetFieldDataByID(TID_TEST1,FID_PRICE,”1200”) rc = .DbAccessByID(BTR_INSERT,TID_TEST1,KID_ID) If rc <> 0 Then MsgBox CStr(rc) End If End With システム・オプションについて 以下はシステム・オプションの設定の最初のページです。 188 設定項目についての説明は以下になります。 項目 フィールド名入力時の IME オン フィールド名英数字の Upper 変換 ゼロ・オフセット表示 DDF 読込時に ID のリナンバー 概要 フィールド情報設定ダイアログでフォール ド名の入力時に IME がローマ時かな入 力に設定されます。 DDF では英数字はケースは無視される 仕様です。このオプションを設定すると入 力時にすべて大文字に変換します。 フィールドやインデックスのグリッド表示 で左に表示される ID をゼロ・オフセットで 表示します。バージョン 1.x コンパチ関数 等のパラメータでフィールドやインデック スは 0 オフセット表示なので、同関数を 使う場合には 0 オフセット表示にしたほう が便利です。 Pervasive Software がノベルだった時代 に作成された DDF 作成用の DLL で作成 189 DDF 読込時にウィンドウを開く 最大化する Btrieve データ変換モード された DDF は内部 ID がシリアルに設定 されない場合があります。このオプション では DDF 読み込み時にそのような ID を シリアルな値で保持します。 このチェックをはずすと既存の DDF をオ ープンした時には一旦テーブル・リストが 作成されて、編集用のウィンドウは表示 されません。テーブル数の多い DDF をオ ープンする場合には画面のリソースの消 費を押さえることと表示のパフォーマンス が改善されます。 チェックした場合には DDF ビルダー起動 時にウィンドウを最大化します。 チェックした場合には既存の Btrieve デ ータの形式を DDF 定義の変更に合わせ て変更します。 以下はシステム・オプション・ダイアログの出力タブです。 190 設定項目についての説明は以下です。 項目 1ページに印字するフォールド数 フォーム生成 文字列型シンボル 概要 テーブルの印字で1ページに印字される フィールドの数を指定します。 フォーム生成で生成されるフォームの形 式を指定します。VB5 用、VB4 用は当 A ctiveX Control で利用できるフォームで す。VB2 を選択した場合には 16bit の V BMan for Btrieve/VBX 用のフォームが 出力されます。 VBMan バージョン 1.x 関数でフィールド 指定パラメータに利用できるシンボルを 生成する場合はこの項目のチェックをは ずします。VBMan バージョン 2.x からメソ ッドでの文字列型でテーブルやフィールド を設定する場合にはこの項目をチェック 191 してフィールド ID リストを出力します。 192 Appendix A. Microsoft Visual Studio.NET 制約事項 Refresh メソッドについて Refresh メソッドは.NET framework のラップ・クラスによってオーバーライドされ ていると思われ、VBMan の Refresh メソッドが呼び出されません。回避方法とし ては予約名になっていない Reload メソッドを追加しました。 ImeMode について .NET framework では ImeMode をデフォルトで全てのコントロールに追加します。 VBMan でも IMEMode を定義しているため、プロパティウィンドウには ImeMode/ IMEMode と二つプロパティが並んで表示されます。VBMan のプロパティは頭か ら3文字が大文字の IMEMode プロパティが該当します。.NET framework が付 加する ImeMode プロパティについては設定しても動作に関係しないことを確認 しました。 VBMEdit コントロールの FormatString について Microsoft Visual Studio .NET のでは IVBFormat インターフェースが実装され ていないと思われるため、Edit コントロールの FormatString プロパティは動作い たしません。アプリケーションコードで文字列フォーマットが必要になります。 B. Active Server Pages からの利用 概要・制約事項 マイクロソフト社の Windows NT Option Pack には IIS(Internet Information Se rver)が含まれます。IIS では VBScript から ActiveX Object を利用することが出 来る仕様になっており、VBMan のデータ・ベース・コントロールを呼び出して Btri eve データを操作することが可能です。 VBScript は ActiveX Object を呼び出せますが、ウィンドウを持つ ActiveX Con trol は利用できない仕様ですからユーザー・インターフェースを持たない VBMan のデータ・ベース・コントロールのみ利用できます。 また、言語の仕様が Visual Basic より簡略化されていることが原因でデータ・ベ ース・コントロールを使う上では制約があります。以下に制約事項をまとめまし 193 た。 ① ② ③ ④ プロパティはすべてコードで設定する必要がある。 DbLoadDDF メソッドで DDF のロードをする必要がある。 AutoOpen プロパティは利用できないので、DbOpen/DbOpenAll で Btrieve ファイルのオープンが必要になる。 文字列型の配列をパラメータとして指定する DbGetRecord メソッド等は動 作しない。(VB とパラメータの処理形式が異なるためと思われます) ASPスクリプトの作成手順 ASP スクリプトから VBMan を参照可能とするためには、OBJECT タグで VBMa n を指定する必要があります。このタグは各.asp ファイルの先頭で宣言します。 また、global.asa ファイルに指定することも可能です。以下は OBJECT タグで VB Man を指定する例です。 <object RUNAT=Server id="VBMan" name="VBMan" classid="clsid:3235CFF0-D891-11D1-BD2B-004026182472" border="0" width="32" height="32"> </object> 次に Btrieve のオペレーション・コードを定義したファイルを.asp ファイルにインク ルードして BTR_INSERT のようなコンスタントを利用可能とします。VBMan のサ ンプルに添付される Btrieve.inc ファイルを以下のようにインクルード指定します。 <!-- #INCLUDE FILE=”btrieve.inc” -- > DDF をロードするコードを記述します。DDF のロードは DbLoadDDF メソッドで実 行可能です。このメソッドは DDFDir プロパティに指定されたディレクトリを参照し ますので、メソッドを呼び出す前に DDFDir プロパティを指定します。以下はサン プル・コードです。 <% <% <% <% <% LANGUAGE="VBSCRIPT" %> Dim rc %> VBMan.DDFDir="\\OurServer\ddf" %> VBMan.AllOpen=FALSE %> rc = VBMan.DbLoadDDF %> 194 <% if rc <> 0 Then %> <p> DDF エラー <%= rc %> <% End If%> DDF をロードしたら Btrieve ファイルをオープンします。DDF に定義されている すべてのテーブルを一度にオープンしたい場合は DbOpenAll メソッドが便利で す。以下はサンプル・コードです。 <% rc = VBMan.DbOpenAll %> <% If rc <> 0 Then %> <p> オープン・エラー <%= rc %> <% End If %> Btrieve ファイルがオープンできたら、データ・ベース・コントロールのメソッド呼び 出しコードが記述できますので、お客様のアプリケーション・コードを記述してく ださい。 処理の終了時には必ず DbCloseAll メソッドで Btrieve ファイルをすべてクロース することを忘れないでください。以下はサンプル・コードです。 <% rc = VBMan.DbCloseAll %> 195 C. FAQ – よくあるご質問 この章では、VBMan を使った Btrieve アプリケーション・プログラミングやシステ ム・セットアップに共通の問題、疑問などの解説をします。 Netware に添付されていた Btrieve 6.10x エンジンについて 以前 Netware に添付されていた Btrieve 6.10x エンジンは 32bit アプリケーショ ンから利用するためのクライアント通信モジュールが提供されませんので Vbma n からも利用することができません。このエンジンが添付されていたころにはま だマイクロソフトの 32bit OS が発売される以前のバージョンですから、32bit の 通信モジュールは提供されていないのは仕方の無い事です。動作させるために は Btrieve 6.15 以降の Btrieve サーバー・エンジンが必要になります。 Pervasive.SQL で作成したカラムのサイズについて SQL で作成したカラムは”not null”制約をつけない場合はデータの先頭にヌル 状態を保持するフラグ領域が 1 バイト確保されますのでレコード長等の計算時 や Btrieve アプリで構造体の計算をする場合には注意が必要です。VBMan で はバージョン 3 からこのようなフィールドをサポートします。 VBMan Controls for Btrieve の動作に必要なファイルは何か? 以下のファイルをアプリケーションと一緒に配布してください。下記のファイル以 外にはBtrieveの実行モジュールが必要になります。Btrieve関連のモジュール は構成によって変わりますので、詳細はBtrieveマニュアルをご覧ください。VBM anのレジストリ登録に失敗しないようにするのであれば、最低限wbtrv32.dllの配 布は必要になります。 VBMBT330.OCX DIBAPI32.DLL DDFIO330.DLL VBMBT330.OCX を手動でレジストリ登録する Regsvr32.exe を使って COM コンポーネント l を手動で登録することが可能です。 MS DOS プロンプトで以下のコマンドを実行してください。Regsvr32.exe がウィン ドウズのシステムに存在しない場合は VBMan のインストール・ディレクトリにあ るものをご利用ください。 Regsvr32.exe c:\windows\system32\vbmbt330.ocx Regsvr32.exe で 0x485 のエラーとなる 196 Regsvr32.exeはモジュールのロードに失敗した場合、上記のようにC言語の16 進形式でエラーを表示します。この値はWIN32 APIのGetLastErrorからの値で す。 0x485という値はモジュールが見つからない、ロードできないと言う意味で 必要なDLLが存在しない場合のエラーです。VBMBT330.OCXの登録でエラーに なる場合はDIBAPI32.DLL,DDFIO330.DLLが\windows\system32に存在すること、 Btrieveが正常にインストールされていることをご確認ください。特にBtrieve開発 キットのみインストールしているような状況ですとc:\BTI\BINのようにBtrieveの モジュールへのパスがautoexec.batファイルで指定してないとvbmbt3.30.ocxが 登録できない状況になりますのでご注意ください。BtrieveのモジュールではWB TRV32.DLLがロードできないとVBMBT330.OCXは登録できません。 VBMBT330.OCX が依存するファイル Visual C++に添付されるdumpbin.exeで以下のようなコマンドで依存するファイル を知ることが出来ます。 dumpbin /IMPORTS c:\windows\system32\vbmbt330.ocx VB6セット・アップ・ウィザード Vb6のセット・アップ・ウィザードにはVBMan Control for Btrieveのモジュール依 存状況をvb6dep.iniに以下のように追加します。 [VBMBT330.OCX] Register=$(DLLSelfRegister) Dest=$(WINSYSPATH) Uses1=DIBAPI32.DLL Uses2=DDFIO330.DLL [DIBAPI32.DLL] Dest=$(WinSysPath) [DDFIO330.DLL] Dest$=(WinSysPath) チェック・ボックスをクリックしても解除されない VBManCheckBox コントロールの DbValueTrue プロパティと DbValueFalse プロ パティに同一の値が設定されています。異なる値をセットしてください。 セグメント・キーの作成方法 197 複数項目で一つのキーとすることを、Btrieve ではセグメント・キーといいます。V BMan でセグメント・キーを作成する方法は以下の手順でおこないます。 1) プルダウンからインデックス、追加を選択。インデックス指定ダイアログでセ グメントのチェック・ボックスをチェック 2) 複合キーにするフィールドを上記の手順を繰り返す。最後のフィールドを指 定する時セグメントをチェックしない。セグメントがなしとする項目までで、ひとつ の複合キーとなることに注意。 Btrieve ではセグメント・キー全体でキー番号を一つだけ設定しますが、VBMan においては管理方法が異なり、それぞれのフィールドに ID が割り振られること にご注意ください。データベース・アクセス関数 DbAccess に指定するキー番号 はセグメント・キーを構成する最初のフィールド ID から1引いた値を設定します。 以下は3つの項目でセグメント・キーを作成した場合のインデックス・グリッドの 例です。 以下はセグメント・キーで GET_EQUAL する Visual Basic でバージョン 1.x コン パチブル関数を使ったサンプルです。フィールド ITEM_CDOE1, ITEM_CODE2 が セグメントで、Const 文で設定している値はDDF定義の ID から1を引いたもの を設定します。 Const ITEM_TABLE = 10 Const ITEM_CODE1 = 0 Const ITEM_CODE2 = 1 Const ITEM_KEY1 = 0 Dim rc As Integer, Code1$, Code2$ Code1$ = "100" Code2$ = "ABC" rc = DbSetFieldData( ITEM_TABLE, ITEM_CODE1, Code1$ ) rc = DbSetFieldData( ITEM_TABLE, ITEM_CODE2, Code2$ ) rc = DbAccess( BTR_GET_EQUAL, ITEM_TABLE, ITEM_KEY1 ) If rc <> 0 Then MsgBox "Btrieve Err" & Str$(rc) 198 End If DbListIndex 指定に同じ名前のキーが表示される 同じフィールドで複数のセグメント・キーの先頭項目になっている場合、プロパテ ィ・ダイアログで同じフィールド名が DbListIndex プロパティに選択肢に表示され ます。これらを識別するためには、インデックス名(Named Index)を VBMan DDF ビルダーで設定してください。設定の方法は名前をつけたいインデックスを選択 して、(セグメント・キーの場合は先頭の項目)「インデックス」メニューから「イン デックス名を追加」を選択してください。インデックス名を入力するダイアログが 表示されますから、他のインデックスと識別可能な名前を設定してください。イン デックス名はインデックス・グリッドに括弧で表示されます。 DDF ファイルのディレクトリの移動 VBMan DDF ビルダーでデータベース定義し、フォームを定義した後、それらの ファイルをまったく別のディレクトリに移動した場合、VBMan データベース・コント ロールの DDFDir プロパティを移動したディレクトリに変更してください。変更せ ずに実行した場合の動作は保証できません。 DDF ディレクトリと別のディレクトリに Btrieve ファイルをおきたい VBMan DDF ビルダーでテーブル名と Btrieve ファイル名を設定するダイアログ において、Btrieve ファイル名としてドライブとパスを指定することで可能です。た だし、ドライブ名を含めた場合は別環境で実行する場合(ドライブ名が異なる場 合)にシステムやシステムの変更作業量が大きいと思われる為、お勧めしませ ん。 AutoIncrement がカウントしない キーが設定されていない場合は整数型のフィールドと同じ扱いとなります。また、 設定するキーは昇順のキーでなければなりません。 VBMan データベースアクセス関数で集計処理の仕方 バージョン 1.x コンパチブル関数を使った場合の集計処理のサンプル・コードを 示します。 Const Const Const Const SALES_CODE 0 SALES_AMOUNT 3 SALES_CODE 0 SALES_AMOUNT 3 199 Const SALES_ITEM_KEY 0 Dim rc As Integer Dim Total As Ingeter, Key$, Sales$ Total = 0 ' 検索開始キーの値をバッファに設定 rc = DbSetFieldData( SALES_TABLE, SALES_ITEM, "AAA") ' BTRIEVE を呼び、最初に合致するレコードを得る rc = DbAccess(BTR_GET_GREATER_OR_EQUAL, SALES_TABLE, SALES_I TEM_KEY ) Do While rc = 0 Key$ = DbGetFieldData( SALES_TABLE, SALES_ITEM ) If Key$ > "BBB" Then ' 集計範囲の検査 Exit Do End If ' 集計処理 Sales$ = DbGetFieldData( SALES_TABLE, SALES_AMOUNT ) Total = Total + Val( Sales$ ) ' BTRIEVE を呼び次のレコードを得る rc = DbAccess(BTR_GET_NEXT,SALES_TABLE,SALES_ITEM_KEY) Loop If rc <> 9 And rc <> 0 Then MsgBox "Btrieve Err" & Str$(rc) End If リクエスタ環境で DDFOpen エラー(20)が起こる Btrieve サーバーに接続できない状況が多いと思われます。クライアント・アプリ ケーションが Btrieve のリクエスター・モジュールにアクセスできない場合や、サ ーバーで Btrieve が実行されていない場合、サーバーと通信ができない場合な どに発生します。 Btrieve ステータス 2003 について ワークステーション・エンジンの設定が無いためにローカル・ディスクにある Btrie ve ファイルにアクセスできない状況です。DDF ファイル自体も Btrieve ファイル なので、DDF ビルダーでローカル・ディスクにある DDF をオープンする場合にも このステータスが表示されることがあります。 金額フィールドについて VBMan バージョン 1.x では Money 型のフィールドについては自動的に金額フォ 200 ーマットしましたが、VBMan Controls for Btrieve では Format プロパティと For matOption プロパティの指定が必要です。前のバージョンと同じフォーマットをす るにはプロパティの設定を以下のようにしてください。Format プロパティ、MaxLe ngth プロパティはフィールドのサイズによって変える必要があります。 VBManEdit1.Format = “###,###,###” VBManEdit1.FormatOption = 3 VBManEdit1.NumericMask = True VBManEdit1.MaxLength = 11 VBMan ボタンの押下をコードで実現したい 以下のコードで動作を確認しました。直接 Click イベントをよびだしても、Btrieve のオペレーションは実行されませんのでご注意ください。この方法は Visible プ ロパティが True のボタンに対して有効です。ボタンをフォームの見えない位置 に設定した場合でも動作します。 VBManBtn1.SetFocus SendKeys "{Enter}" 削除ボタンでカレント・レコードが無条件に消される VBManBtn の DbOperation に削除を指定した場合、ボタンがクリックされた時点 でのカレント・レコードが削除されてしまいます。フォームの入力とカレント・レコ ードが一致するかを検査するコードを VBManBtn の SetData イベントに追加す ることで問題を解決できます。以下はサンプル・コードで、現在入力されている 主キーで GET_EQUAL してレコードの再ポジショニングをしています。 Sub VBManBtn1.SetData() Dim rc as Integer rc = DbTransferFromControl( TABLE_ID ) rc = DbAccess(BTR_GET_EQUAL,TABLE_ID,PRIM_KEY) If rc = 4 Or rc = 9 Then MsgBox "削除するデータが存在しません" VBManBtn1.Abort = True Exit Sub End If If rc <> 0 Then MsgBox "Btrieve error " & str$(rc) VBManBtn1.Abort = True Exit Sub End If 201 End Sub WaitLock の指定について Btrieve for Windows では WaitLock はサポートされていませんでしたが、Btriev e for Windows95/NT ではマルチ・タスク環境に対応して WaitLock が可能にな りました。 Format イベントのコード例 リスト・ボックス、コンボ・ボックス、拡張コンボ・ボックス、拡張リスト・ボックスの F ormat イベントのコードはバージョン 1.x では DbSetFormattedString,DbExSetFo rmattedString 関数を使って設定していました。VBMan Controls for Btrieve で はこれらの関数は使う必要がなく、パラメータとして渡される文字列を直接書き 換えることでリストされる文字列を指定可能となりました。以前のバージョンとの コンパチビリティの為にこれらの関数も使用可能です。以下は Visual Basic に おける Format イベントのコード例です。 Sub VBManListBox1_Format( LineData As String ) Dim rc As Integer Dim ItemName As String ‘ VBMan リスト・ボックスではこの時点でカレント・レコードの ‘ フィールドからデータを得ることができる。 ItemName = VBManDB1.DbGetFieldData(“商品”,”商品名”) ‘ LineData には商品のコードが入っているとする。 LineData = LineData & “ - “ & ItemName End Sub DDF ビルダーの VE1070 メッセージ データ変換モードの DDF ビルダーで、Btrieve データの形式を移行する場合、V E1070 エラー・メッセージが表示されることがあります。このメッセージの括弧内 はオペレーティング・システムからのエラー値です。(Win32 API GetLastError からの戻り値)エラー値5が表示される場合は Btrieve ファイルが他のプロセス により使用中のステータスです。Btrieve ファイルを使っているプロセスを終了し てください。 DDF ビルダーのデータ変換モードでの編集機能 Btrieve の Create supplimental Index が既存のキーID がある場合はキー値を 設定できない等の制約により、このモードで DDF ビルダーを稼動させている場 合は、インデックスの挿入メニューは使用可能になりません。(ディスエーブルさ 202 れます) Visual C++を使いたい Visual C++では動作を確認できておりません。デザイン・モードでの ActiveX Co ntrol サポート機能が不足していること、プロパティを表示する再に漢字表示が 正しく行えないなどが理由です。 モジュールがロードされる順序 Windows95/98/ME/2000/XP と Windows 3.1 ではモジュールがロードされるデ ィレクトリの検索順序が異なりますのでご注意ください。特に Btrieve は同じファ イル名で別のバージョンが存在しますので、注意が必要です。MS Developer N etWork-CD の Q129943 からの情報です。 16 bit 1. 2. 3. 4. 5. 6. Windows の DLL サーチ・パス カレント・ディレクトリ Windows ディレクトリ Windows の System ディレクトリ EXE ファイルの存在するディレクトリ PATH 環境変数で指定されるディレクトリ ネットワーク上のマップされたディレクトリ 32 bit 1. 2. 3. 4. 5. 6. Windows の DLL サーチ・パス アプリケーションがロードされたディレクトリ カレント・ディレクトリ 32bit の Windows System ディレクトリ 16bit の Windows System ディレクトリ Windows ディレクトリ PATH 環境変数で指定されるディレクトリ 203 204 エラー・メッセージ この章では、VBMan のエラー・メッセージを解説します。エラーメッセージは製品 の改良のために予告なく追加、変更される場合があります。ご了承ください。 VE001 DDF読み込みエラ- VE002 Btriveを初期化できません VE003 メモリ-が足りません VE004 DDFDirが指定されていません VE005 DbTableが指定されていません VE006 DDF読み込みエラ- VE007 Btrieveファイルの生成に失敗 VE008 Btrieveファイルのオ-プンに失敗 (%d) DDFビルダーで生成したデータ ベース定義ファイルが読み込め ません。 VBManがBtrieveの初期化を実 行しましたが、エラーがBtrieve から戻されました。Btrieveの設 定ファイル、インストールが完 全か再度検査してください。 実行時のメモリが足りません。 VBManDBコントロールのDDFir プロパティが設定されていない ため、オペレーションが可能で はない状態です。 VBManコントロールのDbTable プロパティが設定されていない ため、DbFieldプロパティを設定 できない状態です。 データベース定義ファイルの読 み込み中にファイルの終わりと なりました。データベース定義フ ァイルが破壊されているか、VB Manのバージョンが異なりま す。 データファイルが存在しなかっ たのでBtrieveデータファイルを 生成しようとしましたが、エラー がBtrieveから返されました。rc =xxとBtrieveのエラー・コードが 表示されるので、Btrieveエラー を調べて対処してください。 Btrieveデータファイルが破壊さ れています。Btrieveのユーティ リティで復旧してください。 205 VE009 DDFファイルの形式が異なります VE010 レコ-ド数取得失敗(rc=%d) VE011 デ-タ型の不正 VE013 イメージ・コントロールに適合しないデータ 型です。 VE014 このバージョンのVisual Basicでは動 作しません。 VE015 イメージ・コントロールにビットマップを読み込 めません。 VE018 VBManPixはフォームに最大個(10)存 在します。 VE019 メタファイルが読めません。 VE020 アイコンファイルをオープン出来ま せん。 VE021 アイコンファイルのフォーマットが不 正です。 VE023 アルダス形式のメタファイルを読め ません。 VE024 テーブルIDの指定が範囲外です。 VE025 フィールドIDの指定が範囲外です。 VBManのバージョンが異なりま す。または、データベース定義 ファイルが破壊されています。 レコード件数を取得できませ ん。データベースが破壊されて います。Btrieveのユーティリテ ィで復旧が必要です。 データ型がサポートされていま せん。使用しているデータ型が 現在のVBManバージョンで使 用可能かどうか確認してくださ い。VBMan.DDFファイルが破壊 されている可能性もあります。 VBManの現在のバージョンで は.bmp,.ico,.wmf以外のファイル 拡張子はイメージ・コントロール に表示ができません。 VBMan Controls for Btrieve はVisual Basic 4.0J 32bit版で 動作します。 .BMPファイルの形式が正しくあ りません。 VBManPixはフォームに10個以 上設定できません。 データベースで指定されたメタ ファイルが存在しません。 データベースで指定されたアイ コンファイルが存在しません。 指定されたアイコンファイルの 形式が正しくありません。 指定されたメタファイルはアル ダス形式と判断されましたが、 その形式が正しくありません。 データベース・アクセス関数に 指定したテーブルのIDが範囲 外です。 データベース・アクセス関数に 指定したフィールドのIDが範囲 外です。 206 VE026 テンポラリ文字領域が確保できま せん。 VE027 インデックスIDの指定が範囲外で す。 VE028 DDFオープン・エラー(nn) VE029-031 DDF読み込みエラー VE035 キーID の指定が範囲外です。 VE036 セグメント・キーの指定が不正で す。 VE037 FindPercentage に失敗(%d) VE038 GetByPercentage に失敗 (%d) DbGetFieldDataで戻るテンポラ リの文字領域がありません。文 字領域で使用しないものがあ れば、開放してください。 データベース・アクセス関数に 指定したインデックスIDが範囲 外です。 DDFファイルをオープンできま せん。括弧内はBtrieveのステ ータス・コードです。この値をBtr ieveマニュアル等を参考にして 問題を解決してください。 DDFファイルの形式が正しくあ りません。 DDF で定義されていないキー の ID を指定しました。正しいキ ーID を指定してください。 セグメント・キーの場合、セグメ ントの先頭のキーの ID を指定 してください。 Btrieve 6.X の Find Percentag e オペレーションに失敗しまし た。括弧内は Btrieve からのス テータス・コードです。Btrieve のファイル形式が 5.x の場合に このメッセージが表示される場 合が多いです。ファイル形式を 6.x に変換してください。 Btrieve 6.X の Get By Percen tage オペレーションに失敗しま した。括弧内は Btrieve からの ステータス・コードです。Btrieve のファイル形式がバージョン 5.x の場合にこのメッセージが表示 されることが多いです。ファイル 形式を 6.x に変換してください。 207 VE039 Extended Opeartion エラー(%d) VE040 抽出するフィールド・リストが指定さ れていません。 VE041 検索条件のフィールド指定には@が 必要です。 VE042 比較演算子は(=,<,>,<>,<=,>=)のい ずれかを指定してください。 VE043 Extended 系オペレーションに可変 長データは指定できません。 VE044 このオペレーション・コード(nn)は使 用可能ではありません。 VE045 DbMaxRecords が指定されていま せん。 VE046 データの指定がなく、& | オペレー タが指定されています。不正な検索条件文 字列は(string)です。 Extended 系 Btrieve オペレー ションが括弧内に表示されるエ ラー・コードを返しました。詳細 は Btrieve プログラマーズ・マニ ュアル等を参照してプログラム を修正してください。 Extended 系 Btrieve オペレー ションにおいて、抽出するフィー ルドが指定されていません。 Extended 系オペレーションの 検索条件の指定でフィールド ID が@プリフィックスになっていま せん。 Extended 系オペレーションの 検索条件の指定で比較演算子 の指定が不正です。正しい比 較演算子を指定してください。 Extended 系オペレーションの 抽出フィールドまたは検索条件 に Note 型、Lvar 型のいずれか が指定されています。可変長型 データを Extended 系オペレー ションに指定することはできま せん。 DbExAcccess 関数の第一パラ メータに不正な値が設定されて います。 拡張リスト・ボックスまたは拡張 コンボ・ボックスの DbMaxRecor ds プロパティに値 0 が指定され ています。抽出するレコード件 数を設定してください。 Extended 系コントロールまた は、メソッド/関数で DbConditio ns プロパティまたはパラメータ において検索条件式の右辺が ありませんでした。正しい検索 条件式を設定してください。 208 VE050 テーブル ID(nn)のレコード長が DDF 定義と一致していません。Btrieve=xx,DDF= yy VE053 センチネルエラーです。ステータス =(nn,nn)です。 VE801 オープン・モードの指定不正です。 VE802 DbSource または DbTable プロパテ ィが不正です。 VE803 Btrieve ファイル(name)のオープン に失敗(nn) Btrieve ファイルをオープンし て、レコードを入出力するメモリ を割り振ろうとしましたが、Btrie ve のレコード・サイズと DDF で 定義されるレコードサイズが合 致しませんでした。Btrieve ファ イルを生成しなおすか、既存の Btrieve ファイルに合致するよう に DDF を定義しなおしてくださ い。Btrieve と DDF の定義が合 致してることを確認するには既 存の Btrieve ファイルと DDF を 定義して生成された Btrieve フ ァイルの両方に BUTIL ユーティ リティ等で Stat オペレーション を実行して、インデックスの定 義、レコード長が同一であるこ とを確認してください。DDF と B trieve の定義が合致していない 場合の VBMan の動作は一切 保証できません。 センチネルを認識できませんで した。当マニュアルのセンチネ ルインストール手順に従って、 ハードウェアの接続、ドライバ ーのインストール状況等をご確 認ください。どうしても接続出来 ない場合はカッコ内のステータ スをサポートまでご連絡くださ い。 VBMan データベース・コントロ ールの OpenMode プロパティの 設定が正しくありません。 これらのプロパティを正しい値 を指定してください。 Btrieve ファイル name を Btriev e ステータス nn の理由でオー プンすることができませんでし た。ステータスの詳細を Btrieve プログラマーズ・マニュアル等 で調査して問題を解決してくだ さい。 209 VE804 インデックスの指定が不正です。 VE805 データ・ファイル name をオープンで きません(nn) VE806 Btrieve ファイルと DDF ファイルの 定義が合致していません。(Btrieve=mm,DD F=nn) VE807 ボタンによる Btrieve オペレーション に失敗しました。(nn) DbIndex または DbIndexName プロパティの指定が DDF 定義 に存在しません。これらのプロ パティの値を正しく設定してくだ さい。 Btrieve データ・ファイル name を Btrieve ステータス nn が原 因でオープンすることができま せんでした。ステータスの詳細 を Btrieve プログラマーズ・マニ ュアル等で調査して問題を解決 してください。 Btrieve ファイルをオープンし て、レコードを入出力するメモリ を割り振ろうとしましたが、Btrie ve のレコード・サイズと DDF で 定義されるレコードサイズが合 致しませんでした。Btrieve ファ イルを生成しなおすか、既存の Btrieve ファイルに合致するよう に DDF を定義しなおしてくださ い。Btrieve と DDF の定義が合 致してることを確認するには既 存の Btrieve ファイルと DDF を 定義して生成された Btrieve フ ァイルの両方に BUTIL ユーティ リティ等で Stat オペレーション を実行して、インデックスの定 義、レコード長が同一であるこ とを確認してください。DDF と B trieve の定義が合致していない 場合の VBMan の動作は一切 保証できません。 VBMan ボタン・コントロールをク リックされたので、Btrieve オペ レーションを発行しましたが、Bt rieve ステータス nn が返されま した。Btrieve ステータスを Btri eve プログラマーズ・マニュアル 等で調査してエラーを取り除い てください。 210 VE808 Parent の DispatchID を取得できま せん。 VE809 Parent ディスパッチ・インターフェー スを取得できません。 VE810 Parent の Name DispatchID を取得 できません。 VE811 Parent の Name ディスパッチ・イン ターフェースを取得できません。 VE812 DDF ファイルクローズ・エラー(nn) VE813 Btrieve ファイル name のクローズ・ エラー(nn) VBMan コントロールが置かれ ているフォーム等の OLE Dispa tch ID が取得できません。この コントロール・コンテナは VBMa n を使用するには機能が不足し ています。 VBMan コントロールが置かれ ているフォーム等の OLE ディス パッチ・インターフェースが取得 できません。このコントロール・ コンテナは VBMan を使用する には機能が不足しています。 VBMan コントロールが置かれ ているフォーム等の Name プロ パティの OLE Dispatch ID が 取得できません。このコントロー ル・コンテナは VBMan を使用 するには機能が不足していま す。 VBMan コントロールが置かれ ているフォーム等の Name プロ パティの OLE ディスパッチ・イ ンターフェースが取得できませ ん。このコントロール・コンテナ は VBMan を使用するには機能 が不足しています。 DDF ファイルをクローズすると きに Btrieve がステータス nn を 返しました。このステータスを B trieve プログラマーズ・マニュア ル等で調査してエラーを取り除 いてください。 Btrieve ファイル名が name で ある Btrieve ファイルをクローズ するとき、Btrieve が nn のステ ータスを返しました。このステー タスを Btrieve プログラマーズ・ マニュアル等で調査してエラー を取り除いてください。 211 VE814 コンテナから Name, FormName を 取得できません。 VE815 プロパティの値が不正です。 VE816 パーセンテージ・オペレーションに失 敗(nn) VE817 ゲット・パーセンテージ・オペレーショ ンに失敗(nn) VE818 Extended オペレーションで指定さ れたフィールド(field_name)が存在しませ ん。 VE819 イメージ・ファイル(name)が存在しま せん。 コンテナ・アプリケーションの機 能が不足しているので、VBMan カスタム・コントロールを使うこ とができません。 特定のコントロールのプロパテ ィ値が不正です。 スクロールバーの操作をするた めに Btrieve のパーセンテー ジ・オペレーションを発行しまし たが、Btrieve がステータスの n n を返しました。このステータス を Btrieve プログラマーズ・マニ ュアル等で調査してエラーを取 り除いてください。 スクロールバーの操作をするた めに Btrieve のゲット・パーセン テージ・オペレーションを発行し ましたが、Btrieve がステータス の nn を返しました。このステー タスを Btrieve プログラマーズ・ マニュアル等で調査してエラー を取り除いてください。 Extended 系のオペレーションを 実行する際に DbConditions ま たは DbListFields プロパティに 指定されたフィールド field_nam e が見つかりませんでした。 VBMan ピクチャー・コントロー ルがイメージ・ファイル name を オープンできませんでした。 212 213 VBMan エラー・コード VBMan Controls for Btrieve では、メソッドや関数の戻り値にマイナスの値を 返す場合があります。以下はこれらの VBMan エラー・コードについての説明で す。値(-16)以降は version 3.30 で新たに追加になったエラー・コードです。 エラー・シンボル VBM_ERR_GENERIC 値 -1 VBM_ERR_ALREADY_OPEN -2 VBM_ERR_NOT_OPEN -3 VBM_ERR_INVALID_TABLE_NAME -4 VBM_ERR_INVALID_FIELD_NAME VBM_ERR_INVALID_KEY VBM_ERR_INVALID_OPCODE -5 -6 -7 VBM_ERR_INVALID_EXCOND -8 VBM_ERR_INVALID_EXTRACTOR -9 VBM_ERR_LOCK_BIAS -10 VBM_ERR_CONTROL_NOT_FOUN -11 D VBM_ERR_NOT_ATTACHED -12 詳細 一般的なエラー。これ以外のエ ラーに含めることができないも の。 Btrieve ファイルがオープンして いない時に実行されるべきメソッ ド/関数がオープン中のファイル に対して実行された。 Btrive ファイルがオープンされて いる時に実行されるべきメソッド/ 関数がオープンされていないファ イルに対して実行された。 テーブル名が DDFDir プロパティ で指定される DDF に存在しな い。 フィールド名が存在しない。 インデックス名が存在しない。 Btrieve のオペレーション・コード として指定できない値を設定し た。 Extended 系の Btrieve オペレー ションを発行するメソッド/関数で 検索条件の指定が不正である。 Extended 系の Btrieve オペレー ションを発行するメソッド/関数で 抽出するフィールドの指定が不 正である。 トランザクション関連のメソッド/ 関数などで、ロック値として不正 な値を設定した。 DbAttachControl 関数で最初の パラメータがただしくない。 DbAttachControl 関数が呼び出 214 VBM_ERR_INVALID_FIELD_ID VBM_ERR_INVALID_KEY_ID VBM_ERR_INVALID_TABLE_ID VBM_ERR_EXPAND_FILE_NAME -13 -14 -15 -16 VBM_ERR_DATA_TYPE -17 VBM_ERR_ARRAY_DIMS -18 VBM_ERR_OUT_OF_RANGE -19 VBM_ERR_DDF_LOAD -20 VBM_ERR_INVALID_DDF_DIR -21 VBM_ERR_ARRAY_ACCESS -22 VBM_ERR_INVALID_ARRAY_TYPE -23 されていない状態でバージョン 1. x コンパチブル関数が呼び出さ れた。 フィールド ID が正しくない。 インデックス ID が正しくない。 テーブル ID が正しくない。 DDFDir を短いファイル名に変換 する際にエラーが発生しました。 ファイル・システムの破損が考え られます。ScanDisk 等でエラー が発生するファイル・システムを 修復してください。 配列で変数を指定する仕様のメ ソッドにおいてパラメータのデー タ型が不正です。 1次元配列が指定されたメソッド のパラメータにそれ以外の次元 の配列が指定されました。 データを受取る配列のサイズが 不充分です。またはデータを配 列で設定するメソッドの場合、配 列のインデックス範囲がフィール ド ID の範囲を越えています。 DDF がロードされていない状態 で DDF 情報が必要とされるメソ ッド、コントロールが利用されて います。アプリケーションは DbLo adDDF メソッドで事前に DDF を 読みこませる必要があります。 DbLoadDDF メソッドが呼び出さ れましたが、DDFDir プロパティ に正しい値が設定されていませ んでした。 指定された配列をアドレスに変 換する Win32 API がエラーを返 しました。Visual Basic 等の言語 では通常起こり得ないシステム・ エラーです。言語やシステムの 再インストールをお勧めします。 配列で変数を指定する仕様のメ ソッドにおいてパラメータのデー 215 VBM_ERR_INVALID_ARRAY_DIM -24 VBM_ERR_SENT_MODULE_LOAD -25 VBM_ERR_SENT_MODULE_ENTRY -26 VBM_ERR_SENT_QUERY -28 VBM_ERR_SENT_MISSING -29 VBM_ERR_SENT_OPEN -30 VBM_ERR_SENT_INIT -31 VBM_ERR_SENT_FIND_UNIT -33 タ型が不正です。 1次元配列が指定されたメソッド のパラメータにそれ以外の次元 の配列が指定されました。 サポート用センチネル診断値で す。センチネル用ドライバーが正 常にインストールされていませ ん。 サポート用センチネル診断値で す。Sx32w.dll または sp32w.dll が破損している可能性がありま す。 サポート用センチネル診断値で す。パラレルポート用センチネル が接続されていないと思われま す。 サポート用センチネル診断値で す。パラレルポート用センチネル が接続されていないと思われま す。 サポート用センチネル診断値で す。センチネルの初期化に失敗 しています。 サポート用センチネル診断値で す。センチネルの初期化に失敗 しています。 サポート用センチネル診断値で す。USB センチネルのユニット が接続されていません。 216 DDF ビルダー・メッセージ DDF ビルダーが表示するメッセージについて解説します。 メッセージ 意味 VE1000 DDF ディレクトリを指定してく 新規 DDF の作成で DDF ディレクトリが ださい 指定されていません。DDF ディレクトリ を正しく指定してください。 VE1001 DDF 情報を正しく指定してくだ 新規 DDF の作成で Btrieve ファイル名 さい が入力されていません。正しい Btrieve ファイル名を指定してください。 VE1002 フィールド名を指定してくださ フィールドの追加、修正でフィールド名 い が入力されていません。 VE1003 データサイズまたは小数点以 フィールドの追加、修正で設定したデー 下桁数が不正です タ型のサイズまたは小数点以下の設定 が正しくありません。正確な値を設定し てください。データ型の詳細を Btrieve マニュアルで参照されることをお勧めし ます。 VE1004 フィールドはこれ以上追加でき 現在の DDF ビルダーで設定可能なフィ ません ールド数の上限に達しました。これ以上 フィールドは追加することができませ ん。 VE1006 すでに同名のフィールドが定 フィールドの追加ですでにテーブルに 義されています 存在するフィールド名を指定しました。 フィールド名は他と識別するためにユニ ークな名前を設定することが必要です。 VE1007 すでに同名のテーブルが定義 新規テーブルの定義で指定したテーブ されています ル名はすでに DDF に存在します。テー ブル名は他と識別するためにユニーク な名前を設定することが必要です。 VE1008 フィールドが選択されていませ メニューからフィールド処理を選択しま ん したが、処理対象となるフィールドが選 択されていません。マウスの左クリック で処理対象となるフィールドを選択して からメニューの選択を実行してくださ い。 VE1009 テーブルが選択されていませ メニューからテーブルに関する処理が ん 選択されましたが、処理対象となるテー ブルが選択されていません。処理する 217 VE1010 フィールド [%s] を削除します か? VE1011 フィールドが定義されていませ ん VE1012 インデックスはこれ以上設定 できません VE1013 フィールドが選択されていませ ん VE1014 修正するインデックスが選択さ れていません VE1015 インデックス[%s]を削除します か?データ変換モードの場合で、セグメント・ キーの場合はセグメント・キーを一括削除し ます。 VE1016 削除するインデックスが選択さ れていません VE1017 DDFOpen API エラー(%d) テーブルのウィンドウのタイトルをクリッ クしてアクティブな状態にしてからメニュ ーを選択してください。 フィールド削除の確認です。削除しても 良い場合は OK ボタンをクリックしてくだ さい。 インデックスの追加をメニューから選択 しましたが、まだフィールドがひとつも定 義されていません。先にフィールドを定 義してください。 インデックス定義の上限値に達しまし た。Btrieve の仕様により定義できるイ ンデックス数には上限があります。 インデックスの追加・修正でフィールド が選択されていません。フィールドを選 択してください。 インデックスの修正をメニューから選択 しましたが、修正対象となるインデック スが選択されていません。先にインデッ クスのグリッドから修正対象となるイン デックスをマウスの左クリックで選択し てください。 インデックス削除の確認メッセージで す。かぎ括弧で表示されたインデックス を削除してよければ、OK ボタンをクリッ クしてください。データ変換モードではセ グメント・キーの途中を残すことは意味 が無いのでセグメント・キー全体を削除 します。 インデックスの削除をメニューから選択 しましたが、削除対象となるインデック スが選択されていません。先にインデッ クスのグリッドから削除対象となるイン デックスをマウスの左クリックで選択し てください。 既存の DDF ファイルを修正するために DDF をオープンしましたが、Btrieve か ら括弧内のステータスが返されました。 括弧内の値を Btrieve のマニュアルな どで調査してください。多くの場合は Bt rieve エンジンやサーバー環境の設定 に問題があると思われます。 218 VE1018 DDFWriteFile API エラー(%d) VE1019 DDFWriteField API エラー[%s] (%d) VE1020 DDFWriteIndex API エラー(%d) VE1021 テーブルが定義されていませ ん VE1022 インデックスの最後の項目は セグメントをオフにしてください VE1023 データ型が選択されていませ ん VE1024 フィールドにはインデックスが 作成されています。先にインデックスを 削除してください VE1025 DDF ファイルが存在しません VE1026 FILE.DDF 読みエラー(%d) FILE.DDF を書きこむ際に Btrieve が括 弧内のステータスを返しました。括弧内 の値を Btrieve のマニュアルなどで調 査してください。多くの場合、Btrieve エ ンジンやサーバー環境の設定、ディス ク容量などの問題思われます。 FIELD.DDF を書きこむ際に Btrieve が 括弧内のステータスを返しました。括弧 内の値を Btrieve のマニュアルなどで 調査してください。多くの場合、Btrieve エンジンやサーバー環境の設定、ディ スク容量などの問題思われます。 INDEX.DDF を書きこむ際に Btrieve が 括弧内のステータスを返しました。括弧 内の値を Btrieve のマニュアルなどで 調査してください。多くの場合、Btrieve エンジンやサーバー環境の設定、ディ スク容量などの問題思われます。 DDF の保存を指定されましたが、テー ブルがひとつも定義されていないので 保存できません。 DDF の保存時にインデックスの最後の 項目がセグメントがオンになったまま で、セグメント・キーの終わりが設定さ れていません。インデックス定義の見直 しが必要と思われます。 フィールドの設定でデータ型が定義され ていませんでした。データ型の選択は 必須です。 フィールドの削除が指定されましたが、 対象となるフィールドにはインデックス が設定されています。フィールドを削除 する前に関連するインデックスをすべて 削除してからフィールドを削除してくださ い。 既存の DDF ファイルのオープンが指定 されましたが、FILE.DLL,FIELD.DDF,IND EX.DDF の3ファイルが同じディレクトリ に存在しませんでした。DDF の存在す るディレクトリを正しく指定してください。 既存の DDF ファイルのオープンが指定 されましたが、FILE.DDF の読み込み時 219 VE1027 FIELD.DDF 読みエラー(%d) VE1028 INDEX.DDF 読みエラー(%d) VE1031 vbman.ini への書き込みに失 敗しました VE1032 搬出ファイルを書き込みモードで オープンできません VE1033 テーブル[%s]の搬出が終了し ました VE1034 搬入ファイルを読み込みモードで オープンできません に Btrieve が括弧内のステータスを返 しました。括弧内の値を Btrieve マニュ アルなどで調査してください。多くの場 合、Btrieve エンジンの設定に問題があ るか破損した DDF ファイルを指定して いるか、形式の正しくない DDF ファイル を指定していると思われます。 既存の DDF ファイルのオープンが指定 されましたが、FIELD.DDF の読み込み 時に Btrieve が括弧内のステータスを 返しました。括弧内の値を Btrieve マニ ュアルなどで調査してください。多くの 場合、Btrieve エンジンの設定に問題が あるか破損した DDF ファイルを指定し ているか、形式の正しくない DDF ファイ ルを指定していると思われます。 既存の DDF ファイルのオープンが指定 されましたが、INDEX.DDF の読み込み 時に Btrieve が括弧内のステータスを 返しました。括弧内の値を Btrieve マニ ュアルなどで調査してください。多くの 場合、Btrieve エンジンの設定に問題が あるか破損した DDF ファイルを指定し ているか、形式の正しくない DDF ファイ ルを指定していると思われます。 ウィンドウズがインストールしていある ディスクが満杯か破損している状況と 思われます。ディスクの容量を確認でき たら、ScanDisk 等を実行して破損を回 復してください。 搬出を指定したディスクの容量が不足 しているかディスクが破損していると思 われます。ディスクの容量を確認できた ら、ScanDisk 等を実行して破損を回復 してください。 搬出が正常に終了した場合の通知メッ セージです。 搬入を指定したファイルかディスクが破 損しているか、ファイルが存在しないと 思われます。ファイルの存在が確認で きたら、ScanDisk 等を実行して破損を 回復してください。 220 VE1035 テーブル[%s]の搬入が終了し ました VE 1 0 37 テーブル[%s]を削除します か? VE1039 メモリが確保できません。 VE1040 BTRIEVE CREATE に失敗(% d) VE1041 BTRIEVE ファイル %s が存在し ます。上書きしますか? VE1042 ファイル %s はすでに存在し ます。上書きしますか? VE1043 ファイルが書き込みモードでオ ープンできません。 VE1044 フィールド ID ファイルの出力が終了 しました VE1045 DDF ファイルを保存しますか VE1046 書き込むフォーム %s のオープンに 搬入が正常に終了した場合の通知メッ セージです。 テーブルを削除する際の確認メッセー ジです。かぎ括弧で表示されるテーブ ルを削除する場合は OK ボタンをクリッ クします。 DDF ビルダーが動作するのに十分なメ モリが確保できませんでした。同時に起 動しているアプリケーションがあれば終 了させてください。DDF ビルダー単独で 起動しても同メッセージが表示される場 合は、パソコンの実装メモリを増やす か、スワップを大きくしてください。 Btrieve ファイルの生成に失敗しまし た。失敗した理由は括弧内の Btrieve ステータスで表示されていますので、Bt rieve マニュアルなどで原因をお調べく ださい。 Btrieve ファイルの生成を指定しました が、生成の対象となるファイルはすでに 存在しています。既存のファイルが不 要であれば、このメッセージに OK をク リックして新しい Btrieve ファイルを上書 きして生成します。 フィールド ID ファイルの出力で指定さ れたファイルはすでに存在しています。 既存のファイルが不要であれば、このメ ッセージに OK をクリックして既存のファ イルを上書きしてください。 フィールド ID ファイルの出力で指定さ れたファイルを出力するモードでオープ ンすることが出来ませんでした。ディス クの容量が満杯になっているか、ディス クの破損が原因と思われます。ディスク の容量に問題が無ければ、ScanDisk などでディスクの障害をとりのぞいてく ださい。 フィールド ID の出力が正常に終了した ことを通知するメッセージです。 DDF ファイルの保存確認メッセージで す。 フォームの生成で指定されたファイルを 221 失敗しました VE1047 新規または修正されたテーブル% s に対して整合性のないとおもわれる B TRIEVE ファイル %s が存在します。OK を クリックした場合は BTRIEVE ファイルを削除 します VE1048 BTRIEVE ファイルの削除ができ ません。他のプログラムが使用中です VE1049 テーブルにフィールドが定義されて いません VE1050 クリップボードの内容が不正で す VE1051 1ページに印字するフィールド数が 不正です VE1052 可変長フィールドを挿入するこ とはできません。テーブルの最後に1フ ィールドのみの追加は可能です VE1053 すでに可変長の項目が存在し ます 書きこみのモードでオープンすることが できませんでした。ディスクの容量が満 杯になっているか、ディスクの破損が原 因と思われます。ディスクの容量に問 題が無ければ、ScanDisk などでディス クの障害をとりのぞいてください。 フィールド定義で合算されるレコード長 と異なる既存の Btrieve ファイル存在し ます。Control ではフィールド定義と合 致しない Btrieve ファイルを扱うことが できないので、このメッセージに OK を クリックした場合は該当 Btrieve ファイ ルを削除します。 VE1047 メッセージで削除を指定された Btrieve ファイルは他のアプリケーション などでオープンされているため削除す ることが出来ませんでした。該当 Btriev e ファイルを削除したい場合はアプリケ ーションを終了させてから削除してくだ さい。 フォームの生成が指定されましたが、 指定されたテーブルにはフィールドがひ とつも定義されていませんでした。フィ ールド定義、インデックス定義が完了し たテーブルについてフォームの生成を 実行してください。 クリップ・ボードには VBMan DDF ビル ダーで設定した以外のデータが保持さ れているので、クリップ・ボードからのペ ーストが実行できませんでした。クリッ プ・ボードへのコピーからやり直してくだ さい。 システム・オプションの指定で1ページ に印字するフィールド数の指定が0か 空白になっています。0以外の値を指 定してください。 フィールドの挿入を指定しましたが、設 定したフィールドは可変長のデータ型で す。可変長のフィールドはテーブルの最 後に追加することだけが可能です。 テーブルには可変長のデータ型を持つ フィールドを複数定義することはできま 222 VE1054 テーブルの最後の項目以外は 可変長データ型に変更できません VE1055 Named Index は変更できませ ん VE1057 テーブル[%s]にインデックスが ありません。VBMan からの DDF 利用 にはすくなくとも一つインデックスを作成 してください VE1059 dbMagic 情報ファイルの搬入 に失敗しました VE1060 dbMagic の数値形フィールドに 不正なデータ長があります VE1061 dbMagic 情報ファイルの FILE 行に DESC=が存在しません VE1062 dbMagic 情報ファイルの FILE 行に NAME=(btrieve ファイル名)の定義 が存在しません VE1063 インデックス名[%s]を削除しますか VE1064 インデックス名を設定するときは セグメント・キーの場合はセグメントの 先頭にセットしてください VE1070 ファイルのコピーまたは移動に 失敗しました。オペレーティングシステ ムからのエラー・コードは %d です。 せん。 フィールドの変更を指定しましたが、テ ーブルの最後の項目では無いため、可 変長データ型のフィールドに変更するこ とは出来ません。 インデックス名は追加と削除のみ可能 な仕様です。 DDF の保存を指定しましたが、インデッ クスがひとつも定義されていません。V BMan のコントロールを使う際にはイン デックスが1個は必要なので、インデッ クスを定義してから DDF の保存をして ください。 DbMagic データ辞書ファイルの搬入に 失敗したことを通知するメッセージで す。 DbMagic のデータ辞書の形式が不正で す。今一度 dbMagic でデータ辞書搬出 をした結果をご確認ください。 DbMagic のデータ辞書の形式が不正で す。今一度 dbMagic でデータ辞書搬出 をした結果をご確認ください。 DbMagic のデータ辞書の形式が不正で す。今一度 dbMagic でデータ辞書搬出 をした結果をご確認ください。 インデックス名の削除確認メッセージで す。かぎ括弧でかこまれたインデックス 名を削除してもよければ、OK ボタンを クリックしてください。 インデックス名の追加を指定する場合 はセグメント・キーの先頭の項目に設定 してください。セグメント・キーの先頭以 外のメンバーを選択した状態でインデッ クス名の指定をメニューから選択してい ます。 データ移行モードでフォーマット変換の 対象となる Btrieve データ・ファイルを移 動する際にオペレーティング・システム がエラーを返しました。エラー・コードは Win32 API の GetLastError からの値で す。Windows SDK 等マイクロソフトの資 料にエラー・コードの詳細が記載されて 223 VE1071 Btrieve ファイルのフォーマット 変換中にエラー(%d) VE1072 ファイル変換につかったとおも われるファイル %s が存在します。削 除して処理をすすめますか? VE1073 Btrieve ファイルがオープンで きません。Btrieve のステータスは(%d) です。 います。 データ移行中に Btrieve が括弧内のエ ラーを返しました。括弧内の値を Btriev e マニュアルなどで調査してください。 既存のデータにインデックスを追加する 際に重複が発生する際には括弧内に ステータス5が表示されます。 データ移行を開始する際に前回に変換 に失敗したと思われる一時ファイルが 残っていました。前回の変換で途中ま での変換が残っていてそこからデータ を復元できる場合もあります。一時ファ イルが不要であれば OK クリックして作 業を進めてください。 データ移行の際に該当 Btrieve ファイ ルをオープンしたら Btrieve から括弧内 のステータスが返されました。括弧内の 値を Btrieve マニュアル等で調査してく ださい。 データ変換モードでのフィールド変更に 関する注意メッセージです。 VE1074 Btrieve データ変換モードではフィ ールド、インデックスの修正はできません。 変更したいフィールド、インデックスはいった ん削除してから、追加してください。デー タを変換する必要がなければ、システム・オ プションからデータ変換モードを解除してくだ さい。 VE1075 Btrieve の DropIndex オペレー データ変換モードでインデックスの削除 ションに失敗しました。Btrieve からのス を指定されました。それに従って Btriev e のキー削除を実行しましたが、Btriev テータスは(%d)です e が括弧内のステータスを返してきまし た。括弧内の値を Btrieve マニュアル 等で調査してください。 VE1076 Btrieve の CreateIndex オペレ データ変換モードでインデックスの追加 ーションに失敗しました。Btrieve からの を指定されました。それに従って Btriev e のキー追加を実行しましたが、Btriev ステータスは(%d)です e が括弧内のステータスを返してきまし た。括弧内の値を Btrieve マニュアル 等で調査してください。 VE1078 フィールド数が多いのでフォー DDF のテーブルに定義されたフィール ムを作成しても VB で利用できません。 ド数が 254 個を越えているので、フォー (VB5/4 では最大 254 コントロール/For ムを生成しても Visual Basic で入力画 面として利用することが出来ません。フ m) 224 VE1079 dbMagic 情報ファイルに FILE= の行が存在しません。 ィールド数の少ないテーブルを指定して ください。 DbMagic データ辞書ファイルの軽視 k いが不正です。データ辞書ファイルの 搬出結果を確認してください。 225 226 Btrieve ステータス・コード 以下に Btrieve のステータス・コードと概要を記述します。この VBMan Controls for Btrieve のマニュアルが記述された時点の情報であることに注意してくださ い。将来のコンパチビリティについては当社では保証できません。詳細は Btriev e の開発キットのマニュアルまたは、ノベルの NetWare の「Btrieve インストー ル・オペレーション」マニュアルなどに記載があります。 2 I/O ERROR 3 File not opened 4 Key Value not found 5 Duplicate key value 6 Invalid key number 7 Different key number 8 Invalid Positioning 9 End of file 10 Modifiable Key value error 11 invalid file name 12 file not found 13 Extended file error 14 Pre-Image open error 15 Pre-Image I/O error 16 Expansion error 17 Close error 18 Disk Full 19 Unrecoverable error 20 Record Manager Inactive 21 Key Buffer Error 22 Key Buffer Error 23 Position Block Error 24 Page Size Error 25 Create I/O Error 227 26 Number of Keys 27 Key Position 28 Record Length 29 Key Length 30 Btrieve file name 31 Extended Error 32 Extended I/O error 34 Extend Name 35 Directory Error 37 Begin Transaction error 38 Transaction Control File 39 End/Abort Error 40 Transaction Max Files 41 Operation not allowed 42 Incomplete accelerated access 43 Invalid data record address 44 Null key path 45 Inconsistent Key flags 46 Access denied 47 Maximum open files 48 Invalid Alternate sequence definition 49 Key type error 50 Owner already set 51 Invalid Owner 52 Error Writing cache 53 Invalid Interface 54 Variable Page Unreadable 55 Autoincrement error 56 Incomplete index 57 Expanded Memory Error 58 Compression buffer too short 59 File Already Exists 228 60 Reject Count Reached 61 Work space too small 62 Incorrect descriptor 63 Invalid extended insert buffer 64 Filter limit reached 65 Incorrect field offset 74 Automatic transaction abort 75 Server Routing list too small 76 File server list too small 77 Wait lock error 78 Deadlock detected 80 Conflict 81 Lock error 82 Lost position 83 Read Outside Transaction 84 Record in use 85 File in use 86 File full 87 Handle full 88 Mode Error 90 Redirected Device table full 91 Server Error 92 Transaction table full 93 Incomplete lock type 94 Permission error 95 Session no longer valid 96 Communication environment error 97 Data message too small 98 Internal transaction error 1001 Invalid lock parameter 1002 Invalid memory parameter 1003 Insufficent memory for parameters specified 229 1004 Invalid page size parameter 1005 Invalid pre-image device parameter 1006 Invalid pre-image memory parameter 1007 Invalid file parameter 1008 Incorrect parameter 1009 Invalid transaction parameter 1010 Unable to access btrieve file for transaction recovery 1011 Invalid compression parameter 1012 Number of files in transaction should be between 1 to 18 1013 Task list is full 1014 File is open or transaction is active 1016 Already initialized 2001 Insufficent Memory 2002 Parameter Invalid or Out of Range 2003 No Local Access Allowed 2004 SPX is Not installed 2005 Wrong version of SPX Installed 2006 No Available SPX Connection 2007 Invalid Parameter 230 VBMan Controls for Btrieve 調査依頼フォーム 日付 会社名 登録ユーザー名 製品シリアル番号 VBMan Controls for Btireve バージョン 電話番号 ファックス番号 インターネット・メール・アドレス 使用パソコン機種 OSバージョン Btrieve/Pervasive.SQLバージョン Visual Basic/Visual Studio.NETバージョン お問合わせ内容、問題記述など、具体的に再現可能なようにご記入ください。 添付資料 231 VBMan Controls for Btrieve Version 3.30 第1版 2005年11月1日第1刷発行 版権・著作 株式会社テクナレッジ Printed In Japan 232
© Copyright 2024 Paperzz