- ベストアンサー
データ件数を表示する方法とは?
- ACCESS97テーブルにTXTFILEをインポートして、目的の文字列がフィールドにあるかを確認し、データ件数を表示するコードを試していますが、他の文字列の分も表示されてしまいます。
- フォームにフォーカスを移し、ファイルが選択されていない場合はエラーメッセージを表示し、目的のファイル名を取得します。
- 取得したファイルをテキストファイルとしてコピーし、ACCESS97にインポートします。その後、特定の条件に一致するレコードの件数をカウントして表示します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
あまり細かいことは言いたくないのですが、前半部分のコードが冗長です。要件を整理し、簡潔なコードを書くように努力された方がよいと思います。(手を抜く、という意味ではありません) > そのコードを試したところ他の文字列の分も表示されてしまいます。 その原因は下記の箇所にあります。 Do Until Rs.EOF If Rs.Fields("発注者コード").Value = "1013405" Then i = Rs.RecordCount '※ End If Rs.MoveNext Loop ※ 部分にブレークポイントを設定し、以降をステップ実行してみましょう。 一例ですが、下記の修正例を参考になさってみてください。 [ 添削例 ] Private Sub Cmd_KensuuHyouji_Click() Set G_CurrentDB = CurrentDb() '←グローバル変数の使用は如何なものかと・・・。 Set Rs = G_CurrentDB.OpenRecordset("Table") ' ← ORDER BY 句がないので、並び順の保証がありません。 'エラー回避 If Len(Trim$("" & Text1.Value)) = 0 Then Beep Call MsgBox("ファイルを選択してからクリックしてください", vbOKOnly + vbCritical, "確認") Text1.SetFocus Exit Sub End If 'ファイル名の左12桁が目的のファイル名なら変数にファイル名をセット If Left$(Text1.Value, 12) = "1013405_0502" Then ' ↑ 'この部分はハードコーディングではなく、定数かテーブルで定義した方がよいでしょう。 'GetFileName変数にText1の値をセット ' ↑ 変数名に動詞は使用しない方がよい。(「Get」はプロパティ値などを取得する ' メソッド名の先頭に付けるのが一般的な命名) GetFileName = Text1.Value End If 'ファイルをテキストファイルとしてコピーする FileCopy PathName & GetFileName, PCstPath & "MSCT.TXT" ' ↑ 'このファイル名もハードコーディングではなく、定数で定義した方がよい。 'テキストファイルをMSACCESS97にインポートする DoCmd.TransferText acImportDelim, _ "インポート定義", _ "Table", _ PCstPath & "MSCT.TXT", _ True Rs.FindFirst "発注者コード = " & Left$(GetFileName, 7) Beep If Rs.NoMatch Then Call MsgBox("該当するレコードはありません。", vbExclamation, "確認") Else Call MsgBox("データ件数は" _ & Space$(1) & CStr(Rs.AbsolutePosition) & Space$(1) _ & "件です", vbInformation, "確認") End If Rs.Close G_CurrentDB.Close Set Rs = Nothing Set G_CurrentDB = Nothing End Sub
お礼
こんばんは、nanashinogombeiさん、回答頂きありがとうございます。