外出自粛中でも楽しく過ごす!QAまとめ>>

VB6.0でデータベース(SQLSERVER7.0)をアクセスする
プログラムを作りました。

そのプログラムをVB6.0が
インストールしていない他のパソコンでも
動かしたいので
ディストリビューション ウィザードで
setup.exeを作り
他のパソコンにセットアップしようとしたら
「ファイルC:\WINNT\SYSTEM32\msado21.tlbの
登録中にエラーが発生しました」と
表示されセットアップできません。

なおセットアップのログファイルを見ると
エラーC:\WINNT\SYSTEM32\msado21.tlb中に
DLLRegisterSerer()のエントリポイントが
見つかりません。

次の処理中:DllSelfRegister:
"C:\WINNT\SYSTEM32\msado21.tlb"

とありました。

セットアップでき、実行できるようにするには
どのようにしたら良いですか?

もちろんexeファイルをコピーし
他のパソコンにいれても実行されません。

エラーメッセージは
実行時エラー430
クラスはオートメーションまたは予測したインターフエースをサポートして 
いません

このQ&Aに関連する最新のQ&A

A 回答 (2件)

下記のページを参考にして、setup.lstのmsado21.tlbの行を変更して試してみてください。


http://www.accessclub.jp/bbs/0007/beginers3132.h …

また、別の可能性として、NT4.0のSPによる可能性もあります。
MDACのバージョン(=ADOのバージョン)によっては、NT4.0の場合SPのいくつか以上が必要とされる場合があります。

ちなみに、MDACとは、ADOを使用出来るようにするための環境です。
バージョンは、参照設定で選択している「Microsoft ActiveX Data Objects *.* Library」で確認出来ます。

ところで、VB付属のディストリビューションウィザードではMDACのインストーラーを添付してくれます。
その点は、ご安心下さい。
ただし、MDACのバージョンが2.1より後のバージョンの場合手動でインストーラーを含めなければなりません。
最新のMDACのインストーラーでしたら、下記からダウンロード出来ます。

Ver2.5
http://www.microsoft.com/downloads/details.aspx? …

Ver2.8
http://www.microsoft.com/downloads/details.aspx? …

他のバージョンもマイクロソフトのHPから検索すれば見つかります。
    • good
    • 0
この回答へのお礼

Ver2.5をダウンロードしたら
実行できました。

ありがとうございました。

お礼日時:2004/08/09 16:01

実行させるOSがどれかも重要なのだが、このエラーはADO、まぁMDACのバージョンによるものだ。

ディストリビューションウィーザード(←ちなみに私はほとんど使った事がない。理由は全く信用ならないからだ。)では恐らくMDACは含んでくれないだろう。ちなみに、「msado21.tlbファイルが壊れてるのか!?」と思うかも知れないが、恐らくこれはさらにその先、つまりmsado21.tlbが参照するファイル(DLLなど)が無いために発生しているのだと推測される。これは、ディストリウィズはVBで作ったEXEが参照しているライブラリは探すが、再帰的にそのライブラリが参照するライブラリを探す事をサボるために起こっているのだと思う(よくサボるらしい)。できればInstall Shieldなどで適切に必要なファイルを含めてあげる方が良いだろう。

という事で、実行させるパソコンに持っていく時は、マイクロソフトからダウンロードできるMDACの2.5、2.6、2.7、2.8のどれかを一緒に持っていって、先にMDACを入れてあげると良い。

おそらく実行マシンはOSが95かNT4なのではないかな。98はADO2.1が最初から入っている気がする(気がするだけ)。

後、SQL Server 7.0に接続するにも、ADOの2.5(できれば2.6以上)を使った方が今後のためにも良いと思うのだが、理由があるなら2.1でも仕方が無いだろう。Visual BasicのIDEを開いた時に、参照設定で切り替える事ができる。

長々と書いたが、解決方法はMDACをもっていってあげるかなんとかして、自前で先にADOコンポーネントを入れておいてあげよう。

この回答への補足

実行させるOSはNT4.0です。

MDACとは何ですか?
どこにあるのですか?
(URLなどあったら教えてください。)

教えてください。

補足日時:2004/08/09 08:23
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWindows7にvb6をインストールしようとすると、「このプログラム

Windows7にvb6をインストールしようとすると、「このプログラムには既知の互換性の問題があります」と表示されます。
【オンラインで解決策の有無を確認する】ボタンがあるので、それを押すと「Visual Studioの解決策が見つかりません」のメッセージが表示されます。
このプログラム互換性アシスタント画面には、【プログラムを実行する】ボタンもあるので、メッセージ表示を無視してインストールを実行してしまっていいものなのでしょうか?

Aベストアンサー

インストールして大丈夫です。

私がインストールした時は最初失敗しましたが、かまわず再インストールしたらインストールできました。

ほぼ正常に働いています。

日本語入力の時にちょっと挙動不審な時がありますが、その時は別なテキストエディタでそちらに日本語入力し、コピペしています。

VB6はSP6がありますから、SP6もインストールしてください。

また、Windows Update で、「設定の変更」で「推奨される更新プログラム」と「Windows Update」にチェックを入れ、「更新プログラムの確認」を実行してみてください。

表示された一覧の中にVB6関係があったら(あったかどうか覚えていませんが)インストールしておいた方がいいでしょう。

なお、Windows7 はVB6のランタイムライブラリーは標準でインストールされています。

QVisual Basic 6.0 SP6 インストール手順

Visual Basic 6.0 SP6が、どうしてもインストールに失敗します。

まず、Vs6sp6B.exeをダウンロードして、それを実行したら
ファイルを保存する場所を指定されるので適当に指定しました。
そうしたら、そのフォルダ内にexeファイルが2個ありますが、
 ・acmsetup.exe
 ・setupsp6.exe
のどちらを実行したらいいのでしょうか?

まあ、どっちにしろ、「セットアップは正常に終了しませんでした」と表示して
終わるんですが・・・・

本当に急いでいるので、わかる人がいたら教えてください

Aベストアンサー

VB6.0がインストールされているんですよね
VB6.0本体が無ければサービスパックはインストール出来ないと思います
VB6.0本体がインストール済みの場合はSetupsp6.exeを実行すればいいはずですよ

acmsetup.exeは再インストールや修復時に使用されるものだったような気がします

QVB6のプログラムをWIN7で使いたい

OSをXpからWIN7に移行しなければならなくなり、環境移行のテストをしています。
VB6で組まれた業務用プログラムがあり、現在Xpで動作しています。
このプログラム自体はWIN97の時代に作成されたものです。
簡単に説明しますと、データがAccessのデータベースにあり、それを使って技術計算をするプログラムです。
WIN97に入れると、セットアップは成功するのですが、Accessとデータをやり取りする部分でエラーが起きているようです。
そもそも、VB6自体がWIN7にはセットアップできないようで、再コンパイルできません(再コンパイルで動くかどうかも不明ですが)。
WIN7上で動かす良い方法がないでしょうか。

Aベストアンサー

VB6アプリケーションは、Windows7でも動作可能です。
ただし、サードパーティ製のActiveXコントロールを利用している場合は、
その限りではありませんが。

ActiveXコントロールが不足してたりしませんか?
ActiveXコントロールを含めたインストーラーを使ってインストールしていますか?

EXEをコピーしただけで動かないと言っているのであれば、
WinXP(もちろんWin98でも可)あたりにVB6を入れて、インストーラーを作成して下さい。

もしくは、ActiveXコントロールをインストールする為のダミーのツールでもインストールすれば良いかな。

こんなの
http://www.vector.co.jp/soft/win95/util/se188840.html

Qディストリビューションウィザードの使用方法について

VB6で作成したアプリケーションの配布を考えています。Visual Studio6.0のディストリビューションウィザードを使用して配布用データを作成するのですが、こちらの期待した結果が得られません。
例えば、C:\Projectの下でVBのプロジェクトを作成し、XXX.exeの実行ファイルを作ります。この時、このディレクトリの下にsub1,sub2等のディレクトリをつくりその中に、XXX.exeが使用するDB及びファイルを格納しています。アプリケーションの配布時には、sub1,sub2以下のディレクトリもまとめて配布したいのですが、
実際に配布用データを使用してインストールを行うと、
XXX.exe及び必要なdllのみがインストールされるだけです。インストールされたディレクトリが、c:\proguram files\Projectだとすると、この下にsub1,sub2を作り、もとのsub1,sub2下のファイルをそのままセットしたいのですが、その方法が判りません。どなたかご存じのかたおりましたら教えて下さい。

Aベストアンサー

>アプリケーションの配布時には、sub1,sub2以下のディレクトリもまとめて配布したいのですが、

「含まれるファイル」で追加する。
「セットアップ先」で、追加したファイルのインストール先を変更する。

Qディストリビューションウィザードの使用してのsetup.exeの再作成について

VB初心者ですが、以下の事が可能であるかを教えて下さい。

現在既存の正常に稼動する実行ファイルがあります。
その実行ファイルは、ディストリビューションウィザードの使用して
パッケージを作成し、そのsetup.exeを使用しインストールしてあります。

システム(?)の構成としては、メインのexeファイルといくつかのDLLから
構成されています。

このDLLのうちの一つとメインのexeファイルを変更して
(正しくいうと、メインのプロジェクトに修正変更をかけexeファイルを作成し直し
 サブのプロジェクトに修正変更かけDLLファイルを作成し直す。)
変更した物と変更していない物に関しては既存のパッケージ時のDLLを使用し
ディストリビューションウィザードを用いてsetup.exeを再作成しても
インストール後は正常に動作する物なのでしょうか?

どなたか、ご教授下さい。宜しくお願いいたします。

Aベストアンサー

どれだけ変更したかによって既存のDLLだけで十分かどうかは何ともいえません。単なるコードの修正でしたら問題ないと思います。
(”ただちょっと既存のパッケージ時のDLLを使用し”のくだりがしっくりきませんけど・・・)

もし、EXEとDLLをちょっと変更しただけなのであれば、再度ディストリビューションウィザードを使わなくても、既に出来上がっているPackageフォルダ内のSupportフォルダに変更済みのEXEとDLLを上書きコピーし、Supportフォルダ内にある、プロジェクト名.Batというバッチファイルを実行すれば新たにPackageを作り直してくれますよ。

Qデータソース名および指定された既定のドライバが見つかりません。

データソース名および指定された既定のドライバが見つかりません。
オラクルに接続したのですが、上記のエラーが出て接続出来ません。
どなたか力を貸してください。

<環境>
WinXP
VS2005 Ver8.0.50727.42
Windowsアプリケーション
VB言語でオラクルに接続したいと思っています。

こちら(http://support.microsoft.com/kb/310985/ja)を参考に
オラクルに接続しようとしています。

Dim cn As OdbcConnection
cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
"Data Source=ORA_TEST;uid=UID_TEST;pwd=PWD_TEST")

Try
cn.Open()
MsgBox("Connected")
Catch ex As Exception
MsgBox("NG")
Debug.Print(ex.Message, "Error") ←(A)
Finally
cn.Close()
End Try

(A)で「ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。」

のメッセージが出ます。
VB2005の「ツール」-「サーバの接続」では接続確認が取れているのですが、
コードで書くとエラーになってします。

何か書き忘れているのでしょうか。。。
すみませんがよろしくお願いいたします。

データソース名および指定された既定のドライバが見つかりません。
オラクルに接続したのですが、上記のエラーが出て接続出来ません。
どなたか力を貸してください。

<環境>
WinXP
VS2005 Ver8.0.50727.42
Windowsアプリケーション
VB言語でオラクルに接続したいと思っています。

こちら(http://support.microsoft.com/kb/310985/ja)を参考に
オラクルに接続しようとしています。

Dim cn As OdbcConnection
cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
...続きを読む

Aベストアンサー

>cn = New OdbcConnection("Driver = {Microsoft ODBC for Oracle};" & _
>"Data Source=ORA_TEST;uid=UID_TEST;pwd=PWD_TEST")

自分の環境に合わせないとね?????

これの意味はインポートしているんですよね? スクリプトはVBSの事ですかね。VBA? VBですよね?

Imports System.Data
Imports Microsoft.Data.ODBC


それと見るHPがちょこと違う。
http://msdn.microsoft.com/ja-jp/library/system.data.oracleclient.oraclelob.aspx

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QOracle10g・・ODBCで接続できない

Oracle10gのStandardEditionをサーバーにインストールし、データベースを作成しました。

それに対してクライアントにも10gをインストールし、ローカルメソッド名を設定して、接続テストも通りました。SQL*Plusを起動して接続することもできました。

ですが、Accessを使ってテーブルの中身を見ようと思い、ODBCを設定したのですが接続テストをすると固まってしまいます。どうすればODBCで接続できるようになるのでしょうか?

Aベストアンサー

tnspingの引数がわかりませんが、成功しているようですね。

tnspingはリスナーへの接続が成功するかどうかの確認です。

リスナーに接続した後、クライアント用に専用サーバプロセスが起動し、DBに接続します。
この部分が失敗しているようです。

要はリスナーには接続できているが、DBには接続できていない状態です。

一点気になる点がありますので、それを変更して試してもらえますか?

tnsnames.oraを変更してください。

> (CONNECT_DATA =
> (SERVICE_NAME = dev.dev_domain)
> )
> )

この部分を

(CONNECT_DATA=(SID=ORCL)

に変更してください。
SIDはサーバ側のlistener.oraかlsnrctlで調べてみてください。
(間違うとどつぼにはまりますので慎重に確認してみてください)

念のため、tnsnames.oraのサンプルをアップしておきます。

DEV =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = DEVSV001)(PORT = 1521))
)
(CONNECT_DATA=(SID=ORCL))
)

SIDだけ違ったら変えて、既存のtnsnames.oraと入れ替えてもかまいません。

これでも不可な場合、サーバ側のlistener.oraと
> lsnrctl status
の出力結果を補足に記入してみてください。

たぶんいけると思うのですが...。

tnspingの引数がわかりませんが、成功しているようですね。

tnspingはリスナーへの接続が成功するかどうかの確認です。

リスナーに接続した後、クライアント用に専用サーバプロセスが起動し、DBに接続します。
この部分が失敗しているようです。

要はリスナーには接続できているが、DBには接続できていない状態です。

一点気になる点がありますので、それを変更して試してもらえますか?

tnsnames.oraを変更してください。

> (CONNECT_DATA =
> (SERVICE_NAME = dev.dev_domain)
> )
> )

...続きを読む

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QVB6のアプリケーションの配布

VB6でアプリケーションを作成したのですが、他のマシンに配布する場合に実行形式(EXE)だけだと、DLLやOCXなどの有無やバージョンの違いで動作しないのですが、Setup.exeなどダブルクリックするだけで、インストールできるようにしたいですが、方法がわかりません。
VBのランタイムは、このSetup.exeより先にインストールしないと、Setup.exe自体でインストールが中断されるのでしょうか?

あと、.NETですがVB6のようにDLLやOCXの有無・バージョン違いなど気にせず簡単に配布できるのがメリットの一つと解釈しても良いのでしょうか?

このように配布・インストール関連で詳しい書籍などご存知でしたら教えてください。
インストーラソフトというものは言葉聞いたことがあるのですが、
.NET使うならば、あまり必要ないのでしょうか?これもお勧めのインストーラソフトがあるのでしたらご教授下さい。

Aベストアンサー

殆どのVB製フリーソフトでは別途ランタイムをインストールしてくださいで済ましているようですが。
どうしても組み込みたいということでしたら、インストーラーの作成時に組み込みましょう。殆どの人はそれで問題がおきる(低バージョンのDLLでの上書きとか)ことが予想されるため、ユーザー任せにしているわけで。
>Setup.exe自体でインストールが中断
そのインストーラー自体が特定のDLLやOCXに依存して作っているのなら先に必要となりますが、殆どのケースでは必要ないように作られるかと思います。どうやって作ったのか次第です。

.NETの場合は、これらのVB時代の反省を生かして所謂ランタイム的なものを.NetFrameWorkとしてマイクロソフトが一元管理しています。そのため.NdetFrameWorkのバージョンが1.1なり2.0を入れておいて下さいとするだけで(またそのインストールがWindowsUPDATEから可能)特に作成者側が気を回す必要はなくなりました。

VB時代も含めてのインストーラーの参考URL
http://dobon.net/vb/installer/index.html

殆どのVB製フリーソフトでは別途ランタイムをインストールしてくださいで済ましているようですが。
どうしても組み込みたいということでしたら、インストーラーの作成時に組み込みましょう。殆どの人はそれで問題がおきる(低バージョンのDLLでの上書きとか)ことが予想されるため、ユーザー任せにしているわけで。
>Setup.exe自体でインストールが中断
そのインストーラー自体が特定のDLLやOCXに依存して作っているのなら先に必要となりますが、殆どのケースでは必要ないように作られるかと思います。どうやっ...続きを読む


人気Q&Aランキング