パソコン情報

【Access】テキストに載ってない便利Tips5選

複数テキストボックスのNull確認

 

未入力を防止するための処理になるかもしれません。

 

 

'一つでもNullがあったら警告

If IsNull(Me.txt1 + Me.txt2 + Me.txt3) Then
MsgBox "txt1, txt2, txt3 はすべて入力必須です"
End If

 

'すぺてNullだったら警告
If IsNull(Me.txt1 & Me.txt2 & Me.txt3) Then
MsgBox "txt1, txt2, txt3 の中で一つ以上は入力してください"
End If

 

 

 

すべてのテキストボックスを空欄にする

fa-code

特定のテキストボックスの値をクリアするには、そのテキストボックスのValueプロパティにNullを代入します。

一方、特定のテキストボックスではなく、とにかくフォーム内のすべてのテキストボックスをクリアしたいといった場合には、

Controls」コレクション内を探索して、"コントロールの種類(ControlTypeプロパティ)がテキストボックスコントロールならNullを代入する"というプログラムで実現することができます。

 

この方法は、特定のコントロール名を指定していないために、デザイン上でテキストボックスが増えたり減ったりしても、あるいは名前が変わったりしても、プログラムを書き換える必要がないというメリットがあります。

 

 

[php] Private Sub cmdClear_Click() '[クリア]ボタンクリック時 Dim ctl As Control On Error Resume Next 'このフォーム内のすべてのコントロールを検索 For Each ctl In Me.Controls With ctl If .ControlType = acTextBox Then 'コントロールの種類がテキストボックスなら値をNull(空)に設定 .Value = Null End If End With Next ctl End Sub [/php]

CSVファイル出力

 

CSV出力をするサンプルコード

以下のようなコードで、「tbl_在庫」というテーブルを、Cドライブの「temp」フォルダーに、「在庫_20150206.csv」のようなファイル名で出力することができます。

 

 

[php] Sub CSVエクスポート()  DoCmd.TransferText _   TransferType:=acExportDelim, _   TableName:="tbl_在庫", _   FileName:="C:\temp\在庫_" & Format(Date, "yyyymmdd") & ".csv" End Sub [/php]

 

 

改行コードとか、カンマ区切りなどの指定は、エクスポート定義を作成して設定

 

 

 

再クエリでレコードが先頭に移動してしまう

 

レコードをフォームにしてあると、そのレコードを更新したりして、下記のコマンドを使うと、レコードが先頭に移動してしまい、再度検索をしなければならないこともある。

DoCmd.ShowAllRecords

Me.Requery

DoCmd.RunCommand acCmdRefresh

 

 

Dim fg As String
fg = Me!call_MNO  ※fgにキーを記憶させている。

 

DoCmd.ShowAllRecords  ※レコード保存して、下記で元のレコードに戻している。

 

Me.Recordset.FindFirst "SELECT * FROM Sample_table WHERE NO = " & fg & ""


か下記のVBAになる。

なぜか、上のVBAだとエラーになる時があったので、下記にしたらエラーが消えた。


DoCmd.SearchForRecord , , acFirst, "NO = " & fg & ""

 

 

 

別フォームのVBAを呼び出す

 

 

処理するホーム test
別のフォーム  bets

別フォームのVBAを

Private Sub sample_click()
end sub


Public Function sample_click()
End Function

※exit sub が自動で、exit function に変わる。

 

呼び出す方法は、testフォーム内のVBAに、

 

Forms!betsu.sample_click

 

とやれば、別のフォームのVBAを動かすことができた。