過去に、マイクロソフトデータベースアクセス(以下Access)にて、テーブルからデータを抽出して、フォームのレコードセットにする方法をブログにしたことがあります。
グローバル変数で抽出しレコードソースにする
今回も、ログイン後に
ココがポイント
ログインIDをグローバル変数としてデータを抽出しフォームのレコードソース
にしようとしました。
前回は、検索キーがテキスト型だったのですが、今回は、グローバル変数の数値型になります。
テキストが検索キーの場合は、下記のようになりますが、
.Source = "SELECT * FROM Vew_order WHERE arrange_date ='" & arrange_date_no & "'"
カンマやダブルコーテーションの違いだと思いますが、エラーになって思ったレコードソースになってくれません。
グローバル変数を使ったからダメだったのか?などと時間が経過するばかりでした。
やっぱり原因は、カンマやダブルコーテーションでした。
.Source = "SELECT * FROM Clearing_data WHERE ID =" & GID '"
これでうまくいきました!
あとあと下記でもちゃんと抽出するようになりました???
.Source = "SELECT * FROM Clearing_data WHERE ID =" & GID
そして、フォームを開いたときに、数値型のグローバル変数(ログイン時にID記憶)にて抽出されたレコードが、フォームのレコードソースとなりました。
Private Sub Form_Open(Cancel As Integer) Dim cn As ADODB.Connection Dim rs As ADODB.Recordset On Error GoTo Err_Handler Set cn = CurrentProject.AccessConnection Set rs = New ADODB.Recordset With rs Set .ActiveConnection = cn .Source = "SELECT * FROM Clearing_data WHERE ID =" & GID .LockType = adLockOptimistic .CursorType = adOpenKeyset .Open End With Set Me.Recordset = rs rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing ExitErr_Handler: Exit Sub Err_Handler: MsgBox "エラー: " & Err.Description rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub
日付で並び替え
更に、日付で並び替えする方法で苦労しました。
下記の様なコードにすれば並び替えも可能になりました。
.Source = "SELECT * FROM Clearing_data WHERE ID =" & GID & " ORDER BY 月日 DESC"
日付の期間で抽出
更に、開始日と終了日にて、期間で抽出する機能を実装しました。
.Source = "SELECT * FROM Clearing_data WHERE ID =" & GID & " AND 月日 Between #" & Me!date_start & "# AND #" & Me!date_end & "#" & " ORDER BY 月日 DESC"
「& "」でくっつけていけばいいようですが、慣れてないと何かとエラーがでるものです。
「AND」なども入れましたので、ちょっとコードが長くなりました。