掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DaoにてTable作成 (ID:141527)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
2008 なら、ADO.NET (System.Data.OleDb 名前空間)を通じて接続し、 CREATE TABLE の SQL を発行する方が楽かもしれませんよ。 COM オブジェクトを使うと、Marshal.ReleaseComObject にて 使用後にオブジェクトの破棄が必要になってしまい、面倒かと。 (Close メソッドや Nothing 代入では、正しく解放されません) 特に DAO の場合、グローバル オブジェクトやコレクションが多いため、 破棄作業の書き忘れが多くなりがちです。まぁ、DAO にしかできない事も あるので、使わざるを得ない状況もあるのですけれども。 > objAccess = CreateObject("Access.Application") これは、Microsoft Access を起動する構文です。今回は不要なハズです。 そもそもこれは、Access の開発環境が無いと動作しない方法です。 Access ランタイムの環境や、DAO 単体の環境では使えない事に注意してください。 また、Access のバージョンの差異も色濃く受けてしまいますので、 .NET から Access を経由させて作成するのは、個人的にはおすすめできません。 レイトバインドならば尚更です。別の方法を使う事を推奨しておきます。 > objAccess.NewCurrentDatabase(path) DAO を利用しているのであれば、Access を経由させる必要はありません。 今回は DAO の PIA を参照設定しているのでしょうから、手順としては、 まず DAO.DBEngine のインスタンスを New して、変数に受けるようにします。 そこから CreateWorkspace メソッドで Workspace の 明示的なインスタンスを 別の変数に取得し、そこからさらに CreateDatabase (あるいは OpenDatabase)で、 mdb を作る(開く)ように変更してみれば、期待動作するかと。 > Dim db As Object Object ではなく、DAO.Database 型を利用しましょう。 先の CreateDatabase / OpenDatabase メソッドの戻り値を格納します。 > Dim tbl As New DAO.TableDef > tbl = db.createtabledef("Table") 型変換エラーの件を別にしても、これは問題があるかと。 変数宣言部で「New」して、tbl のインスタンスを生成しているのに、 それを(破棄せずに)捨てて、別のインスタンスを代入しようとしています。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.