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
' 作  者(Writer)
' 目  的(Aim)
' 入  力(Input)
' 戻  値(Return)
' 注  釈(Notes)
' 使用方法(Usage)
' 履  歴(History)
: lotusnut
: データベースをMSFLexGridに連結する
: MSFlexGridコントロール,データベース名,テーブル名
: レコード数
: コントロールとデータベース名、テーブル名を指定するだけ
: Count = dfLvwDB(Ctrl,path)
: Ver 0.0.0 2003/2/2 Original

    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長い道のりはまだまだ続く・・・・・

メニューTOPへ