よろしくお願いいたします。
Access起動時に、毎回新規にリンクテーブルを再作成するといったような動作を期待したコードを、標準モジュールに書いています。
(事前準備として、マクロのアクションでプロシージャの実行を選択して、マクロ名を "AutoExec" として保存済み)
期待している動作(上司から言われている動作のヒント)は、実行時毎に、新しく再作成するという様な動作をさせる事です。
そのような動作に見せる為に、私なりに考えた動作は
・まずリンクテーブル"A"を削除し、
・その後リンクテーブル"A2"を作成、
・"A2"のデータは、リンク元から引っ張ってくる
といったイメージです。
プロシージャ終了後は、Accessのナビゲーションウィンドウからもとあった"A"テーブルが消え、
"A2"テーブルが再作成されたテーブルとして置かれる…というようにしたいです。
試行錯誤&ネットでサンプルを拾ってきて、以下のようなコードを書いてみましたが、
エラーが出て、①の行が黄色く反転します。。
エラー内容:[実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。]
サンプルコードはもともとDAOで書かれており、下記URLを参照にDAO→ADOになんとか書き換えています。
https://msdn.microsoft.com/ja-jp/library/cc948693.aspx(DAO から ADO への移植)
エラーを解決し期待通りの動作をさせる為にはどこを直せばよいでしょうか。
Function makeOdbcLink() Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table Dim strODBC As String Dim strSQL As String strODBC = "ODBC;DRIVER=SQL Server;SERVER=I*****4\SQLEXPRESS;Trusted_Connection=Yes;APP=Microsoft Office 2010;DATABASE=TestDB;" strSQL = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestDB;Data Source=I*******4\SQLEXPRESS" cat.ActiveConnection = CurrentProject.Connection ' 既存の ODBCリンクテーブル を削除 On Error Resume Next cat.Tables.Delete "dbo_qAction_add" ' ここに削除したいテーブル名を記述 ここまでは実行された MsgBox "dbo_Aテーブルを削除しました" On Error GoTo 0 ①Set tdl = CurrentProject.Table("dbo_A2") ' ここに作成するテーブル名を記述 'ここでエラー発生!!! MsgBox "dbo_qAction_add2テーブルを再作成しました" ② tdl.Connect = strSQL //実行時エラー424 オブジェクトが必要です(①をコメントアウトした場合) ③tdl.Table = "dbo_Action" ' ここにリンク元テーブル名を記述 //実行時エラー424 オブジェクトが必要です(②をコメントアウトした場合) cat.Tables.Append tbl DoEvents cat.Tables.Refresh DoEvents MsgBox "テーブルのリンク変換完了" End Function
また、当該コードの①をコメントアウトさせると、②,③に別のエラーが発生します。
可能であればこちらもご教示いただきたく存じますが、それは次回の課題としてまずは
本質問にたいして解決策をお願いいたします。
有職者の皆様方、どうかお知恵をお貸しください。
コーディングの仕方のサンプルもお教え頂ければ勉強になり幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/20 02:09 編集
2016/05/20 02:09 編集
2016/05/20 02:14 編集
2016/05/20 02:36
2016/05/20 02:39
2016/05/20 06:00
2016/05/20 15:06 編集
2016/05/22 06:48