プラグインが利用できない

投稿者:ゆうき 投稿日:2019/02/13(Wed) 00:03:00 No.2378

いつもお世話になっております。

プログラムを久々に改良しようとデザイナでプロデルを立ち上げましたが、以下のエラーが出ました。

次のプラグインが利用できません。
ファイル名:System.Data.SQLite.dll
理由:プラグインが利用できないか、プロデルプラグインではありません。

エラー番号4

プロデルのアップデート、再インストールを行っても同様の不具合が出ます。
このプラグイン、確か公式サイトから落としてきたことは覚えているのですがどのように入手したかを覚えていません...。

返信いただけましたら、幸いと思います。
よろしくお願いします。

Re: プラグインが利用できない

投稿者:ゆうき 投稿日:2019/02/15(Fri) 19:22:55 No.2379

こんばんは。

数日間色々調べていますが、新しい情報も見つからず
ソフトのインストール、dllの更新を行って見ましたが何も変わりません...。

原因が全く不明です。大変困っております。
何かヒントをいただけましたら、嬉しく思います。

Re^2: プラグインが利用できない

投稿者:ゆうき 投稿日:2019/02/15(Fri) 20:29:33 No.2381

もしやと思い、1月以前のバージョンに下げてファイルを開いたところ、
違うエラーが出ました。

「DllNotFoundException DLL 'SQLite.Interop.dll' を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)

場所 System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op)

場所 System.Data.SQLite.SQLite3.StaticIsInitialized()

場所 System.Data.SQLite.SQLiteLog.Initialize(String className)

場所 System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)

場所 System.Data.SQLite.SQLiteConnection..ctor()

場所 Produire.Data.SQLite.SQLiteデータベース..ctor()

[エラー番号2] [はじめ:20行目]」

こちらも、私には何を意味しているのかは不明です...。

pluginsフォルダを削除してみて下さい

投稿者:ゆうと 投稿日:2019/02/16(Sat) 16:07:37 No.2383

こんにちは ゆうとです。

プロデルデザイナは起動しますでしょうか?
もしくはSQLiteを使ったプログラムを実行すると動かない。ということでしょうか?

プロデルがインストールされたフォルダのpluginsフォルダにあるファイルを一度すべて削除してみて下さい。その上で再インストールしてみてください。
C:\Program Files (x86)\Produire\Plugins
にあります。

再インストール後も同じエラーとなる場合は、プロデルデザイナの「ツール」→「利用するプラグイン一覧」を開いて下さい。エラーとなった原因が表示されます。

お試し下さい。

Re: pluginsフォルダを削除してみて下さい

投稿者:ゆうき 投稿日:2019/02/17(Sun) 12:39:23 No.2386

ご返信、ありがとうございます。

エラー内容は、
> もしくはSQLiteを使ったプログラムを実行すると動かない。ということでしょうか?
ということです。こちらになります。

Pluginsフォルダを削除し、最新版をインストールし直しましたが再度同じエラーが出ます。

> 再インストール後も同じエラーとなる場合は、プロデルデザイナの「ツール」→「利用するプラグイン一覧」を開いて下さい。エラーとなった原因が表示されます。

確認しました。
「System.Data.SQLite
参照エラー: 指定ファイルは、プロデルプラグインではありません」
というエラーメッセージでした。



> こんにちは ゆうとです。
>
> プロデルデザイナは起動しますでしょうか?
> もしくはSQLiteを使ったプログラムを実行すると動かない。ということでしょうか?
>
> プロデルがインストールされたフォルダのpluginsフォルダにあるファイルを一度すべて削除してみて下さい。その上で再インストールしてみてください。
> C:\Program Files (x86)\Produire\Plugins
> にあります。
>
> 再インストール後も同じエラーとなる場合は、プロデルデザイナの「ツール」→「利用するプラグイン一覧」を開いて下さい。エラーとなった原因が表示されます。
>
> お試し下さい。

Re^2: pluginsフォルダを削除してみて下さい

投稿者:ゆうき 投稿日:2019/02/20(Wed) 18:32:53 No.2390

ここ一週間ほど、このプラグインが機能しない影響でかなり悩んでおります...。
インストール時に付属して入っているプラグインですが、もちろん
「プロデル専用のプラグインではない」のですがプロデルとして指定して読み込ませる必要があるのでしょうか?

SQLiteを使用している方で、同じような症状が出ている方がいらっしゃったらヒントをお願いします。

DLLの読み取り不具合です。デザイナの不具合でしょうか

投稿者:ゆうき 投稿日:2019/02/27(Wed) 01:54:30 No.2405

お世話になっております。

別PCで最新版のプロデルを新しくインストールし、普段使っているソースを読み込みましたら全く同じエラーが出ました。

いつかは忘れましたが、プロデルをアップデートした際に何らかの原因でSQLiteのプラグインが読み込めなくなってしまったのかもしれません。

私の勘違いかもしれませんが、可能性の1つかもしれませんのでここでお伝えしておきます。

エラーとなっている「利用する」文を消してください

投稿者:ゆうと 投稿日:2019/03/01(Fri) 21:10:51 No.2406

こんにちは ゆうとです。

> 普段使っているソースを読み込みましたら全く同じエラーが出ました。

つまりプロデルデザイナを起動した直後ではなく、
プロデルデザイナで、以前作ったプログラムを実行すると、
「プラグインではありません」
と表示されるということでしょうか?

どの操作をした時に、エラーが表示されるかによって、
対処の仕方や原因の絞り込む所が変わってきます。
正確に教えて頂けないと、適切なアドバイスができませんので、
詳しく丁寧に書いてください。

プログラムの実行時にエラーとなる箇所のプログラムはどのようになっていますでしょうか?
おそらく
「System.Data.SQLite.dll」を利用する
となっているかと思いますが、この箇所は必要ありません。
削除すれば正しく動作すると思います。

「System〜」ではじまるDLLファイルは、
SQLiteプラグインが利用するDLLファイルですのでプロデルプラグインではありません。
そのためプロデルのプログラムでは指定する必要がありません。

何も指定しなくてもSQLiteの機能は利用できますが、プラグインを指定したい場合は、
「Produire.Data.SQLite.dll」を利用する
とだけ書いてください。

プロデルの古いバージョンでは、単にエラーが無視されていただけだと思います。
ご確認ください。

Re: エラーとなっている「利用する」文を消してください

投稿者:ゆうき 投稿日:2019/03/05(Tue) 10:29:06 No.2407

こんにちは、お世話になります。

個人的な事情ばかりを押し付けてしまい、大変失礼いたしました。
プロデルでソフトを作成し、会社で現在運用中なのですが
ソフトを編集してアップデートしようとしたところ、以前普通に動作していた
ソースがエラーを表示して動作しなかったので慌ててしまいました。

大変申し訳御座いませんでした。

実際に会社で運用しているソフトなのでここで公開することを躊躇っていたのですが、
逆に説明不足で適切なヒントをもらえなかったようです。

> つまりプロデルデザイナを起動した直後ではなく、
> プロデルデザイナで、以前作ったプログラムを実行すると、
>「プラグインではありません」
> と表示されるということでしょうか?

仰る通りです。
現在、会社で以前このソースで作ったソフトが稼働中なのですが、
問題なく動作しています。

『「System.Data.SQLite.dll」を利用する』の文を「//」でコメントアウトして
実際にソフトをRunさせますと、確かにエラーは表示せず画面も表示されるのですが、
SQLiteを利用したラベル「離席確認する」以降の動作が上手くいかず、
ボタンの状態が一瞬変わることは確認できるのですが、SQLiteデータベースへの
書き込みが行われない、といった状況です。

以下にソフトのソースを一部省略したものを載せておきますが、
まだ情報不足であれば仰ってください。失礼します。



〜以下、ソフトのソース(一部省略)〜

// プラグインの読み込み
「Produire.FeliCa.dll」を利用する
「Produire.PGraphics.dll」を利用する
「Produire.WinControl.dll」を利用する
「Produire.Data.Grid.dll」を利用する
「Produire.Data.Base.dll」を利用する
「Produire.Data.SQLite.dll」を利用する
// 「System.Data.SQLite.dll」を利用する ←ここが今回の話の中心です

// パラメータの設定
名前は、「{}」
カードIDは、「{}」
座席番号は、「{}」
着席番号は、「{}」

// データ表を作成
データ表を作って着席一覧表とする

// データベースの読み込み
会員データというSQLiteデータベースを作る
会員データのデータソースを、「***」に変える
会員データへ接続する
会員データで「VACUUM;」を実行する

ログデータというSQLiteデータベースを作る
ログデータのデータソースを、「***」に変える
ログデータへ接続する
ログデータで「VACUUM;」を実行する

//座席選択画面のウィンドウ
座席窓というウィンドウを作る
(ウィンドウの設定なので省略)

(ここは説明テキストボックスを表示させる設定なので、省略)

// 座席図描写
座席窓へ室内図というピクチャーを作る
(表示させる画像の設定なので省略)

座席窓へ座席1~25というボタンを作る
(ボタンの描写なので、省略)

例外監視
座席チェックする
発生した場合
(エラーメッセージ)
終了する
監視終わり
座席窓を表示する
待機する

退室がクリックされた時の手順
動作不能する
例外監視
フェリカポートで受け付けしてカードとする
もしカードが無でなければ
カードからIDmをテキストで取得してカードIDとする
名前は、[会員データから「SELECT 名前 FROM 会員一覧 WHERE カードID='[カードID]'」を取得したもの]
もし名前が「{}」でなければ
着席番号は、[会員データから「SELECT 座席番号 FROM 着席状況 WHERE カードID='[カードID]'」を取得したもの]
もし着席番号が「{}」でなければ
会員データで「DELETE FROM 着席状況 WHERE カードID='[カードID]'」を実行する
ログデータで「INSERT INTO 着席ログ (日時,名前,カードID,座席番号,離着) VALUES ('[日付] [時刻]','[名前(1)(1)]','[カードID]','[着席番号(1)(1)]','離席')」を実行する
(一部省略)
「out.wav」を再生する
2秒待つ
初期化する
でなければ
「[名前(1)(1)]さんは、現在席をご利用しておりません。[改行]座りたい席をタッチして、お座りください。」を「退室エラー」として警告アイコンで表示する
初期化する
もし終わり
でなければ
「カードのデータが会員一覧に存在せず、お客様は登録されていません。[改行]新規登録ボタンから登録をお願いします。」を「会員一覧エラー」として警告アイコンで表示する
初期化する
もし終わり
でなければ
もし終わり
発生した場合
「カードが存在しません。カードを置いてからクリックをお願いします。」を「退室エラー」として警告アイコンで表示する
初期化する
監視終わり
終わり

新規登録がクリックされた時の手順
動作不能する
例外監視
フェリカポートで受け付けしてカードとする
もしカードが無でなければ
カードからIDmをテキストで取得してカードIDとする
名前は、[会員データから「SELECT 名前 FROM 会員一覧 WHERE カードID='[カードID]'」を取得したもの]
もし名前が「{}」でなければ
「[名前(1)(1)]さんは既に登録済みです。[改行]座りたい席をタッチして、お座りください。」を「新規登録エラー」として警告アイコンで表示する
初期化する
でなければ
入力画面のタイトルは、「新規登録画面」
入力画面で「お名前を入力してください ※苗字と名前の間に半角スペース必須」を入力させる
もし入力画面のキャンセルなら
初期化する
でなければ
会員データで「INSERT INTO 会員一覧 (登録日時,名前,カードID) VALUES ('[日付] [時間]','[入力画面の内容]','[カードID]')」を実行する
「[入力画面の内容]さんを登録しました。」を「新規登録完了」として情報アイコンで表示する
初期化する
もし終わり
もし終わり
もし終わり
発生した場合
「カードが存在しません。カードを置いてからクリックをお願いします。」を「新規登録エラー」として警告アイコンで表示する
初期化する
監視終わり
終わり

座席(1〜25)がクリックされた時の手順
離席確認する
座席番号は、「座席(1〜25)」
座る
...
終わり

// ここから下は動詞のラベル
座席チェックする時の手順
着席一覧表は、[会員データから「SELECT 座席番号 FROM 着席状況」を取得したもの]
着席一覧表を着席番号へそれぞれ繰り返す
もし着席番号(1)が「座席(1~25)」ならば
(ボタンを一部使えなくさせる設定)
もし終わり
...
繰り返し終わり
終わり

離席確認する時の手順
動作不能する
例外監視
フェリカポートで受け付けしてカードとする
もしカードが無でなければ
カードからIDmをテキストで取得してカードIDとする
名前は、[会員データから「SELECT 名前 FROM 会員一覧 WHERE カードID='[カードID]'」を取得したもの]
もし名前が「{}」でなければ
着席番号は、[会員データから「SELECT 座席番号 FROM 着席状況 WHERE カードID='[カードID]'」を取得したもの]
もし着席番号が「{}」でなければ
会員データで「DELETE FROM 着席状況 WHERE カードID='[カードID]'」を実行する
ログデータで「INSERT INTO 着席ログ (日時,名前,カードID,座席番号,離着) VALUES ('[日付] [時刻]','[名前(1)(1)]','[カードID]','[着席番号(1)(1)]','離席')」を実行する
でなければ
もし終わり
でなければ
「会員一覧にカードのデータが存在せず、お客様は登録されていません。[改行]新規登録ボタンから登録をお願いします。」を「会員一覧エラー」として警告アイコンで表示する
初期化する
もし終わり
初期化する
もし終わり
発生した場合
「カードが存在しません。カードを置いてからクリックをお願いします。」を「着席エラー」として警告アイコンで表示する
初期化する
監視終わり
終わり

座る時の手順
もし名前が「{}」でなければ
会員データで「INSERT INTO 着席状況 (カードID,座席番号) VALUES ('[カードID]','[座席番号]')」を実行する
ログデータで「INSERT INTO 着席ログ (日時,名前,カードID,座席番号,離着) VALUES ('[日付] [時刻]','[名前(1)(1)]','[カードID]','[座席番号]','着席')」を実行する
(一部省略)
「in.wav」を再生する
2秒待つ
初期化する
でなければ
もし終わり
初期化する
終わり

動作不能する時の手順
(ボタンが使えなくなるようにする設定)
終わり

初期化する時の手順
ログデータで「VACUUM;」を実行する
会員データで「VACUUM;」を実行する
(ボタンが使えるようにする設定)
座席チェックする
終わり

〜以上、ソフトのソース〜

Re^2: エラーとなっている「利用する」文を消してください

投稿者:通り道 投稿日:2019/03/06(Wed) 00:50:10 No.2408

もし、本当に調べてほしいなら、ソースは、「現象が再現し、動作するもの」で
あることが、大変重要です。
まともにデバッグすることができる人が、手元で実際に動作させて、
意図していた動作と異なる部分を調査できることが重要です。

不要と思うところを削除して、現象が再現する、動作する状態で載せてください。
もし、不要と思うところを削除して、再現しなくなるようであれば、
関係ないと思っていたところに原因があるということです。
たいていの場合、この作業をこなっていく中で、原因が特定されて、
解決できます。
また、公開できない部分を削除したことで再現しないようであれば、
公な場では質問のしようが無いため、別の手段を考える必要があります。
(自力で頑張るか、識者を有償で探すか)

自己解決しました。お騒がせしました。

投稿者:ゆうき 投稿日:2019/03/15(Fri) 08:02:14 No.2413

自己解決しました。
「System.Data.SQLite.dll」を利用する
をコメントアウトしたうえで、

「離席確認する」手順の中に


もし終わり
初期化する
もし終わり
…」
という部分があるのですが、この「初期化する」を削除しましたら
うまく動作しました。

私のミスでした。お騒がせしました。本当にすみませんでした。
返信してくれた皆様、ありがとうございます。

▲ページの先頭へ

- WebForum -