ASP,VBSでAccessデータベース操作 SQL文でデータをAccessへ上書き(INSERT DELETE)。

SQL文のINSERT INTO、DELETEを使用して、同じ値がある場所は上書き実行する。

ASPのSQL文でAccessへ書き込み、読み込みができたので、データの中で日付が同じだったら上書き実行するプログラムを作成する。

今回はINSERT INTO、DELETEを使用する。

SQLを実行する部分は下記となる。
ASPを動かす全てのソースはこちらからダウンロードしてください。

strtmp=Split(str,chr(10))
Set db=Server.CreateObject("ADODB.Connection")
db.Provider="Microsoft.Jet.OLEDB.4.0"
db.Mode=3
db.ConnectionString=Server.MapPath("kabu.mdb")
db.Open
SQL1="DELETE FROM 日経 WHERE 日付=#"&strtmp(0)&"#"
Response.Write SQL1&"<br>"
db.Execute(SQL1)
SQL2="INSERT INTO 日経(日付,日経平均,NYダウ,ナスダック,ドル) VALUES(#"&strtmp(0)&"#,"&strtmp(1)&","&strtmp(2)&","&strtmp(3)&","&strtmp(4)&")"
Response.Write SQL2&"<br>"
db.Execute(SQL2)
db.Close
Set db = Nothing

Accessの形式は以下の通り。
テーブル名:日経
ID(数値)、日付(日付/時刻型)、日経平均(数値)、NYダウ(数値)、ナスダック(数値)、ドル(数値)
55、2009/09/01、10500、9000、2000、95
・     ・      ・    ・   ・  ・
・     ・      ・    ・   ・  ・

データベースでAccessが使用できるようにする。
Set db=Server.CreateObject("ADODB.Connection")
db.Provider="Microsoft.Jet.OLEDB.4.0"

読み書き専用とする。
db.Mode=3

kabu.mdbファイルをオープンする。
db.ConnectionString=Server.MapPath("kabu.mdb")
db.Open


strtmp(0)〜strtmp(4)までに日付からドルまで入っているのだが、
Accessの日経テーブルで日付を検索し、今回書き込もうとしている日付strtmp(0)があれば(WHERE 日付=#"&strtmp(0)&"#")、その行を削除する。
Response.Writeは実行したSQL文を表示。
SQL1="DELETE FROM 日経 WHERE 日付=#"&strtmp(0)&"#"
Response.Write SQL1&"<br>"
db.Execute(SQL1)

次に、strtmp(0)〜strtmp(4)の値を日経テーブルに書き込む。
SQL2="INSERT INTO 日経(日付,日経平均,NYダウ,ナスダック,ドル) VALUES(#"&strtmp(0)&"#,"&strtmp(1)&","&strtmp(2)&","&strtmp(3)&","&strtmp(4)&")"
Response.Write SQL2&"<br>"
db.Execute(SQL2)

実行されるSQL文は以下の通りとなる。

DELETE FROM 日経 WHERE 日付=#2009/09/04#
INSERT INTO 日経(日付,日経平均,NYダウ,ナスダック,ドル) VALUES(#2009/09/04#,10187.11,9441.27,2018.78,93.00)

以上で、DELETEで同じ日付の値があればその行を削除し、改めてINSERT INTOで挿入することで、上書きができる。

次はUPDATE関数が使用できるか確かめる。



実践!ASPでAccess操作