No.2ベストアンサー
- 回答日時:
多少ODBCを勉強しなおしましたので、報告いたします。
O S:WIN2KServer SP2
TOOL:VB6SP5
での検証報告です。
Cのヘッダファイル
C:\Profram Files\Microsoft Visual Studio\Vc98\Inculude\ODBCINST.H
に
// SQLConfigDataSource request flags
#define ODBC_ADD_DSN 1 // Add data source
#define ODBC_CONFIG_DSN 2 // Configure (edit) data source
#define ODBC_REMOVE_DSN 3 // Remove data source
#if (ODBCVER >= 0x0250)
#define ODBC_ADD_SYS_DSN 4 // add a system DSN
#define ODBC_CONFIG_SYS_DSN5 // Configure a system DSN
#define ODBC_REMOVE_SYS_DSN6 // remove a system DSN
#if (ODBCVER >= 0x0300)
#define ODBC_REMOVE_DEFAULT_DSN7// remove the default DSN
#endif /* ODBCVER >= 0x0300 */
という宣言がありました。
SQLConfigDataSource関数に与える定数を変更することで、システムDSNへの登録が可能なようです。(未検証)
さらにユーザDSNの情報は
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
システムDSNの情報は
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
内部に設定されるようです。
システムDSNの情報はレジストリを読み取ることによって可能だと思います。
参考URLは二つあります。
http://www.galliver.co.jp/writing/msdn/msdn01/in …(かなり下の方)
http://www.vbvbvb.com/jp/gtips/index0251.html(レジストリ操作)
参考URL:http://www.vbvbvb.com/jp/gtips/index0251.html
この回答への補足
参考URLの2つ目をもとに、検証してみました。
システムDSNの情報、レジストリを問い合わせモードでオープンすることによって、存在の可否を確認することができました。
'レジストリOPEN関数
Declare Function RegOpenKeyEx Lib "advapi32.dll" _
Alias "RegOpenKeyExA" _
(ByVal hkey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long
' レジストリの主キーの定義済みハンドルを示す定数の宣言
Public Const HKEY_LOCAL_MACHINE = &H80000002
' セキュリティのアクセスマスクを示す定数の宣言
Public Const KEY_QUERY_VALUE = &H1
------------------------------------------
RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
《レジストリのキー名》, _
0, _
KEY_QUERY_VALUE, _
lngRegSubKeyHandle)
(この関数の戻り値を見ることによって判断します・・・)
これでシステムDSNに登録されていない時のみ
確認することができそうです。
詳しい調査結果の掲載、ありがとうございます。
システムDSNへの登録は、先週末に私も少し検証をしました。
どうやら「ODBC_ADD_SYS_DSN(=4)」で可能なようです。
ちなみに、削除についても「ODBC_REMOVE_SYS_DSN(=6)」でできました。
レジストリの話のところまでは私もまだ未確認ですので
こちらでも、参考URL等を元にもう少し調査してみることにします。
No.1
- 回答日時:
>ODBCのデータソース登録内容の確認
これは無理かも?
おそらくどこかのファイルに情報が書き込まれているのだと思いますが、わかりません。。。
しかし、エラー回避(On Error ・・・)を実行後に削除、そして追加を行ったら、すでにあろうと無かろうと関係なく、登録ができると思います。
参考URLにSQLとAccessへのODBCの登録方法を載せてあります。そちらを参考にしてみてください。
もしOracleなら、ちょっと改造するだけで登録できます。
ぼくはODBC接続をたまにしますが、データソースを使用しないでODBC接続を行っています。
必要であれば、そちらも公開しますよ。
(ODBCで接続するDBの種類も書くようにしてくださいね。)
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=108207
この回答への補足
DBの種類はAccess(95です)を使っています。
作業でAccessしか使っていなくてSQL-ServerとかOracleの存在を忘れてました。すみません。。。
他に、ご存知の方、いらっしゃいましたらまだ締め切らないでおこうと思いますので回答をお願い致します・・・。
早速の回答ありがとうございます。
・・・実は、そのソース、過去ログからちょっと参考にさせていただいてたりします^^;
登録の作業そのものに関しては、TAGOSAKU7さんが公開しているそのソースでいけるということが確認できました。
登録をする前に、既に登録されていないかどうかをチェックして、登録されていない場合のみ処理を行いたかったのですが、どうも無理っぽいですね・・・。
でも、既にあっても無くても登録作業自体はできるようですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電子マネー・電子決済 Visa LINE Pay P+を作りました。 カードレスで、すぐに作れました。 vpassに登録し 1 2023/08/19 23:12
- その他(gooサービス) dアカウントを登録できません 1 2023/03/03 23:35
- その他(ニュース・時事問題) 「マイナポイント」の登録について 5 2022/12/12 22:36
- OCNモバイルONE ocnのマイページでモバイルの契約画面を見たい。 3 2023/03/30 21:44
- その他(暮らし・生活・行事) 家庭用太陽光発電していますがインボイス登録申請状況確認ってなんですか? 2 2023/05/25 20:35
- 転職 自動車登録事務は、未経験では難しいですか? 車検認証工場の求人がありました。 【仕事内容】 ・自動車 1 2022/04/16 19:41
- 電子マネー・電子決済 マイナポイントで口座を登録してPayPayに7500ポイントもらえるので、ゆうちょ銀行の口座を登録し 1 2022/07/01 20:27
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- ポイントサービス・マイル ポンタポイントの登録の仕方を教えてください 1 2023/01/19 22:56
- その他(動画サービス) 至急間違えてアダルトサイト登録してしまったみたいです。年齢確認18歳以上をタップしたら、会員登録完了 5 2022/06/14 08:59
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】オートフィルターに...
-
Visual Basic(VBA) レポート作...
-
【VBA】 結合セルに複数画像と...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】インデックスが有...
-
VBA Application.Matchについて...
-
VBA 同じフォルダ内のすべての...
-
vba Windowオブジェクト(Window...
-
[Excel VBA]特定の条件で文字を...
-
【ExcelVBA】5万行以上のデー...
-
【VBA】値を変更しながら連続で...
-
Excelの数式について教えてくだ...
-
エクセルでCDOを使ったメール送...
-
Excel 範囲指定スクショについ...
-
ExcelのVBAコードについて教え...
-
エクセルのマクロについて教え...
-
[VB.net] ボタン(Flat)のEnable...
-
ExcelのVBAコードについて教え...
-
Excelのマクロについて教えてく...
-
WindowsのOutlook を VBA から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱ufjニコスカードのVIZAを使...
-
自販機でモバイルPASMOが使えない
-
regsvr32.exe による DLLの登...
-
Benesseのマナビジョンで、氏名...
-
誰も電話帳にSNSプロフィールっ...
-
fc2登録について
-
ウイルスバスター、登録したP...
-
マッチングアプリにいる女性に...
-
すべてのチェックボックスがoff...
-
教えて!gooを新規登録する時に...
-
番号の登録しない人っていますか?
-
"regsvr32" の名前の由来は?
-
特定商工業者?(法定台帳登録...
-
CDDBにデータが登録されるまで...
-
ODBCのデータソース登録内容の確認
-
ユーチューブのお気に入りが消...
-
中国のファイル共有サイト115.c...
-
SQLで二番目に新しいデータの抽出
-
知恵袋登録したくて認証コード...
-
Windows等の評価版は必ず登録し...
おすすめ情報