今、データベースからアクセスにデータを取り込むというプログラムをつくって
います。
テーブル作成クエリを作り、実行してテーブルが作成されるまではよかったのですが、2回目以降「テーブルが存在するため実行できません」となってしまいます。
その度にアクセスを起動して一回一回テーブルを削除しているのですが、VB6で
テーブル自体を削除するプログラムというのはあるのでしょうか?
過去ログを検索したのですがちょっとわからなかったので
どなたかご教授お願いします。
VBぢゃないけど、「DROP TABLE テーブル名」のSQLで。
T-SQLかPL-SQLか不明だけど
create の前に if で存在判定してなければcreateでいいんじゃないかな?
無条件にdropだと存在すればエラーでるかも?
ご返信ありがとうございます。
createを使ってどのように記述したらいいのでしょうか?
VB始めて間もないものでご迷惑をおかけしますが、
ご教授お願いします。
VB DB等環境によって変わってくるんじゃ?
これが環境でいいのかわかりませんが、VBはVB6で、DBはオラクルです。
プログラムは、下のように書いています。
strQry = "SELECT〜
strQry2 = "SELECT〜
strQry3 = "SELECT〜
Set cn = DataEnvironment1.Connection1
cn.Open
mRs.Open strQry, cn
D1_Qry = strQry
cn.Close
If D1_Qry = strQry Then
cn.Open
mRs.Open strQry2, cn
D2_Qry = strQry2
cn.Close
End If
If D2_Qry = strQry2 Then
cn.Open
mRs.Open strQry3, cn
cn.Close
End If
ここでstrQry,strQry2,strQry3を実行する前に、strQry,strQry2,strQry3で作成された前のテーブルを削除したいのですが。
Accessにテーブルを作ってるんですよね??削除するのも・・
だったら、クエリで「DROP TABLE テーブル名;」で作って、
VBからテーブルを作る時と同じようにクエリを実行すれば良いんじゃない?
もちろん、テーブルが無い時に実行したらエラーになるけど。
Oracle→Access(MDB)へのテーブルコピーで、
テーブル作成クエリを利用したコピーの際に、
事前にAccess(MDB)側のテーブルを消したいということでいいですかね?
Accessがお判りなら、データ定義クエリを作成する方法もあります。
クエリの種類でメニューから「SQL」→「データ定義」を選んで、
窓に、
DROP TABLE テーブル名
と打ち込んで、適宜名前をつけて保存すれば、
あとはテーブル作成クエリと同じように、名前を指定して呼べばよいです。
エラーはOn Error Resume Nextで無視するか、
事前にテーブルの存在チェックを行うかです。
(MSysObjectsを読むか、DAO.TableDefsかADOX.Catalogを検索)
どこまでの前提知識があるのかわからないけど、
上記キーワードをもとに検索、調査してみてから、
不明点をポイント絞って再質問すれば解決が早いかも。
ちなみに、
テーブル作成クエリやデータ定義クエリなら
RecordsetとRecordsetのOpenは不要で、
cn.Execute "SQL文" とか cn.Execute "アクションクエリ名"
だけでいいですけど。
(前後の処理がわからないけどDataEnvironmentも無駄な気がする)
ご返信ありがとうございます。
おかげさまでようやく解決することができました。
id_rsa+さん、medakaさん、もげさん
どうもありがとうございました。
自分がいたらないせいで多大なご迷惑をおかけしました。
また何かわからないことがあった場合にはよろしくお願いします。
ツイート | ![]() |