- ベストアンサー
ODBCの自動登録について
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どもども田吾作7です。 以下のソースを標準モジュールにて実行してみてください。 ※注意 スペースは全て全角で行っていますので、コピペがうまくいかないときは、全角スペース1つを、半角スペース2つに置き換えてください。 Option Explicit Private Const ODBC_ADD_DSN = 1 ' 追加 Private Const ODBC_CONFIG_DSN = 2 ' 編集 Private Const ODBC_REMOVE_DSN = 3 ' 削除 Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _ (ByVal hwndParent As Long, _ ByVal fRequest As Long, _ ByVal lpszDriver As String, _ ByVal lpszAttributes As String) As Long Sub Main() 'SQL-Server Call AddDSN_SQL("SQL_DSN") Call RemoveDSN("SQL_DSN", "SQL Server") 'Access Call AddDSN_ACCESS("AccessDSN", "《MDBファイルのフルパス》") Call RemoveDSN("AccessDSN", "Microsoft Access Driver (*.mdb)") End Sub ' データソースの追加 for SQL-Server Private Sub AddDSN_SQL(inDSNName As String) Dim wkSts As Long Dim strDriver As String Dim strAttributes As String ' ODBCドライバ strDriver = "SQL Server" ' 属性 strAttributes = "DSN=" & inDSNName & vbNullChar & _ "Description=SampleDSN" & vbNullChar & _ "Server=(local)" & vbNullChar & _ "Database=pubs" & vbNullChar ' データソースの登録 wkSts = SQLConfigDataSource(0&, ODBC_ADD_DSN, strDriver, strAttributes) ' 登録の成功・失敗の判断 If wkSts Then MsgBox "登録成功 SQL" Else MsgBox "登録失敗 SQL" End If End Sub ' データソースの追加 for ACCESS Private Sub AddDSN_ACCESS(inDSNName As String, inMdbFile As String) Dim wkSts As Long Dim strDriver As String Dim strAttributes As String ' ODBCドライバ strDriver = "Microsoft Access Driver (*.mdb)" ' 属性 strAttributes = "DSN=" & inDSNName & vbNullChar & _ "Uid=Admin" & vbNullChar & "pwd=" & vbNullChar & _ "DBQ=" & inMdbFile & vbNullChar ' データソースの登録 wkSts = SQLConfigDataSource(0&, ODBC_ADD_DSN, strDriver, strAttributes) ' 登録の成功・失敗の判断 If wkSts Then MsgBox "登録成功 ACCESS" Else MsgBox "登録失敗 ACCESS" End If End Sub ' データソースの削除 Private Sub RemoveDSN(inDSNName As String, inServerDriver As String) Dim wkSts As Long Dim strDriver As String Dim strAttributes As String ' ドライバ名を指定する strDriver = inServerDriver ' 削除するデータソース名を指定する strAttributes = "DSN=" & inDSNName & vbNullChar ' データソースを削除する wkSts = SQLConfigDataSource(0, ODBC_REMOVE_DSN, strDriver, strAttributes) ' 削除の成功・失敗の判断 If wkSts Then MsgBox "削除成功" Else MsgBox "削除失敗" End If End Sub
その他の回答 (1)
- yanmaa
- ベストアンサー率45% (207/457)
この関数を使えば出来るはずです。 Declare Function SQLConfigDataSource Lib "odbccp32.dll" (ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long 例 rtn = SQLConfigDataSource(0, 1, "ドライバ名", "DSN=データソース名" & Chr$(0) & "SERVER=サーバ名" & Chr$(0) & "DATABASE=データベース名" & Chr$(0))
お礼
早速の回答ありがとうございます。 なるほどAPI使うんですね。 そこで 補足質問何ですけど ●アクセスの場合 サーバー名は不要ですか? またドライバは {Micrsoft Access Driver}でいいのでしょうか? ●SqlServerの場合 データベース名は不要ですか? 一応、簡易的にコーディングしてみましたが、実行後に コントロールボックスのODBCアドニミストレータを開きましたが追加されていませんでした。rtn = は、0でした。rtn は実行時の返り値だと思うのですが、0てエラーなんですか? いろいろと質問させていただいてすみませんがよろしくお願いします。
関連するQ&A
- ODBCのデータソース登録内容の確認
VB6上で、ODBCのデータソースの自動登録を行おうと思っています。 その際、実際の登録処理を行う前に、 既にデータソースへ登録されているかどうかを チェックしたいのですが、どのようにすればいいのでしょうか? (チェックしたいのはシステムDSNの内容です・・・)
- ベストアンサー
- Visual Basic
- ODBC登録の権限について
お世話になります。 ただ今、VB.NETでODBCデータソースを追加するPGを作成しています。 ネットワークライブラリを「名前付きパイプ」とした場合、Administrators権限やPowerUsers権限のユーザーで実行すると問題なくODBC登録できるのですが、UsersやGuestsではTCP/IPのデフォルト値でODBC登録されてしまいました。 そこで「ODBC データソース アドミニストレータ」にてDSNの「クライアントの設定」を変更しようとすると以下のメッセージが表示されます。 「この操作を実行するために必要なアクセス許可がログイン アカウントにありません。使用中のWindowsレジストリに必要なアクセス許可を取得する…」 単純にWindowsレジストリに対するアクセス権限が無いとのことなのですが、アクセス権を得るためには何の権限を実行ユーザーが持っている必要があるのでしょうか?? ご教授お願い致します。
- 締切済み
- SQL Server
- MySQLのデータベースをODBCに登録する
ODBCデータソースの登録がうまくいきません。 ご教授お願い致します。 OS:WindowsXP,MySQL-4.0.22,ODBC:mysql-connector-odbc-5.1.5 ユーザーDNSに追加しようとすると、「Connection Failed:[HY000][MySQL][ODBC5.1Driver]Unknown system variable 'character_set_results'」というエラーメッセージが出て登録できません。
- ベストアンサー
- MySQL
- ODBC接続ができない
初めて質問する初級者です。 現在、DBにPostgreSQLを使って、クライアント側を Windowsアプリケーションにしようと思って、VB.NET (2003)でつくり始めたところです。PostgreSQLの接 続については、既に日本語ODBCドライバを使って Accessとの接続は確認済みで、安心していたのです が、今日VB.NETでODBCのクラスを作ろうと思い、 やってみているのですが、うまくいきません。 具体的に説明すると、「サーバーエクスプローラー」から「データ接続」の「接続の追加」を行い、 「Microsoft OLE DB Provider for ODBC Driver」を 選択して、既にAccessで確認済みのデータソースを 選んで接続してみました。ダイアログの中にある 「接続のテスト」ボタンをクリックすると、 「接続しました」と出てくるのですが、その「データ リンクプロパティ」を登録しようとすると、サーバー エクスプローラーに追加できません。エラーメッセージには、SQLサーバーかAccessしか登録できないような 文面でした。どなたかご指導下さい。よろしくお願いします。
- 締切済み
- Visual Basic
- ODBCドライバー削除方法
Win2000Server上に登録されている、或るODBCドライバを削除したいのですが、どなたかご存知の方がいらっしゃいましたら、ご教授ください。 ODBCデータソースアドミニストレータのドライバタブで登録されている ドライバは確認出来ますが、削除方法がわかりません。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- ASP ODBC以外のSQLserver接続方法
元来ASPでSQLサーバーに接続する際にODBCデータソースに登録されてるデータソース名を指定すると思うのですが、ODBC以外での方法はありますか? また、ある場合は具体的なソース等が記述されているサイトがありましたら教えてください
- 締切済み
- Microsoft ASP
- ODBC接続で困っています。
ODBC接続で困っています。 いつもお世話になっております。 VB6.0からODBCを利用してACCESSに接続をしたいのですが、 接続文字列が良く分かりません。 色々と調べてみたのですが、 管理ツールからODBCデータソースを作成(Microsoft Access Driver (*.mdb)を使用)して、 DSN=データソース名 という風にするのと、 Driver={Microsoft Access Driver (*.mdb)};Dbq=MDBファイルパス; とするのとは同じなのでしょうか? 前者では無事に接続できたのですが、後者では接続できませんでした。 MDBファイルのパスは動的にしたいので、できれば後者の方が良いのですが、 どうしたら良いでしょうか…。 よろしくお願い致します。
- 締切済み
- その他([技術者向] コンピューター)
- ODBCの自動設定
各クライアントにODBCの設定をしたいのですが、数が多いのでスクリプトファイルなどで簡単に誰でも設定できるプログラムはないですか?また作成方法などお願いします。 ODBCからSQL7.0につなぎます。OSは95,98,2000です。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQLSERVER2005 ODBCでの接続について
SQLSERVER2005 ODBCでの接続について Access2003からODBCで接続して利用しております。 今までリンクテーブルでODBC接続する場合、各クライアントPCにODBCのデータソースを設定しておりましたが、各クライアントにODBCのデータソースを登録しなくても、ODBCでリンクさせることができているものがありました。回りに聞ける人がいないので質問させていただきました。 1.SQLServer側でなにか特別な設定をしているのでしょうか?どうやって実現しているのか知りたいです。 2.SQLServer2000で同じことができますでしょうか? 教えていただければ幸いです。 情報が不足している場合はご指摘ください。 宜しくお願い致します。
- ベストアンサー
- SQL Server
- ODBCアドミニストレータに関して
ODBCデータソースアドミニストレータでシステムDSNを登録しました。 登録したデータベース名(N)を削除したいのですがどこで削除をしたらよいのかわかりません。 ご存知の方がいましたらご教授ください。 宜しくお願いいたします。
- 締切済み
- その他(データベース)
お礼
細かい回答ありがとうございます。 削除や変更もできるんですね。使用するかはわからないですけど 参考になりました。DSNやServerなどのプロパティ設定はODBCのデータソースファイルを作成してみて、エディタで確認しました。INIファイル形式になってました。