Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6156 / 9994 ←次へ | 前へ→

【7046】Re:フォームからテーブル操作について
お礼  inu  - 06/1/10(火) 15:51 -

引用なし
パスワード
   ▼小僧 さん:
>▼inu さん:
>
>>なにか効率の良い書き方があればアドバイスして頂けると幸いです
>
>前提条件として、文書管理台帳のフィールド名が
>フォームと同じ順序で並んでいる必要があります。
>
>Option Compare Database
>Option Explicit
>
>Dim CName(1 To 10) As String
>Private Sub Form_Load()
>  CName(1) = "Mgt"
>  CName(2) = "Namea"
>  CName(3) = "RevNum"
>  CName(4) = "Make"
>  CName(5) = "Ena"
>  CName(6) = "Last"
>  CName(7) = "LastDate"
>  CName(8) = "Term"
>  CName(9) = "Abo"
>  CName(10) = "AboDate"
>  Me.フレーム38.value = 1
>End Sub
>
>'-------------------------------------------------------------------
>Private Sub B_DocSearch_Click() '検索ボタン
>Dim strSQL As String
>Dim RS As New ADODB.Recordset
>Dim X As String       'OR のオプション値が1の場合です
>Dim i As Long
>  
>  If Me.フレーム38.value = 1 Then
>    X = "OR"
>  Else
>    X = "AND"
>  End If
>   
>  RS.Open "SELECT * FROM 文書管理台帳", CurrentProject.Connection
>  For i = 1 To 10
>    If Not IsNull(Me.Controls(CName(i))) Then
>      strSQL = strSQL & " " & X & " " & _
>      RS(i - 1).Name & "='" & Me.Controls(CName(i)).value & "'"
>    End If
>  Next
>  RS.Close: Set RS = Nothing
>  If strSQL = "" Then
>    Me.リスト0.RowSource = "文書管理台帳"
>  Else
>    strSQL = Mid(strSQL, InStr(2, strSQL, " ") + 1)
>    Me.リスト0.RowSource = "SELECT * FROM 文書管理台帳 WHERE " & strSQL
>  End If
>  Me.リスト0.Requery
>End Sub
>
>'-------------------------------------------------------------------
>Private Sub B_FormExit_Click() '終了ボタン
>  DoCmd.Close
>End Sub
>
>'-------------------------------------------------------------------
>Private Sub コマンド32_Click() 'クリアボタン
>Dim i As Long
>  For i = 1 To 10
>    Me.Controls(CName(i)).Value = ""
>  Next
>
>  Me.リスト0.RowSource = "SELECT * FROM 文書管理台帳"
>  Me.Requery
>End Sub
>
>'-------------------------------------------------------------------
>Private Sub 印刷プレビュー_Click() '印刷プレビューボタン
>Dim strSource As String
>Dim strWhere As String
>  
>  strSource = Me.リスト0.RowSource
>  If InStr(1, strSource, "WHERE") = 0 Then
>    strWhere = ""
>  Else
>    strWhere = Mid(strSource, InStr(1, strSource, "WHERE") + 6)
>  End If
>  Debug.Print strWhere
>  DoCmd.OpenReport "R_null", acViewPreview, WhereCondition:=strWhere
>End Sub
>
>
>・コントロールの配列化
>   コントロールに規則的な名前を持たせるとループ処理が可能です。
>   今回は規則性がなかったので、FormLoad時に変数に入れてみました。
>
>・クエリを作らない
>   リストボックスの値集合ソースにはテーブル名やクエリ名だけでなく
>   SQL文を直接指定できます。
>
>・レポートは1種類で
>    OpenReportメソッド の WhereCondition を利用してフィルタを掛け、
>    リストボックスに表示されている情報に合わせてレポートを表示させてみました。

小僧さんアドバイスありがとうございます。
小僧さんの下さったヒントを元に試してみますね。
356 hits

【7034】フォームからテーブル操作について inu 06/1/6(金) 15:25 質問
【7043】Re:フォームからテーブル操作について 小僧 06/1/10(火) 10:57 発言
【7044】Re:フォームからテーブル操作について 小僧 06/1/10(火) 11:09 回答
【7046】Re:フォームからテーブル操作について inu 06/1/10(火) 15:51 お礼
【7050】Re:フォームからテーブル操作について inu 06/1/11(水) 9:48 質問
【7058】Re:フォームからテーブル操作について 小僧 06/1/11(水) 11:55 発言

6156 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free