VB32ビット用のサンプルです。
このサンプルプログラムは、弊社Webサーバ資料ページ内(http://www.pervasive.co.jp/support/index_Ref.html)
「Microsoft Visual Basic とPervasive.SQL 2000iを使ったアプリケーションの開発」からの抜粋です。

 このサンプルで使用しているBtrieveファイルのレイアウトは次の通りです。
 [レコードレイアウト]
   内容          データ型        バイト数
  ------------------------------
   メーカID       string      1
   マシンID       integer     2
   マシンNo.      long        4
   マシン名        string      30
   定価          long        4
   割引率         float       4
 [キーの構成]
   キー番号  セグメント番号  キーを構成するフィールド  備考
  -----------------------------------
   0     1        メーカID         重複可能
   0     2        マシンID         重複可能
[注意事項]
・Btrieveの引数にはString型の項目は渡さないでください。(ユーザ定義の中にも指定しないでください。)
文字が化けたり、保護違反が発生する事があります。
 このサンプルでは、Byte型を使用したユーザ定義型とString型を使用したユーザ定義型を使用し、Btrieveに
渡す時とVBで作業する時で使い分けています。
・VBの32ビット版では、16ビット版と比べユーザ定義型の中でInteger型、Long型等を使用したときの
アライメント(メモリー上に記憶されるときの並び方)が変更になっています。このため、ユーザ定義型の
中のInteger型、Long型等はそれぞれByte型の2バイトの配列、Byte型の4バイトの配列で使用しています。
VBで作業するためには、Windows APIのRtlMoveMemoryを使用して、データをコピーします。
例)次のようなユーザ定義型を作成すると、16BitのVisual Basicと32BitのVisual Vasicでは、下記のような
メモリ配置となり、データがずれます。(サイズが同じにはなりません。)
  Type TEMP
       B1 As Byte
         B2 As Byte
       B3 As Byte
       L1 As Long
  End Type
  Global Buf As Temp
 Visual Vasic 16Bit版のメモリ配置
  0  1  2  3  4  5  6  7
  ┌──┬──┬──┬──┬──┬──┬──┐
  │ B1 │ B2 │ B3 │  :  L1  :  │
  │Byte│Byte│Byte│ L : o : n : g │
  │ 型 │ 型 │ 型 │  :  型  :  │
  └──┴──┴──┴──┴──┴──┴──┘
 Visual Vasic 32Bit版のメモリ配置
  0  1  2  3  4  5  6  7  8
  ┌──┬──┬──┬──┬──┬──┬──┬──┐
  │ B1 │ B2 │ B3 │  │  :  L1  :  │
  │Byte│Byte│Byte│遊び│ L : o : n : g │
  │ 型 │ 型 │ 型 │Byte│  :  型  :  │
  └──┴──┴──┴──┴──┴──┴──┴──┘
・UniCodeからAnsiCodeへコード変換した後の文字列の長さ(バイト数)を求めるには、
    長さ = LenB(StrConv(String型の変数, vbFromUnicode)) 
としてください。変換前の変数、変換後の変数に対してLenBを実行しても、正しい長さは得られません。
(保護違反が発生する原因となります。)