VB6 Windows XP Professionalで開発しています。
VB6の実行時エラーに関してどなたかご教授願います。
ADOで接続して、管理している(ハイパーリンク型)aviファイルを再生したいのですが、
WindowsMediaPlayer1.URL = rs.Fields("AVIファイル")
とすると、
'URL'メソッドは失敗しました:'IWMPPlayer4'オブジェクト
というエラーがでます。
おつ さん こんにちは。
#何か、どこかで見たような質問ですね・・・
#「rs.Fields("AVIファイル")」と言う表記をした質問を最近見た覚えが・・・
> ハイパーリンク型)aviファイル
が何なのか分かりませんが・・・
・そもそも、再生可能なファイルなんでしょうか?
・URLを指定しているんだと思いますが、ひょっとして指定が間違っているのでは?
・DB検索をしくじっていて、該当データが参照できていないってことは無いですか?
・まさか、ネットワークの設定や、権限の設定が間違っていて、ファイルが無い(又は見えない)とかでは?
ご自分では、どういう確認を行ったんでしょう?
#何が言いたいかと言いますと・・・
#「提示された情報だけじゃ何も分かりません」って事です。
http://okwave.jp/qa2464619.html
と同じ人だと仮定しますと、MDBの「ハイパーリンク型」フィールドの話ですね。
>WindowsMediaPlayer1.URL = rs.Fields("AVIファイル")
の前に、
Debug.Print rs.Fields("AVIファイル").Value
としてみると、どうやって解決すべきか見えてくるのでは?
大吉末吉さん、もげさん回答ありがとうございます。
複数のサイトに同じ質問をすることはNGだと友人に注意されました。
okwaveの方は削除しました。申し訳ございませんでした。
コードについてなのですが、もげさんの仰るとおりにしてみると
..\..\..\A.avi#../../../A.avi#
となりました。また、 WindowsMediaPlayer1.URL = ""
となりました。該当データが参照できていないということなのでしょうか?
データベースからファイルを再生することはできるのですが・・・
宜しくお願いします。
相対パス?
MDBのフィールドとしてはメモ型で、
#で区切るよくわからない仕様(Access独自仕様)で
ハイパーリンク型を実現してますね。
まずは、
MediaPlayerがMDB内のオブジェクトをそのまま再生できるとは思えないので、
一旦ファイルとして取り出して、
それをMediaPlayerにとって有効なURLとして指示するとか
だと思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200610/06100017.txt
と同じでOLEコンテナ コントロールを試してみてもいいと思います。
通ってみたさん、もげさん回答ありがとうございます。
>通ってみたさん
相対パスなのかわかりません
ファイル名以外は省略されているだけなのでしょうか
>もげさん
#の後が意味不明ですよね。
OLEオブジェクト型でファイルを挿入しても同じ結果になりました。
>一旦ファイルとして取り出して
パスを文字列型で持ち、それを変数に代入するということなのでしょうか?
おつ さん こんにちは。
> 相対パスなのかわかりません
「相対パス」の『意味』は分かってますか?
ルートフォルダを起点とした絶対パス(「C:\A\B\C\A.avi」とか)に対し、
カレントフォルダを起点とした表記の事です。
例えば、「..\..\..\A.avi」は
カレントフォルダの3つ上(「..」は1つ上のフォルダの意味)のフォルダにある「A.avi」ファイルの意味です。
つまり、
カレントフォルダが「C:\A\B\C\D\」なら、「C:\A\A.avi」の意味になりますし、
カレントフォルダが「D:\A\B\C\」なら、「D:\A.avi」の意味になります。
> #の後が意味不明ですよね。
Accessのヘルプによると・・・
--------------------------------------------------------
"DataType/データ型" プロパティ
(中略)
ハイパーリンク型 : ハイパーリンク アドレスを格納する Access データベース フィールドのデータ型。
アドレスは最大 4 つの部分から成り、次の形式に従って記述されます。
displaytext#address#subaddress#
--------------------------------------------------------
> okwaveの方は削除しました。申し訳ございませんでした。
私が見たのは「okwave」じゃ無くて別の掲示板でしたが・・・
そちらも貴方ですか?(心当たりがありますか?)
相対パスとヘルプについて教えて頂きありがとうございます。
>そちらも貴方ですか?(心当たりがありますか?)
いえ、私ではありません。
もしかしたら同じ学校の生徒かもしれません。
ハイパーリンク型の扱い方が理解できないのであれば、
普通のテキスト型に絶対パスで記録したほうがいいのかもしれません。
現在、AVIファイルは何処にありますか?(例 C:\A.AVI)
また、MDBファイルは何処にありますか?(例 C:\Hoge\PGM\DATA\A.MDB)
それから、VB6のEXEは何処で実行していますか?(例 C:\Program Files\VBTEST\A\BIN\TEST.EXE)
MDBファイルに書いてある相対パスは、
おそらく、MDBから見た相対パスなので、
実行しているVB6のEXEファイルとMDBファイルの置き場が異なる場合は、
EXEから見た相対パスと異なってしまって、
目的のファイルを見つけられなくなることも考えられます。
(蛇足ですが)
ただし、
それを他のPCでも使用したいとなると、
AVIファイルをMDB内に埋め込む(バイナリかOLEオブジェクト型)か
\\Server\SharedDocs\A.MDB
のように共有フォルダへのUNCパス等で記録しないと
他のPCから見えないですよね。
>OLEオブジェクト型でファイルを挿入しても同じ結果になりました。
この場合は、
>>一旦ファイルとして取り出して、
>>それをMediaPlayerにとって有効なURLとして指示するとか
です。
もげさん、ありがとうございます。
MDBファイルの置き場をVB6のEXEと同じにしたところエラーが出なくなりました。
しかし、ファイルが再生されません。
MediaPlayerの左下に「準備完了」と表示されます。
そこで、MediaPlayerの再生ボタンを押したのですが
「再生しようとしているファイルの拡張子が、ファイル形式と一致しません。ファイルを再生すると、予期しない動作が発生する可能性があります。」
「このファイルを再生しますか?」
となり、「はい」をクリックするのですが、やはり再生されません。
原因わかりますでしょうか?
すみません。書き忘れていたことがありました。
「フォーム上のコマンドボタンを押したら」AVIファイルを再生するようにしたいのです。
テキスト型でパスだけを管理して
コマンドボタンを押すと
MediaPlayerの左下に「準備完了」と表示され
再生ボタンを押すと再生するようになりました。
MediaPlayerの再生ボタンではなく
コマンドボタンを押してファイルを再生させるにはどうすればよいのでしょうか?
| ツイート |
|