2011-03-03 5 views
2

埋め込みアクセスvbエディタの助けを借りて、私は自分のデータベースのフィールド値を分析するための小さなコードを書いており、最終的にオープンされたアクセス内のテーブルのレコードセットを表示したいと考えています。初心者として私はフィールド名を表示するためにDebug.Printを使用することしかできません。あなたの誰かが、結果レコードセットを値で表示するために、どのSQL文を実行できるのかを私に教えてください。ここでvbaを使用してアクセステーブルのレコードセットを表示するにはどうすればよいですか?

Debug.Print FinalSQLString 
+0

データシートフォームを使用してSQLステートメントをそのRecordSourceプロパティに割り当てることはできません。なぜデータを扱うためにレコードセットを開く必要があると思いますか?そうすることは、アクセスを完全に誤っており、あなた自身のために物事をもっと困難にすることです。 –

+0

アクセスは物事を難しくすることもできます:http://stackoverflow.com/questions/5663918/how-to-stop-ms-access-to-change-my-sql-code –

答えて

2

私の知る限りでは、VBAを含むデータシートを表示する方法はありませんレコードセットのインスタンスレコードセットのソースがstrQSLをされている場合は、しかし、それをあなたの結果でテーブルを作成し、その1を開く、またはそれ以上のエレガントに、クエリ定義を作成して開くことができます:あなたは、物事を表示するに焦点を当てた場合

Sub ShowQd(strQdName As String, strSql As String) 
'creates queryDef and display it in a datasheet' 
    Dim qd As DAO.QueryDef 

    Set qd = CurrentDb.CreateQueryDef(strQdName) 
    With qd 
     .ReturnsRecords = True 
     .SQL = strSql 
    End With 
    DoCmd.OpenQuery strQdName 
End Sub 

、あなたは可能性ListBoxをフォームに配置し、その列の数をクエリによって返されたフィールドの数(qd.Fields.Count)に設定し、strSqlをListBoxのRowSourceとして設定します。 AND ...あなたが関連するすべてのコードをそのフォームに置くと、任意のデータベースにインポートして、すばやく表示できるフォームが作成されます。
幸いです!

+0

ありがとう!それは動作します:-) – JohnMunich

+0

ようこそ。しかし、rskarの最終版は私よりも優れています。 –

+0

フォームはA2000に割り当て可能なRecordsetプロパティがあるので、実際にはレコードセットを開いてデータシートフォームを開き、データシートフォームのレコードセットをコードで開いたレコードセットに設定することができます。私が別のコメントで述べたように、データシートフォームのRecordsourceプロパティを割り当てるのではなく、その中にユーティリティがあるケースはほとんどありませんが、実際には可能です。私が考えることができる唯一の実際の使用は、切断されたレコードセットまたは合成レコードセットを表示することです。 –

6

は、基本的なレシピです:

Dim db As Database 
Dim rs As Recordset 

Set db = CurrentDb 
Set rs = db.OpenRecordset("SELECT * FROM myTable") 

は、Accessでジェットデータアクセスオブジェクト(DAO)を使用していることを知っている - 詳細については、それをグーグル。

(rs.BOF and rs.EOF) = Trueは、行がないことを示します。

rs.MoveFirst,rs.MoveNextを使用すると、最初と次の行に移動します。 rs.MoveNextの後にrs.EOFを試験する。 Trueの場合、最後の行はすでに処理されていました。

rs(FieldName)は、FieldName(文字列式)という名前の列の値を返します。

rs(1)は、2番目の列の値を返します。

完了したとき、rs.Close


RecordSetにアクセスし、データシートビューで表示する方法はありません。代わりに、クエリ定義オブジェクトを作成し、クエリを実行し、結果のデータシートビューを表示するためにそれを使用する必要があります:

Dim qd As QueryDef 

On Error Resume Next 
CurrentDb.QueryDefs.Delete "temp" 
On Error GoTo 0 

Set qd = db.CreateQueryDef("temp", "SELECT * FROM myTable") 

DoCmd.OpenQuery "temp", acViewNormal, acEdit 
+0

@rskar説明をありがとう。どのvbコマンド/スクリプトで "SELECT * FROM myTable"のようなクエリの結果を表示できますか? – JohnMunich

+0

ああ - データシートを開くためのアクセスが必要なのですか? – rskar

+0

@rskar正確、どのように? – JohnMunich