データベース

【Access】レコードセットをフォームのソースにする(SQLの検索キーが数値型の場合)

過去に、マイクロソフトデータベースアクセス(以下Access)にて、テーブルからデータを抽出して、フォームのレコードセットにする方法をブログにしたことがあります。

【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」なども入れましたので、ちょっとコードが長くなりました。

 

-データベース
-, , , , ,

Translate »

© 2022 PCTips