ExcelでRDB(リレーショナルデータベース)を操作してみようという連載のその22です。前回の記事はこちらです。
データ入力機能を考える
前回はデータ入力ツールのひな形を作ってみました。大分イメージが固まってきましたね。
今回は、いよいよデータ入力機能の実装を行っていきたいと思います。
インターフェイスの対応
まずデータ入力のインターフェイスを考えてみましょう。以下に前回までの画面を再掲します。
この画面は基本的に入力にプロテクトがかかっています。ここからテーブルを指定してフィールドの情報が決定されると、入力データ欄にデータを入力できるように変更しましょう。視覚的にも入力できるようになったことを明示すると親切でしょう。入力が完了したら入力決定ボタンを押すことで、入力されたデータを指定のテーブルに追加登録します。
大体方針が固まってきました。
機能の実装
それでは機能を実装していきましょう。まずはデータ入力の準備です。カラムリスト表示するプロシージャに入力データの準備する部分を追加しました。具体的にはプロテクトの解除と背景色の変更です。決以下の様になりました。
'カラムリストを表示します Private Sub DispColumnList(fileName As String, tableName As String) Dim db As clsAccessDbase Dim i As Long On Error GoTo ErrorHandler '表示をクリアします Me.Range("DATA_AREA").ClearContents Me.Range("A10").Activate Me.Range("TableName").Select 'カラム情報を表示します Set db = New clsAccessDbase db.dbFileName = Me.Range("FileName").Text db.dbTableName = Me.Range("TableName").Text With Me.Range("columnList").Offset(1, 0) For i = 0 To UBound(db.dbFieldList) .Offset(i, -1) = i + 1 .Offset(i, 0) = db.dbFieldList(i) .Offset(i, 1) = GetDataInfo(CLng(db.dbFieldType(i))) .Offset(i, 2) = GetKeyInfo(CLng(db.dbKeyType(i))) .Offset(i, 3).Locked = False .Offset(i, 3).Interior.Color = vbCyan '背景色水色(入力許可) Next i End With 'レコード数表示します Me.Range("RecordCount").Value = db.dbRecordCount ErrorHandler: If Err.Number <> 0 Then MsgBox "テーブルエラーです" End Sub
お次は実際に入力されたデータの登録です。入力決定のボタンに以下のプロシージャを貼り付けます。実際の登録は、クラスモジュールのAddRecordメソッドを使います。
'データ登録を実行します Public Sub cmdDataEntry_Click() Dim inputData() As Variant Dim i As Long If MsgBox("データを登録します", vbYesNo) = vbNo Then Exit Sub Dim db As New clsAccessDbase db.dbFileName = Me.Range("FileName").Value db.dbTableName = Me.Range("TableName").Value '登録データを設定します ReDim inputData(UBound(db.dbFieldList)) For i = 0 To UBound(inputData) inputData(i) = Me.Range("columnList").Offset(1 + i, 3) Next 'データを登録します db.AddRecord inputData Me.Range("RecordCount").Value = db.dbRecordCount MsgBox "データを登録しました" End Sub
動かしてみる
それでは実際に動かしてみます。ツールを開いてからファイル指定ボタンでデータ入力するサンプルファイルTest.accdbを指定します。サンプルファイルはテーブルが1つあります。氏名(テキスト型)、生年月日(日付型)、備考(メモ型)のフィールドを持っていますがデータは登録されていません。以下の様に入力して、入力決定ボタンを押してみてください。 サンプルファイルを確認してみましょう。Excelにファイルをドラッグアンドドロップして確認できます。以下の様に入力されていました。
氏名 | 生年月日 | 備考 |
---|---|---|
Tom | 2002/4/30 | Age 18 |
今回のプログラムとサンプルファイルは、以下からダウンロードできます。興味のある人は試してみてください。(サンプルなので実務には使用しないでください!!)
22_データ入力ツール③.zip - Google ドライブ
次回は入力規制
いかがでしょうか。これでデータ入力ができるようになりました。でも、何でも入力できればいいとは限りません。データ型によって、入力できるデータは限られます。たとえば、整数型のフィールドに文字列データは登録できません。次回はこの部分を工夫してみようと思います。お楽しみに!!