Microsoft Access は、Visual Basic で最も一般的に使用されるデータベースですが、Visual Basic には、Access データベースを参照するための FoxPROforWindows の BROWS コマンドに似た機能がありません。このプログラムは、Access データベースを参照するための BROWS コマンド インターフェイスに似たメソッドを提供します。興味のある読者は、このプログラムをパラメーター (データベース名、テーブル名、フィールド名、フィールド幅など) を使用してサブルーチンとして書き換えて、Foxproforwindows に似たメソッドを実装できます。 BROWS コマンドの関数は、独自のアプリケーションで呼び出されます。
まず、ウィンドウ内にグリッド (gridl)、リスト ボックス (list1)、通常のダイアログ ボックス (dlg)、データ認識項目 (datal)、および 2 つのコマンド ボタン (command1 と command2) を定義し、それらの位置を配置します。
プログラムを実行すると、データベース ファイルを選択した後、「開く」ボタンを押すとダイアログ ボックスが開き、リスト ボックス内のテーブル名をクリックして参照します。テーブル。このプログラムは、フィールド長とフォント サイズに応じて閲覧領域のサイズを自動的に設定し、閲覧領域がウィンドウを超えないようにすることができます。ウィンドウが閲覧領域を埋めることができない場合、プログラムは自動的に閲覧領域に水平または垂直スクロール バーを追加します。プログラムリストを添付します。
1SubCommand1_Click()'「開く」ボタンをマウスでクリック
2Dim、IAsInteger、cuntAsInteger
3grid1.Visible=False
4dlg.ファイル名=""
5dlg.Filter="アクセス(*.MDB)|*.MDB"
6dlg.FilterIndex=1
7dlg.Action=1'ダイアログボックスを開きます
8Ifdlg.Filename=""ファイルが選択されていない場合
9ゴートカンク
10EndIf
11data.Connect=""
12data.データベース名=dlg.ファイル名
13data.レコードソース=""
14data.リフレッシュ
15browser.Caption="ブラウザにアクセス[" datal.DatabaseName "]"
16cunt=データ.データベース.テーブル定義.数
17リストl.クリア
18ForI=0Tocunt-1'テーブル名をリストボックスに追加します
19IfLeft(data.Database.TableDefs(I).Name,4)<>"Msys"Then
20listl.Additemdata.Database.TableDefs(I).Name
21EndIf
22次の私
23label1.Visible=True
24list1.Visible=True
25list1.ListIndex=0
26カンク:
27エンドサブ
28SubCommand2_Click()'「終了」ボタンをマウスでクリック
29終わり
30エンドサブ
31サブフォーム_ロード()
32browser.Caption="ブラウザにアクセス"
33grid1.高さ=3200
34grid1.Visibli=False
35list1.Visible=False
36label1.Visible=False
37エンドサブ
38SubListl_Click()'マウスポイントリストボックス
39DimctAsInteger
40data1.RecordSource=listl.Text
41ct=data1.Database.TableDefs(list1.ListIndex).Fields.Count
42grid1.Cols=ct
43grid1.行=0
44ForI=0Toct-1'テーブル内の各フィールド名をグリッドの最初の行に追加します
45grid1.Col=I
46grid1.Text=data1.Database(data1.RecordSource),Fields(I).Name
47ネクストティ
48data1.更新
49data1.Recordset.MoveLast
50grid1.Rows=data1.Recordset.RecordCount 1
51data1.Recordset.MoveFirst
52grid1.行=0
53whileNotdata1.Recordset.EOF'グリッドの各セルにデータを読み込みます
54grid1.Row=grid1.Row 1
55フォリ=0トクト-1
56grid1.Col=I
57IfNotIsNull(data.Recordset(I).Value)Then
58grid1.Text=データ.レコードセット(I).値
59その他
60grid1.Text=""
61終わりの場合
62セル幅=テキスト幅(グリッド1.テキスト) 200
63Ifcellwidth>grid1.ColWidth(I)Then
64gridl.ColWidth(I)=セル幅
65終わりの場合
66次へ
67data1.Recordset.MoveNext
68水
69グリッド1.幅=0
70Fori=0Toct-1'グリッドの合計幅を計算します
71grid1.Width=gridl.Width Gridl.ColWidth(I)
72次へ
73Ifgrid1.Width>scalewidthThen'グリッドの合計幅がウィンドウの幅より大きい場合
74grid1.Width=スケール幅
75終わりの場合
76grid1.Height=(gridl.Rows 2)*20*grid1.FontSize' グリッドの長さを計算します
77Ifgrid1.Height>3200Then'グリッドの長さが範囲外の場合
78grid1.高さ=3200
79終わりの場合
80browser.Width=grid1.Width 300'ウィンドウの幅を設定します
81grid1.Visible=True
82エンドサブ->