アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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を使うべき、ようですね
    • good
    • 0

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
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。私はVBを勉強し始めたばかりでDB接続の種類が沢山ありよくわかっていません。一般的に広く使われているDB接続のプログラム等ご存知でしたら教えてください。また、今はACCESSを使ってプログラムを組んでいますが、OracleやSQLServer等でもDB接続のプログラムを組みたいと思っていますのでDB接続のプログラム方法を教えていただければ幸いです。私が掲載したプログラムでのエラー回避方法等もご存知でしたら教えてください。ありがとうございました。

お礼日時:2009/07/08 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A