
No.3ベストアンサー
- 回答日時:
#2です。
#2に長々と書いてしまったが、質問はFilterにかんしてっだったのでPrivate Sub test10()
On Error GoTo Err_cmdKensaku_Click
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim mSQL As String
Dim stLinkCriteria As String
Dim varBegin As Variant
Dim varEnd As Variant
' varBegin = Me.txtBigin
' varEnd = Me.txtEnd
Set db = CurrentDb
mSQL = "SELECT ID,氏名,勝回数 from テーブル1 WHERE 氏名='山田';"
Set rs = db.OpenRecordset(mSQL, dbOpenDynaset)
stLinkCriteria = "勝回数 > 3 "
rs.Filter = stLinkCriteria
Set rs = rs.OpenRecordset()
If rs.EOF Then
MsgBox "条件に一致するレコードは抽出できませんでした。"
Else
Do Until rs.EOF
MsgBox rs!ID & rs!氏名 & rs!勝回数
rs.MoveNext
Loop
End If
Exit_cmdKensaku_Click:
Exit Sub
Err_cmdKensaku_Click:
MsgBox Err.Description
Resume Exit_cmdKensaku_Click
End Sub
をご参考に。
参照設定で、DAO(Microsoft 3.6 DAO Libraryなど)を必ず設定のこと。
#2の例でテスト済み。
No.2
- 回答日時:
(1)アクセスの普通の例
1レコードづつ受け取って(レコード処理、アクセス特有の処理)、下記のMsgboxのところで、自分のしたい処理をする。
Sub test08()
Dim strSQL As String
strSQL = "SELECT ID,氏名,勝回数 from テーブル1 WHERE 氏名='山田';"
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim retText As String
Set cnn = CurrentProject.Connection
With cnn
.Errors.Clear
.BeginTrans
Set rst = .Execute(strSQL)
rst.MoveFirst
While Not rst.EOF
MsgBox rst.Fields(0) & rst.Fields(1) & rst.Fields(2)
rst.MoveNext
Wend
End With
End Sub
この処理の段階でIF文で篩(ふるい)にかける。
しかし普通はこんなことは行われないでしょう。初めにSQL文作成の段階で条件を追加したら済むことだから。
ーーー
ほかの方法に
(2)アクセスのクエリを作成する。クエリはテーブルとほとんど
同じ処理をさせてくれる。中間的にクエリを一旦つくり
(A)そのあと、そのクエリを対象に、条件Xで選択クエリを実行する。
(B)もうひとつそのクエリを対象に、条件Yで選択クエリを実行する
FilterはFormのプロパティなので、選択にVBAで無理して使うかどうかは別でしょう。
これで質問の意図が達せられるのではないですか。
そのやり方は
Sub test07()
' Dim dbs As Database
Dim strSQL As String
Dim strQueryName As String
' Dim qryDef As ADO.QueryDef
On Error Resume Next
Set dbs = CurrentDb
strQueryName = "氏名選択2"
dbs.Delete strQueryName
dbs.QueryDefs.Delete strQueryName
strSQL = "SELECT 氏名,ID from テーブル1 WHERE 氏名='山田';"
'----
Set qryDef = dbs.CreateQueryDef(strQueryName, strSQL)
End Sub
両モジュールは一応30レコード(行)ほどの簡単下記データで実行確認済み
ID氏名勝回数
1山田2
2大川1
3東山3
4植山2
5近藤1
6今田5
7山田6
8岸田6
9岡野1
10野上0
11菊川6
12和田7
13江上4
14団0
15山田1
16来島3
17山田12
18佐藤2
19辻9
20桐山6
21江嶋5
22銀野7
23竹田2
24山田1
25高地0
26荒川0
27芳田0
28山田12
29杉本2
30ジョンソン7
31李4
No.1
- 回答日時:
まあ、意味があるかどうかが疑問ですが不可能ではありません。
<Test>
ID Field_1
1 110
2 220
3 330
Private Sub コマンド0_Click()
Dim strDatas As String
strDatas = CnnExecute2("SELECT * FROM TEST", "ID=2")
Debug.Print strDatas
End Sub
[イミディエイト]
2;220;
次のCnnExecute2 関数は、SQL文 "SELECT * FROM TEST" の実行結果を更にフィルターしています。
結果として、'ID=2' の列のみの取得しているので成功しているということです。
意味があるかどうかが疑問とは、"SELECT * FROM TEST WHERE ID=2" とすればいいからです。
なお、CnnExecute2 は、ErrMessage 関数がないと動作しません。
Public Function CnnExecute2(ByVal strSQL As String, ByVal strFilter As String) As String
On Error GoTo Err_CnnExecute2
Dim I As Integer
Dim N As Integer
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim retText As String
Set cnn = CurrentProject.Connection
With cnn
.Errors.Clear
.BeginTrans
Set rst = .Execute(strSQL)
rst.Filter = strFilter
.CommitTrans
If Not rst.BOF Then
N = rst.Fields.Count - 1
rst.MoveFirst
For I = 0 To N
retText = retText & rst.Fields(I) & ";"
Next I
End If
End With
Exit_CnnExecute2:
On Error Resume Next
cnn.Close
Set cnn = Nothing
CnnExecute2 = retText
Exit Function
Err_CnnExecute2:
If cnn.Errors.Count > 0 Then
ErrMessage cnn.Errors(0), strSQL
cnn.RollbackTrans
Else
MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute2)", _
vbExclamation, " 関数エラーメッセージ"
End If
Resume Exit_CnnExecute2
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
-
アクセスVBAで、フォームの値をレポートに代入したい
Access(アクセス)
-
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
-
4
access マクロでのフィルタの解除の方法
Access(アクセス)
-
5
ACCESSでfilterとorderbyについて
その他(データベース)
-
6
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
7
accessvba 複数条件でFilterをしたい
Access(アクセス)
-
8
ACCESS クエリで重複データを最新の1件だけ表示
Access(アクセス)
-
9
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
access・カウント結果がゼロで...
-
Accessで「クエリーが複雑すぎ...
-
クエリで「データ型が一致しま...
-
ACCESS クエリで、グループ化...
-
ユニオンクエリについて
-
マイクロソフトAccessでsqlのas...
-
ACCESSでクエリを作成したら「...
-
アクセスでフォームが更新でき...
-
SQLです教えてくださいお願いし...
-
access:連続データ入力
-
Accessのフィルタ検索でデータ...
-
AccessのクエリをSqlサーバーの...
-
access SQLの抽出結果をFilter...
-
ACCESSにてフィールド間の最小...
-
追加先の発見方法(SQL以外)
-
ACCESSでデータ削除すると「読...
-
SqlServer2012 ビューとクエリ
-
Access VBA内でのクエリの紐付け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
「データベースまたはオブジェ...
-
ACCESSでクエリを作成したら「...
-
ACCESSにてフィールド間の最小...
-
access・カウント結果がゼロで...
-
ACCESS クエリで、グループ化...
-
SqlServer2012 ビューとクエリ
-
access:連続データ入力
-
追加先の発見方法(SQL以外)
-
AccessのクエリをSqlサーバーの...
-
AccessでのDISTINCTROW 、DISTI...
-
SQLで優先順位が高いレコードを...
-
ACCESSで2つのテーブル比較で...
-
accessで選択クエリで得た全レ...
-
クエリで「データ型が一致しま...
-
Access200のFilterとFindの違い
-
マイクロソフトAccessでsqlのas...
-
ACCESSでデータ削除すると「読...
-
ACCESSでデータの追加は?
-
ACCESS クエリー 抽出条件が...
おすすめ情報