VBを始めたばかりの初心者でDB接続がいまだによくわかっていません。
以下のプログラムをデバックするとデータベースの形式 <ファイル名> を認識できません
というエラーがでてしまいます。access2007はインストールしたばかりで何も設定とかは
いじってないと思います。
利用ソフト
VB2008 Express Edition
MS ACCESS 2007
Imports dao
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'DAOのオブジェクト変数を宣言する()
Dim ws As dao.Workspace
Dim db As dao.Database
Dim rs As dao.Recordset
' デフォルトのワークスペースを定義する
'DAO.DBEngine.Workspaces(0)の関数
'ws = DBEngine.Workspaces(0)
Dim obj As DBEngine = New DBEngine()
ws = obj.Workspaces(0)
Try
' データベースを開く
db = ws.OpenDatabase("C:\Users\PCUser\Desktop\database\Database1.accdb")
' テーブル名を指定してレコードセットを作成する
rs = db.OpenRecordset("adress", RecordsetTypeEnum.dbOpenDynaset)
Catch ex As Exception
MsgBox(ex.Message)
End Try
MsgBox("DB接続")
End Sub
No.1
- 回答日時:
Access持っているならCOMコンポーネントを使った方が楽
Dim Objaccess As Microsoft.Office.Interop.Access.Application
Dim objDB As dao.Database
Dim rs As dao.Recordset
Try
Objaccess = CreateObject("Access.Application")
Objaccess.Visible = False
Objaccess.OpenCurrentDatabase(filename, True)
objDB = Objaccess.CurrentDb
rs = objDB.OpenRecordset("adress")
Catch ex As Exception
MsgBox(ex.Message)
end Try
MsgBox("DB接続")
objDB.Close()
Objaccess.CloseCurrentDatabase()
Objaccess.Quit()
objDB = Nothing
Objaccess = Nothing
ご回答ありがとうございました。私はVBを勉強し始めたばかりでDB接続の種類が沢山ありよくわかっていません。一般的に広く使われているDB接続のプログラム等ご存知でしたら教えてください。また、今はACCESSを使ってプログラムを組んでいますが、OracleやSQLServer等でもDB接続のプログラムを組みたいと思っていますのでDB接続のプログラム方法を教えていただければ幸いです。私が掲載したプログラムでのエラー回避方法等もご存知でしたら教えてください。ありがとうございました。
No.2ベストアンサー
- 回答日時:
下記でテストしたらうまく行きました。
WindowsアプリケーションでForm1を出し、コマンドボタンを1つ貼り付け。ダブルクリックしてPrivate Sub Button1_Clickと End Sub の間に下記を入れる。
ーーー
Microsoft DAO 3.6 Object Liblaryを参照設定のこと。
ーー
Imports dao
Public Class Form1
のようにImports daoをPublic Class Form1の前に(すなわち最初に)入れる。
ーーー
Button1 ボタン1のクリックイベントに
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'DAOのオブジェクト変数を宣言する()
Dim ws As dao.Workspace
Dim db As dao.Database
Dim rs As dao.Recordset
' デフォルトのワークスペースを定義する
'DAO.DBEngine.Workspaces(0)の関数
'ws = DBEngine.Workspaces(0)
Dim obj As DBEngine = New DBEngine
ws = obj.Workspaces(0)
'Try
' データベースを開く
db = ws.OpenDatabase("C:\Documents and Settings\XXXX\My Documents\社員2.mdb")
' テーブル名を指定してレコードセットを作成する
rs = db.OpenRecordset("社員3", RecordsetTypeEnum.dbOpenDynaset)
'Catch ex As Exception
' MsgBox(ex.Message)
'End Try
Do Until rs.EOF
MsgBox(rs.Fields("氏名").Value.ToString())
rs.MoveNext()
Loop
End Sub
私の場合ACCESSで、MyDocumenntフォルダに社員2.mdbを作っており、そのテーブルの中の1つに、「社員3」があり、「氏名」フィールドほかがあり、デバッグ実行すると
全員の氏名が順次表示されました。
ーー
しかし、これからはADOを使うべき、ようですね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
アクセスのデータがブッ壊れた(ToT)?!
Access(アクセス)
-
データベースの形式を認識できません。
Visual Basic(VBA)
-
mdbの破損「データベース形式・・・・を認識できません」
Access(アクセス)
-
-
4
Accessデータベースの最適化をExcelVBAでやりたい
その他(データベース)
-
5
VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
Visual Basic(VBA)
-
6
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
Access印刷プレビューでデータが表示されない
PowerPoint(パワーポイント)
-
10
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
11
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
12
VB.NETでのnothing の意義について
Visual Basic(VBA)
-
13
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
14
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
15
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
16
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
17
データベースアクセスエラー(3343)
ハッキング・フィッシング詐欺
-
18
VS 2008(VB.NET)
Visual Basic(VBA)
-
19
コマンドボタンを押すたびに大きくなってしまう
Excel(エクセル)
-
20
vbaで「最前面に」とする方法は?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レンタルサーバでのDB接続の件
-
名前'dbOpenDynaset'は宣言され...
-
ListviewにDB内容を表示し方に...
-
UPDATE時にSETしたい日本語文字...
-
VB6.0でSQLServerへ・・・Recor...
-
データベースの接続ができない
-
【ExcelVBA】値を変更しながら...
-
VBA 変数名に変数を使用したい。
-
他のMDBのテーブルに追加したい
-
Dir関数で読み取り順を操作でき...
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
vba フィルター 複数条件 3つ以...
-
グラフの「項目軸ラベルに使用...
-
Redim とEraseの違いは?
-
Excelのメモリ(配列)の上限は2G...
-
16進をASCIIコードに変換する...
-
COBOL数値転記の仕様
-
『列名 '担当者CD' があいま...
-
【ADO】「Execute」を使うと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】コンボボックスにデータ...
-
UPDATE時にSETしたい日本語文字...
-
初心者ですデータベースの形式 ...
-
VB6.0でSQLServerへ・・・Recor...
-
複数SQL発行について
-
データベースの接続ができない
-
ExcelVBAでのAccessデータベー...
-
VBSでADOを使ってaccessのテー...
-
vb.netでデータベース(Access)...
-
ListviewにDB内容を表示し方に...
-
OracleDataReaderについて…
-
名前'dbOpenDynaset'は宣言され...
-
VB6でデータベースを変えるとテ...
-
PHP+ACCESSのデータベース接続...
-
VB6.0とaccessのDBを接続する
-
VB6からAccess2000のテーブル使用
-
VB6.0でアクセス2000...
-
エクセルVBAでアクセスのテーブ...
-
ASP.NET(VB.NET)でADO.NETを使...
-
変数の宣言
おすすめ情報