スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MSAccess:パススルークエリの実行

MSAccessで、雛型パススルークエリを作っておき、そのSQL文をVBAで書き換えて使うといった使用。
SQLServerとかでマクロみたいなものを書けばそれで全然用が足りるのだが、SQLServerの使い方を全く知らず、単にデータベースとしてしか使っていない私みたいな人向けです。

【雛型クエリの作成】
パススルークエリをひとつ雛型で作っておく。
※ ODBCの接続設定をしておくことを忘れずに。ちなみに、クエリをデザインモードで開き、“プロパティ”画面を出すと、ODBC接続文字列が設定できる。

記載例:ODBC;dsn=MyDatabase;

【VBAでの記載例】
Sub usePassThroughQuery(sql As String)
'QueryDefオブジェクトでデータ更新
Dim qdf As QueryDef

Set qdf = CurrentDb.QueryDefs("Q_パススルー雛型")
qdf.sql = sql

qdf.Execute
qdf.Close
End Sub

スポンサーサイト

VBAでSQL結果を使う

Dim objDB
Dim objRS
dim freq as long

'DBオブジェクトを作ります
Set objDB = CurrentDb
Set objRS = objDB.OpenRecordset("sql文")
freq = objRS("変数名")

『ファイルを開く』ダイアログを使う



Function GetFileName_Dlg()

Const ENABLE_WIZHOOK = 51488399
Const DISABLE_WIZHOOK = 0
Dim strFile As String
Dim intResult As Integer
WizHook.Key = ENABLE_WIZHOOK ' WizHook 有効化
intResult = WizHook.GetFileName( _
0, "", "", "", strFile, CurrentProject.Path, _
"CSV (カンマ区切り) (*.csv)|*.csv|すべてのファイル (*.*)|*.csv", _
0, 0, 0, True _
)
WizHook.Key = DISABLE_WIZHOOK ' WizHook 無効化
TestGetFileName = strFile

End Function

Accessで確認メッセージを消す

DoCmd.SetWarnings False

VBAに、テーブルからデータを取得

Dim currs() As String, n As Integer
Dim adoCON As ADODB.Connection
Dim adoRS As ADODB.Recordset

'DBへの接続
Set adoCON = Application.CurrentProject.Connection
Set adoRS = adoCON.Execute("select * from Currencies")

n = 0
'最終レコードまで順読み込みを行う
Do Until adoRS.EOF = True
ReDim Preserve currs(n)
currs(n) = adoRS("Currency") 'DBより情報取得(Currencyは項目名)

adoRS.MoveNext 'レコードの順読み
n = n + 1
Loop

'後処理
adoRS.Close
adoCON.Close
Set adoRS = Nothing
Set adoCON = Nothing


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。