Lotusnut >> Soft >> Visual Basic >> DataBase
Visual Basic 6.0 - DataBase -
| Option Explicit Public Function dfSetFgrd(ByVal ctrl As Variant, _ ByVal dbname As String, _ ByVal tblName As String) As Long
On Error GoTo ErrTrap 'ローカル変数の宣言 Dim ws As DAO.Workspace 'ワークスペースを明示的に指定 Dim db As DAO.Database 'ベータベースを指定 Dim rs As DAO.Recordset 'レコードセット Dim fld As Field Dim rscount As Long Dim fldcount As Integer Dim strcon As String '引数の検証&変換 If Not (TypeOf ctrl Is MSFlexGrid) Then Debug.Print "MSFlexGrid コントロールエラー " & Err.Description Exit Function End If '***** プロシージャ処理の実行 ***** 'データベース名からコネクタ情報を得る dbname = dfRetDBName(dbname, strcon) 'データベースのセット Set db = OpenDatabase(dbname, False, False, strcon) 'データベースの設定 Set rs = db.OpenRecordset(tblName, dbOpenTable) 'レコード総数の取得 rscount = rs.RecordCount + 1 ctrl.Rows = rscount 'コラム数の取得 fldcount = db.TableDefs(tblName).Fields.Count ctrl.Cols = fldcount + 1 fldcount = 1 '***** フィールドの取得 ***** For Each fld In db.TableDefs(tblName).Fields ctrl.TextMatrix(0, fldcount) = fld.Name ctrl.ColAlignment(fldcount) = flexAlignCenterCenter '***** レコードの取得 ***** 'レコードの先頭行に rscount = 1 rs.MoveFirst Do Until rs.EOF If Not IsNull(rs.Fields(fld.Name)) Then 'NULLを無視する ctrl.TextMatrix(rscount, fldcount) = rs.Fields(fld.Name) End If rs.MoveNext rscount = rscount + 1 Loop fldcount = fldcount + 1 Next fld 'データベースの開放 rs.Clone db.Close 'レコードカウントを戻す dfSetFgrd = rscount Exit Function 'エラートラップ ErrTrap: Debug.Print "dfSetFgrdエラー : " & Err.Description On Error GoTo 0 End Function |
感想;
MSFlexGridにデータベースファイルを連結させるロジックを考えてみた。引数は、データベースファイル名とテーブル名を指定するだけ。これが有用なコードかどうかは、これからいろんなアプリケーションを作成してみて共有できうるかどうかに掛かっている。
VB-Life長い道のりはまだまだ続く・・・・・






