ADODBを使用したExcel VBAで、小計を使用してデータベースにアクセスする
<スパン Oracleデータベースへの接続
Set cnn = CreateObject("ADODB.Connection")
cnn.Open "プロバイダ=msdaora;データソース=dl580;ユーザID=emssxjk;パスワード=emssxjk;"を開きます。
dl580は、tnsnames.oraで設定されたサービス名です。
▲レコードセットの作成 レコードセット
セットrst = CreateObject("ADODB.Recordset")
sqls = "select * from tb_city"
セットrst = cnn.Execute(sqls)を実行します。
ここでのSQL文は、クエリのselectの他に、insert, update, delete, truncate tableなどのコマンドで実行することができます。これらのSQL文は、コマンドオブジェクトでも実行でき、プロシージャの呼び出しやパラメータの受け渡しも可能です。
レコードセット結果の引用
<スパン Excel VBAでは、ADO経由でデータを取得した後、以下のような参照になります(レコードセット名はrstとする)。
1. フィールド数:rst.fields.count.
2, フィールド名: rst.fields(0).name, 0は最初のフィールド、他のフィールドは1,2,...を意味します。. rst.fields.count-1です。
3. フィールド値: rst(0) または rst(0).Value または rst.fields(0).value, ここで 0 は最初のフィールドを意味し、代わりにフィールド名、例えば rst("city") を使うこともできます。
4.レコードセット全体。Range("a2").CopyFromRecordset rst コマンドは、セル A2 から始まるワークシートにレコードセットを保存します。
5。レコードの移動:最初に配置されたレコードの数をフェッチした後、rst.movenextは、次の終了フラグに移動することができます:rst.eof = trueは、Excel VBAのみ(rst.movenext)前方移動をサポートしています。
6、RecordCountは:rst.RecordCountは、フィードバックレコード数ですが、VBAで、常にフィードバック-1、しかし、あなたはrst.eofによると、クエリの結果があるかどうかを判断することができますrst.eof = trueは、クエリの結果が空であることを意味する場合。
▲ ストアドプロシージャを呼び出す
1. 前回と同様に、データベースに接続します。
2、ストアドプロシージャを定義する
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cnn
cmd.CommandText = "zfqf_bag2mail" '2つのパラメータを持つストアドプロシージャ名
cmd.CommandType = adCmdStoredProc
3. パラメータの割り当て
cmd.Parameters(0).Value = Cells(row1, pos_acc)
cmd.Parameters(1).Value = Cells(row1, pos_lab)
4. ストアドプロシージャを実行する
cmd.Executeを実行します。
このプロシージャの結果は、テーブルに保存され、変更によって返されないクエリ文によって結果が得られます。
サンプルリンクです。
Sub InputData()
Dim cn As New ADODB.
Dim rs As New ADODB.
Dim cnStr As
String
, sqlStr As
String
Dim datarg
cnStr =
"Provider=SQLOLEDB.1;Persist Security Info=True;User ID=[LoginName];Password=[password]@;Initial Catalog=[DBName];Data Source=[IP] ;Connect Timeout=720;"
sqlStr = ThisWorkbook.Worksheets(
"Parameters"
). [B2] '
// store SQL statements
cn.Open cnStr
ThisWorkbook.Worksheets(
2
). [a2].CopyFromRecordset ConnectRst(cn, sqlStr)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例