概要 ADO で昔からよく使われる常套手段です。 件数が多いと結構時間がかかるので、そのような処理には向いていません。現在のレコードを同様のフォーマットのログテーブル等へコピーするような一回に数十件の処理に向いています ▼ 販売管理B( hanbaib.zip )ODBC ドライバを SQLite ODBC Driver からダウンロードしてこのデータを使って、VBScript を実行(DBのパスはご自分の環境に合わせて正しく変更して下さい)するだけで、SQLite3 のデータベースを作成する事ができます。 表名と列名を日本語のままでも作成して、SQL でアクセスできますが、ADO を使ってテーブル名を取得すると化けるので英数字に変更しています。作成後は、ODBCアドミニストレータで DSN を作成すれば、一般的な ODBC 経由のソフトウェアでアクセスが可能になります。 ▼ 重要
SQLite ODBC Driver は、VBScript 上の SHIFT_JIS 環境から実行して、SQLite 内に UTF-8 のデータを保存します。VBScript(SHIFT_JIS) からの ADO の通常テーブルアクセスは正しく変換して実行してくれますが、ADO の OpenSchema経由で表名や列名を取得しようとすると、SHIFT_JIS へ戻さないというバグがあります。内部確認用ツール VBScript + ADO : 汎用CSV出力 ▼ DSN 登録出力結果
kubun,code,name,num1,num2,create_date,update_date 1,0,男,10,10,2004/05/05,2004/05/05 1,1,女,11,12,2004/05/05,2004/05/05 2,0001,営業部第一,0,0,2004/05/05,2004/05/05 2,0002,営業部第ニ,0,0,2004/05/05,2004/05/05 2,0003,営業部第三,0,0,2004/05/05,2004/05/05 3,0,通常,0,0,2004/06/23,2004/06/23 3,1,特別,0,0,2004/06/23,2004/06/23 4,0,通常,0,0,2004/06/23,2004/06/23 4,1,特別,0,0,2004/06/23,2004/06/23 5,A,食品,0,0,2004/06/23,2004/06/23 5,B,装飾,0,0,2004/06/23,2004/06/23 5,D,衣類,0,0,2004/06/23,2004/06/23 5,G,娯楽,0,0,2004/06/23,2004/06/23 5,K,家庭一般,0,0,2004/06/23,2004/06/23 5,M,薬,0,0,2004/06/23,2004/06/23 5,P,パソコン,0,0,2004/06/23,2004/06/23 5,Z,雑貨,0,0,2004/06/23,2004/06/23
' 使用する ODBC ドライバです
strDriver = "{SQLite3 ODBC Driver}"
' ************************************************
' 処理用文字列設定
' ************************************************
' MDB の接続文字列
strConnectMdb = _
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\user\lightbox\sqlite3\hanbaib\販売管理B.mdb;"
strConnectSQLite3 = _
"Provider=MSDASQL;Driver="&strDriver&";DATABASE=C:\user\lightbox\sqlite3\hanbaib\db1.sqlite3;"
' ************************************************
' 初期処理
' ************************************************
Set Cn = CreateObject("ADODB.Connection")
Cn.CursorLocation = 3
Set Rs = CreateObject( "ADODB.Recordset" )
Set Cn2 = CreateObject("ADODB.Connection")
Cn2.CursorLocation = 3
Set Rs2 = CreateObject( "ADODB.Recordset" )
Rs2.LockType = 3 ' 更新用レコードセット
Cn.Open strConnectMdb
Cn2.Open strConnectSQLite3
' ************************************************
' コード名称マスタ
' ************************************************
Query = _
"create table code_name (" & _
" kubun INT" & _
" ,code VARCHAR(10)" & _
" ,name NVARCHAR(50)" & _
" ,num1 INT" & _
" ,num2 INT" & _
" ,create_date DATETIME" & _
" ,update_date DATETIME" & _
" ,primary key(kubun,code)" & _
")"
Call SSTransfer( "code_name", Query )
' ************************************************
' 終了
' ************************************************
Cn2.Close
Cn.Close
Wscript.Echo "処理が終了しました"
' ************************************************
' SQLLite 転送
' ************************************************
function SSTransfer( strTable, QueryCreate )
Wscript.Echo strTable & " の作成を開始します"
Dim Query
' まず既存テーブルを削除
Query = "drop table " & strTable
RunSS( Query )
' CREATE 文でテーブル作成
RunSS( QueryCreate )
' MDB 側はすべてのレコード
' SQLite 側は空
Query = "select * from " & strTable
Rs.Open "select * from コード名称マスタ", Cn
Rs2.Open Query, Cn2
' フィールド数
nCount = Rs.Fields.Count
Do While not Rs.EOF
' SQLite 側に新しいレコードバッファを作成
Rs2.AddNew
' 同一フォーマットなのでフィールド番号でループ
For I = 0 to nCount - 1
' 対応するデータを MDB から SQLite へコピー
Rs2.Fields(I).Value = Rs.Fields(I).value
Next
' SQLite の更新
Rs2.Update
' MDB を次のレコードへ
Rs.MoveNext
Loop
' レコードセットを閉じる
Rs2.Close
Rs.Close
Wscript.Echo strTable & " の作成が終了しました"
end function
' ************************************************
' SQLLite 実行
' ************************************************
function RunSS( Query )
on error resume next
Cn2.Execute Query
if Err.Number <> 0 then
Wscript.Echo Err.Description
end if
on error goto 0
end function
以下は簡単に更新する為に SQLの窓 Build C++ を使っての手順です。 Excel の接続ダイアログ DSN を作成した後、Excel の接続ダイアログにある『他のDSN』に入力します。更新用のキーを設定 テーブル名をダブルクリックすると、データ処理用のウインドウが開くので更新用のキーを設定します。この処理では、ODBC 一般用なので、ウインドウを開くたびにキーの設定がその都度必要です。
入力した後更新できます
関連する記事
VBScriptドキュメント
|
|
【VBS + ADOの最新記事】
- VBScript : Oracle Database Express Edition 11g Release 2 に MDB(販売管理C) のデータをインポートする
- VBScript : PostgreSQL(9.3.4) に MDB(販売管理C) のデータをインポートする
- VBscript : 新しい Mictrosoft Access(2007以降)へ、古い MDB からデータを移行する
- VBScript : 古い Access2003 までのデータベース作成と新しい Access2007 以降のデータベース作成
- VBScript : ADO で Excel2007(Excel 2010、Excel 2013) にアクセスする( シートをテーブルとして読み込む )
- VBScript : Micrsoft Access 経由で、SQLServer のテーブルのデータを Excel にエクスポートする方法
- VBScript : ADO を使用して、MDB(Access2003) のデータを SQLite ODBC Driver で sqlite3(UTF-8) を作成
- VBScript : ADO経由の一時PL/SQL でエクスポートを実行する(Data Pump Export)
【VBScript関連のカテゴリ】



出力結果
更新用のキーを設定
テーブル名をダブルクリックすると、データ処理用のウインドウが開くので更新用のキーを設定します。この処理では、ODBC 一般用なので、ウインドウを開くたびにキーの設定がその都度必要です。
入力した後更新できます
関連する記事




