• ベストアンサー

ODBCの自動登録について

VB6のプログラム上から、ODBCのデータソースを登録する方法は、ありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.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

Hk2001
質問者

お礼

細かい回答ありがとうございます。 削除や変更もできるんですね。使用するかはわからないですけど 参考になりました。DSNやServerなどのプロパティ設定はODBCのデータソースファイルを作成してみて、エディタで確認しました。INIファイル形式になってました。

その他の回答 (1)

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

この関数を使えば出来るはずです。 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))

Hk2001
質問者

お礼

早速の回答ありがとうございます。 なるほどAPI使うんですね。 そこで 補足質問何ですけど ●アクセスの場合 サーバー名は不要ですか? またドライバは {Micrsoft Access Driver}でいいのでしょうか? ●SqlServerの場合 データベース名は不要ですか? 一応、簡易的にコーディングしてみましたが、実行後に コントロールボックスのODBCアドニミストレータを開きましたが追加されていませんでした。rtn = は、0でした。rtn は実行時の返り値だと思うのですが、0てエラーなんですか? いろいろと質問させていただいてすみませんがよろしくお願いします。

関連するQ&A

  • ODBCのデータソース登録内容の確認

    VB6上で、ODBCのデータソースの自動登録を行おうと思っています。 その際、実際の登録処理を行う前に、 既にデータソースへ登録されているかどうかを チェックしたいのですが、どのようにすればいいのでしょうか? (チェックしたいのはシステムDSNの内容です・・・)

  • ODBC登録の権限について

    お世話になります。 ただ今、VB.NETでODBCデータソースを追加するPGを作成しています。 ネットワークライブラリを「名前付きパイプ」とした場合、Administrators権限やPowerUsers権限のユーザーで実行すると問題なくODBC登録できるのですが、UsersやGuestsではTCP/IPのデフォルト値でODBC登録されてしまいました。 そこで「ODBC データソース アドミニストレータ」にてDSNの「クライアントの設定」を変更しようとすると以下のメッセージが表示されます。 「この操作を実行するために必要なアクセス許可がログイン アカウントにありません。使用中のWindowsレジストリに必要なアクセス許可を取得する…」 単純にWindowsレジストリに対するアクセス権限が無いとのことなのですが、アクセス権を得るためには何の権限を実行ユーザーが持っている必要があるのでしょうか?? ご教授お願い致します。

  • 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しか登録できないような 文面でした。どなたかご指導下さい。よろしくお願いします。

  • ODBCドライバー削除方法

    Win2000Server上に登録されている、或るODBCドライバを削除したいのですが、どなたかご存知の方がいらっしゃいましたら、ご教授ください。 ODBCデータソースアドミニストレータのドライバタブで登録されている ドライバは確認出来ますが、削除方法がわかりません。 よろしくお願いします。

  • ASP ODBC以外のSQLserver接続方法

    元来ASPでSQLサーバーに接続する際にODBCデータソースに登録されてるデータソース名を指定すると思うのですが、ODBC以外での方法はありますか? また、ある場合は具体的なソース等が記述されているサイトがありましたら教えてください

  • 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で同じことができますでしょうか? 教えていただければ幸いです。 情報が不足している場合はご指摘ください。 宜しくお願い致します。

  • ODBCアドミニストレータに関して

    ODBCデータソースアドミニストレータでシステムDSNを登録しました。 登録したデータベース名(N)を削除したいのですがどこで削除をしたらよいのかわかりません。 ご存知の方がいましたらご教授ください。 宜しくお願いいたします。