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で質問しましょう!
似たような質問が見つかりました
- JavaScript オブジェクトから任意のプロパティを全て抽出する一番簡単な方法 1 2023/08/09 21:13
- 会計ソフト・業務用ソフト エクセルです 2 2022/09/17 12:14
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- SQL Server 2つのSQL(Access)の結果[時刻,カウント数]を結合して集計する方法 1 2022/04/06 22:57
- Access(アクセス) Access VBAで条件を追加する(書き込む)場所 2 2022/03/23 12:05
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Access(アクセス) Accessクエリで年月フィールドを年のみで抽出する方法について 2 2022/08/29 18:10
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESS2010 フィルタ後のエクスポート
その他(Microsoft Office)
-
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
-
4
ACCESSでコントロールソースの変更
Access(アクセス)
-
5
Accessでのレコード存在チェック
その他(データベース)
-
6
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
7
ACCESS クエリの抽出条件を動的に変更したい。
その他(コンピューター・テクノロジー)
-
8
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
9
ACCESS クエリ→フォーム フィルターをかけたデータのみエクスポートしたい
Excel(エクセル)
-
10
access マクロでのフィルタの解除の方法
Access(アクセス)
-
11
フォームの値をクエリーに反映したい
その他(Microsoft Office)
-
12
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESSでクエリを作成したら「...
-
ACCESS クエリー 抽出条件が...
-
access・カウント結果がゼロで...
-
ユニオンクエリについて
-
「データベースまたはオブジェ...
-
SQLで優先順位が高いレコードを...
-
追加先の発見方法(SQL以外)
-
ACCESSにてフィールド間の最小...
-
ACCESS クエリで、グループ化...
-
SqlServer2012 ビューとクエリ
-
Access200のFilterとFindの違い
-
accessで選択クエリで得た全レ...
-
Accessで「クエリーが複雑すぎ...
-
ASでつけた名前はWHERE条件にで...
-
Accessのフィルタ検索でデータ...
-
ACCESSでデータ削除すると「読...
-
クエリで「データ型が一致しま...
-
ACCESSで2つのテーブル比較で...
-
テーブルに主キーを作らないデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS クエリで重複データを最...
-
ACCESS クエリで、グループ化...
-
ACCESSでクエリを作成したら「...
-
「データベースまたはオブジェ...
-
access・カウント結果がゼロで...
-
クエリで「データ型が一致しま...
-
ACCESSにてフィールド間の最小...
-
accessで選択クエリで得た全レ...
-
アクセスのスナップショット
-
ACCESS クエリー 抽出条件が...
-
追加先の発見方法(SQL以外)
-
ACCESSでデータ削除すると「読...
-
SQLで優先順位が高いレコードを...
-
ユニオンクエリについて
-
Accessで「クエリーが複雑すぎ...
-
アクセスでフォームが更新でき...
-
ACCESSで2つのテーブル比較で...
-
SqlServer2012 ビューとクエリ
-
ACCESS のクエリー実行に異常に...
-
Accessのクロス集計クエリから...
おすすめ情報