• 締切済み

ODBC接続について

初歩的な質問で申し訳ないのですが、DAOのODBC接続で、 「CreateWorkSpace」で引数のログインIDとパスワードををいれなくてもODBCに接続ができて、データベースが読み込めました。「CreateWorkSpace」の引数でログインIDやパスワードを渡す意味と引数を渡さなかった場合の弊害があれば、教えてください。 よろしくお願いいたします。 Dim datodbc As New DAO.DBEngine Dim wrkodbc As DAO.Workspace Dim conPubs As DAO.Connection Dim qdfTemp As DAO.QueryDef wrkodbc = datodbc.CreateWorkspace("", "", "", DAO.WorkspaceTypeEnum.dbUseODBC)

みんなの回答

回答No.1

>データベースが読み込めました データベースはAccessですよね? DBを書いていない+「データベースが読み込めました」という現状から、勝手にAccessだとしてお話します。 「VBでデータベース」さん http://homepage2.nifty.com/inform/vbdb/ の DAO で Accessデータベースに接続する DAO で パスワードプロテクトされたMDBファイルを開く を見てください。 パスワードを入れないで接続できたのは、単にパスワードプロテクトがされていないからでは?

関連するQ&A

  • ODBCでの接続方法

    1050YEN様、ご回答ありがとうございました。 実は「CreateWorkSpace」はクリアしたのですが、次の「OpenConnection」でエラーになってしまいました。 Dim datodbc As New DAO.DBEngine Dim wrkodbc As DAO.Workspace Dim conPubs As DAO.Connection Dim qdfTemp As DAO.QueryDef wrkodbc = datodbc.CreateWorkspace("", "Admin", "", "dbuserODBC") conPubs = wrkodbc.OpenConnection("", , , "ODBC;DSN=towaDS;") どなたか、ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • VB2005でODBCを使ってMySQLに接続したい

    VB2005でDAOを使用して、ODBC経由でMySQLに接続しようとするとエラーになります。新しいPCに取り換えて実行したらエラーになったので原因がわからず困っています。教えてください。よろしくお願いします。 (1)Microsoft WindowsXp Professional Version2002 Service Pack3です。 (2).NETFramework2.0はインストール済です。 (3)Applicationエラーの内容は、  Public daodt As New dao.DBEngine Public daows As DAO.Workspace daows = daodt.CreateWorkspace("NewODBCWorkspace", "","",   dao.WorkspaceTypeEnum.dbUseODBC) 上記のCreateWorkspaceを実行した時点で下記のエラーがでます。 「System.Runtime.InteropServices.COMException' の初回例外が発生しました」 ちなみに、古いPC(Microsoft WindowsXp Professional Version2002 Service Pack2)では、上記のエラーはでませんでした。(新しいPCはSP3が最初からインストールされていました)

  • CreateWorkspaceでODBCを指定するとエラーになる

    どなたか教えてください。よろしくお願いします。 (1)WindowsXp Professional SP2 (2)Microsoft .Net Frame work2.0 sp1 (3)Microsoft Office 2007 上記がインストールされていて、VisualBasic2005で 下記の処理をすると Public daodt As New DAO.DBEngine Public daows As DAO.Workspace daows = daodt.CreateWorkspace("tempdata", "admin", "",  DAO.WorkspaceTypeEnum.dbUseODBC) この時点でエラーになってしまいます。 daows = daodt.CreateWorkspace("tempdata", "admin", "",  DAO.WorkspaceTypeEnum.dbUseJet) の場合にはエラーにはなりません。 同じことをしてもパソコンが「Intel(R)Core(TM)CPU 6400」では エラーになりませんが「Intel(R)Core(TM) Duo CPU P9300」で、 エラーになります。 原因がわからず、困っています。 よろしくお願いします。

  • DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。

    Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges)   このレコードセットは正常に行きますが   直接SQLを記述する方法が、わかりません   

  • DAOが読み込めない

    VB2005でDAOを使って、データベースへアクセス(ODBCDirectのワークスペースを使用)しています。 ※Microsoft DAO 3.6 object libraryは参照設定済です。 Public daodt As New dao.DBEngine Public daows As dao.Workspace (1)daows = daodt.CreateWorkspace("", "", "",dao.WorkspaceTypeEnum.dbUseODBC) 上記(1)の処理を実行すると下記のエラーがでます。 「System.Runtime.InteropServices.COMException( DLL '卍䑒㉏⸰䱄Lߑ' を読み込むことができません。)」 原因がわからず困っています。どなたかご回答いただけないでしょうか?何とぞよろしくお願いします。

  • VB2008からAccess2007へのDAO接続でエラーになります。

    VB2008からAccess2007へのDAO接続でエラーになります。 VB2008EEからDAO3.6を利用し、Access2007(*.accdb)に接続しようとしていますが、 エラーが発生してしまい、接続できません。 エラーの内容は下記のとおりです。 実行時エラー '3343': データベースの形式 'XXX' を認識できません。 Access2000のデータベース(*.mdb)には普通に接続できています。 Accessのバージョンを問わずに接続したい場合、どうすればよいのでしょうか? 参考までに現在のコードを記載しておきます。 ※DAO3.6に参照設定してあります。 Imports dao Module modConnectDb Public Function DaoConnect(ByVal strDb As String) As Boolean 'strDb:データベースのファイルパス Dim Ws As dao.Workspace Dim DbE As dao.DBEngine Dim Db As dao.Database Dim strMsg As String Try DbE = New dao.DBEngine Ws = DbE.Workspaces(0) Db = Ws.OpenDatabase(strDb) Catch ex As Exception strMsg = "エラー番号 " & Str(Err.Number) & vbCrLf & _ Err.Source & " でエラーが発生しました。" & vbCrLf & Err.Description MsgBox(strMsg, vbExclamation, "エラー") End Try End Function End Module

  • 初心者ですデータベースの形式 ・・・を認識できませんというエラーがでます

    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

  • DAOでのOpenRecordsetの方法

    SQLServerのDBをDAOを使って更新しようとしていますが、方法がわからず困っています。 ------------------- private Cn as DAO.Database private function fnc1() as integer Dim ws As DAO.Workspace Dim rcdst1 As DAO.Recordset dim strCnct As String dim strSQL As String strCnct = "ODBC;Driver={SQL Server};SERVER=" & g_strSVName & ";DATABASE=" & g_strDBName & ";UID=" & strpUserID & ";PWD=" & strpPassword & ";" 'DB接続 Set Cn = ws.OpenDatabase("", False, False, strCnct) strSQL = "SELECT * FROM Table1" Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbDenyWrite, dbOptimistic) ------------------------------------- このOpenRecordsetで ODBC--すべてのレコードをロックできません。(3254) のエラーが出ます。 また、OpenRecordsetを Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset) とすると rcdst1.Edit で データベースまたはオブジェクトは読み取り専用なので、更新できません。 のエラーが出ます。 どうしたらいいでしょうか。

  • odbc接続でaccessのテーブルにリンクを張るには

    オラクルのデータベースからodbc接続でaccessにテーブルをリンクしようとしているのですが、起動した1回だけオラクルのユーザとパスワードがでてきます。ユーザとパスワードをいれずにテーブルをひらくことができるのでしょうか。オラクルのodbcを使っています。odbcの登録にはパスワードを登録するところがありませんでした。

  • DAOにてJET経由でのODBC接続とODBCDirect経由でのODBC接続の違いについて

    いつもお世話になっております。 VBにてDAO接続する際にJETとODBCDirectとあると思いますが、この2つの違いはどこで判断するのでしょうか。 以下に自分がODBCDirect接続だと思っているロジックを記述します。 -------------プログラムスタート------- _1 Private Sub Form_Load() _2 _3 Dim Mydb As Database _4 Dim wk_str As String _5 Dim Mydata As Recordset _6 Dim str_sql As String _7 _8 'ODBC接続文字列 _9 wk_str = "ODBC;DSN = DataSoce_Name;" 10 wk_str = wk_str & "UID = User_Name;" 11 wk_str = wk_str & "PWD = PassWord" 12 13 'データベースとの接続 14 Set Mydb = DBEngine.OpenDatabase("DataSoce_Name", False, False, wk_str) 15 'SQL文 16 str_sql = "select name from sample" 17 'SQLの実行 18 Set Mydata = Mydb.OpenRecordset(str_sql, dbOpenDynaset) 19 'SQLの結果 20 MsgBox Mydata.Fields("name").Value 21 'レコードセットのクローズ 22 Mydata.Close 23 'データベースのクローズ 24 Mydb.Close 25 End Sub -------------プログラムエンド------- ●Jet経由の場合 上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にmdbのパスを設定している場合。 (OpenDatabaseにmdbのパスのみを設定している場合はローカル接続だと思う。) ●ODBCDirect経由の場合 上記プログラム9行目のDSNと14行目のOpenDatabaseの"DataSoce_Name"にODBCデータソース名を設定している場合。 2つの違いはこのような感じではと思いますが間違いであればご指摘いただけないでしょうか。 また、プログラム自体にも間違いがあればご指摘下さい。