Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
12 / 54 ページ <前へ | 次へ>

〔843〕ACFinder 080907版
 kabe  (08/09/07 21:18)

引用なし
   kabeです。

ACFinder 080907版をアップしました。
http://acfinder.kabe.info/

1.2008年8月27日登録及び2008年8月失効反映分の薬検CSV形式ダウンロード    データからデータベースを更新できない不具合を修正しました。
暫定修正です。
書庫ファイル内部からファイル名を取得してはいませんので、次回のデータ更新時にファイル名が変更されていると、エラーが出る場合も想定されます。

2.SQLタブでファイル保存、読込ダイアログを閉じる際に ACFinder が強制終了する不具合を修正しました。

3.CONCAT スカラー関数 を複数使用した場合、全て最後に使用したCONCAT関数の値が返るバグを修正しました。
Hidemi Oyaさんの SQLiteライブラリ修正版を反映させました。

4.テンプレートフォルダ、CSSフォルダを acfinder.exe のあるフォルダ下に固定となるよう仕様変更しました。

5.定型処理テンプレート080430版、080905版を同梱しました。

6.sqlite3.dll 3.6.2 を同梱しました。

その他、試行錯誤で終了時エラーを見直したつもりですが、これについては完全に直っているかどうかは不明です。
・ツリー全体表示

〔842〕Re:終了時エラーは SQLite.pas が原因?
 kabe  (08/09/07 21:17)

引用なし
   >Hidemi Oyaさん

kabeです。

動的に生成しているコンポーネントを静的に配置するようにしたら、なぜかエラーがなくなりました。
修正版SQLite.pasも反映させました。
いくつかのフォルダ名で試しましたが、完全に直っているかどうか不明です。


・ツリー全体表示

〔841〕終了時エラーは SQLite.pas が原因?
 Hidemi Oya WEB  (08/09/07 14:04)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

> 終了時エラーは、文字列お開放とかも関わっているようなので、もしかすると SQLite.pas にも原因があるかもしれません。こちらでも確認してみます。
 TSQLiteTbl のデストラクタで、テキストデータを開放せずにポインタだけ開放してたんですが、これが原因のひとつのようです。もうちょっと確認した上で、修正版を送ります。
・ツリー全体表示

〔840〕Re:ACFinder クエリ読み込みでエラー
 Hidemi Oya WEB  (08/09/07 12:26)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>いや、Grid については全て静的に配置していて、Visible をfalse にしているだけです。
 ああ、見えなくしてるだけでしたか…。見えるタイミングが違うタブがあるのは、何か理由があるのでしょうか?

>終了時エラーについては TXlsStringGrid を開放し終わった際にエラーが出るようなので、
 プログラム内で明示的に開放してるわけじゃないんですよね?
 TXlsStringGrid の Constructor/Destructor を確認しましたが、特に問題はなさそうです。ただ、親クラスとパラメータが同じ場合は、inherited はパラメータ無しでも OK で、Delphi のバージョンによってはパラメータ有り/無しでなんか微妙に挙動が違ったような記憶もあります。TXlsStringGrid の Constructor/Destructor の inherited の行をパラメータ無しの inherited; にしてみるとどうでしょうか?

>Gridコンポーネントを別にものに変更したバージョンも作ってみようと思いますが、まだ手を付けられずにいます。
 TXlsStringGrid を使わない場合、Excel や HTML での出力が面倒になりますね。

 終了時エラーは、文字列お開放とかも関わっているようなので、もしかすると SQLite.pas にも原因があるかもしれません。こちらでも確認してみます。
・ツリー全体表示

〔839〕CONCAT スカラー関数のバグ
 Hidemi Oya WEB  (08/09/06 21:55)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

 よくよく確認してみたら、1つのクエリー内に CONCAT 集約関数が複数あっても正常に動作しています。なのに、1つのクエリー内に CONCAT スカラー関数が複数存在すると動作がおかしくなる。しかも、複数の結果が最後の結果の値と同じになるということは、結果の値そのものが返るのではなく、値へのポインタが返っているらしい…。
 SQLite へテキスト値を返すときのデストラクタが SQLITE_STATIC と SQLITE_TRANSIENT の2種類があり、集約関数のように SQLite 側で動的に確保したメモリを使用するときは SQLITE_TRANSIENT、スカラー関数のように自分で静的に確保したメモリを使用するときは SQLITE_STATIC だと思ってたんですが、どうもこれが間違いでした。SQLITE_STATIC では結果の値へのポインタが渡され、SQLITE_TRANSIENT では結果の値そのものをコピーが渡されるということのようです。

 ってことで、CONCAT スカラー関数でも SQLITE_TRANSIENT で結果を返すようにしたら、想定どおりの動作をするようになりました。修正版をメールで送りますので、次のバージョンアップの際にお使いください。
 当面は、1クエリー内で使用する CONCAT スカラー関数は1つだけとし、複数使用する場合は || 演算子で結合するようにしてください。
・ツリー全体表示

〔838〕Re:ACFinder クエリ読み込みでエラー
 kabe  (08/09/06 20:09)

引用なし
   >Hidemi Oyaさん

kabeです。

> [#832] のスレッドのチェックをしていて気がついたんですが、SQL タブで読み込みを実行するとエラーになって勝手にメインウィンドウが消えてしまいます。
これは、気付いていましたが、終了時エラーが修正できず、まだ修正版を出せずにいます。
ダイアログの開放を Releace から Free に変更するとエラーは出なくなるので、この部分については修正可能です。

> 現状では、少なくとも病害虫タブと SQL タブのグリッドは動的生成で、病害虫タブは使用しなくても薬剤タブに行くとなぜか生成され、
いや、Grid については全て静的に配置していて、Visible をfalse にしているだけです。

終了時エラーについては TXlsStringGrid を開放し終わった際にエラーが出るようなので、Gridコンポーネントを別にものに変更したバージョンも作ってみようと思いますが、まだ手を付けられずにいます。
・ツリー全体表示

〔837〕ACFinder クエリ読み込みでエラー
 Hidemi Oya WEB  (08/09/06 19:23)

引用なし
    [#832] のスレッドのチェックをしていて気がついたんですが、SQL タブで読み込みを実行するとエラーになって勝手にメインウィンドウが消えてしまいます。しかも、ACFinder 自体はメモリ上に残っている状態です。ACFinder を \Program Files\ACFinder に置いても同じです。
 エラーは、終了時エラーと同じアドレス 0044F017 のメモリアクセスエラーです。

 それと、終了時エラーが出る状態で、acfinder.exe を置いたフォルダー化以外に DB フォルダーを置くと、終了時にエラー報告ダイアログが何度も出て終了できません。どうも、動的生成コンポーネントの開放タイミングとフォルダー解析ルーチンの両方に問題がありそうな感じです。
 現状では、少なくとも病害虫タブと SQL タブのグリッドは動的生成で、病害虫タブは使用しなくても薬剤タブに行くとなぜか生成され、SQL タブのグリッドはクエリを実行しない限り生成されません。この状況で動的生成コンポーネントを適切に開放するのは困難なので、各コンポーネントは全て静的生成にして、プログラム内で明示的に開放しているところを全て削除(静的生成コンポーネントはランタイムルーチンが自動的に開放してくれます)していただけないでしょうか?
 終了時エラーに関しては、コンポーネント開放のエラーがなくなれば、原因究明をしやすくなると思います。
・ツリー全体表示

〔836〕Re:定型処理テンプレート不具合
 Hidemi Oya WEB  (08/09/06 18:11)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

> ただ、CONCAT 関数については文字列しか扱わないので、いちいち IFNULL を入れなくても良いように、NULL データの場合は空文字列として扱うように仕様変更した方が良さそうですね。しばらくお待ちください。
 ソースを確認したら、すでにこのような仕様になってました。

 このため、
> これについても同様で、
>> CONCAT(', ', jiki,hoho ) AS 時期方法
>の部分を
>CONCAT(', ', IFNULL(jiki, ''), IFNULL(hoho,''))
>にしてやれば大丈夫だと思います。
については、この修正を行っても結果は同じです。CONCAT を使わず、
IFNULL(jiki, '')||','||IFNULL(hoho, '') AS 時期方法
とすれば OK なので、CONCAT 関数に問題がありそうですが、まだ原因を特定できてません。
・ツリー全体表示

〔835〕Re:定型処理テンプレート不具合
 kabe  (08/09/06 7:46)

引用なし
   >Hidemi Oyaさん

kabe です。
早速、対応ありがとうございます。

> 報告ありがとうございます。当時とデータ構造が変わって、各フィールドに NULL データが存在するようになったのが、原因のようです。
あ〜、そういうことですか。
確かに Excelデータから作成した場合は、大丈夫ですね。
Excelデータの方も空文字列をNULLに置換えてデータ更新するよう統一した方がいいのかな。
データ更新時間はさらにかかりますが。
・ツリー全体表示

〔834〕修正版テンプレート公開
 Hidemi Oya WEB  (08/09/05 23:25)

引用なし
   ACFinder の公式サイトに、修正版のテンプレートを公開しました。
・ツリー全体表示

〔833〕Re:定型処理テンプレート不具合
 Hidemi Oya WEB  (08/09/05 23:12)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>複数作物農薬病害虫対応一覧 (2007/07/02版)ですが、正常に動作していないようです。
 報告ありがとうございます。当時とデータ構造が変わって、各フィールドに NULL データが存在するようになったのが、原因のようです。
>CONCAT(', ', CASE WHEN sakumotsu REGEXP [%sakumotsu%] ....
の行にある
>THEN byochu||mokuteki ELSE
の部分を
THEN IFNULL(byochu, '')||IFNULL(mokuteki,'') ELSE
に修正すれば OK でした。

>関連あるのかどうか、わかりませんが、
>concat を連続して使ってフィールドを指定した場合の結果もおかしいです。
 これについても同様で、
> CONCAT(', ', jiki,hoho ) AS 時期方法
の部分を
CONCAT(', ', IFNULL(jiki, ''), IFNULL(hoho,''))
にしてやれば大丈夫だと思います。
 ただ、CONCAT 関数については文字列しか扱わないので、いちいち IFNULL を入れなくても良いように、NULL データの場合は空文字列として扱うように仕様変更した方が良さそうですね。しばらくお待ちください。
・ツリー全体表示

〔832〕定型処理テンプレート不具合
 kabe WEB  (08/09/05 21:01)

引用なし
   kabe です。

複数作物農薬病害虫対応一覧 (2007/07/02版)ですが、正常に動作していないようです。
夏野菜殺虫剤.arg を読み込んで検索すると、作物名のフィールドが表示されません。
また例えば、カリフラワーとチンゲンサイを指定して検索すると、検索結果なしになります。最初のテンポラリテーブルを作る際に検索はできているのですが、作物名のフィールドができないせいでしょうか?

関連あるのかどうか、わかりませんが、
concat を連続して使ってフィールドを指定した場合の結果もおかしいです。

SELECT DISTINCT
 yoto,
 zaikei,
 tsusho,
 sakumotsu,
 CONCAT(', ', seibun1, seibun2, seibun3, seibun4, seibun5) AS 有効成分,
 CONCAT(', ', jiki,hoho ) AS 時期方法
FROM tekiyo
WHERE
 yoto IN ('殺虫剤','殺虫殺菌剤') AND
 idsaku IN (
  SELECT idsaku FROM m_sakumotsu
  WHERE sakumotsu REGEXP '(^|、|\()(カリフラワー|チンゲンサイ)(\)|、|$)'
 )
GROUP BY meisho;

では最初の有効成分フィールドに時期方法のデータが表示されます。

これだと正常です。
SELECT DISTINCT
 yoto,
 zaikei,
 tsusho,
 sakumotsu,
 CONCAT(', ', seibun1, seibun2, seibun3, seibun4, seibun5) AS 有効成分,
 jiki,
 hoho
FROM tekiyo
WHERE
 yoto IN ('殺虫剤','殺虫殺菌剤') AND
 idsaku IN (
  SELECT idsaku FROM m_sakumotsu
  WHERE sakumotsu REGEXP '(^|、|\()(カリフラワー|チンゲンサイ)(\)|、|$)'
 )
GROUP BY meisho;
・ツリー全体表示

〔831〕Re:データ更新エラー
 kabe  (08/09/03 20:47)

引用なし
   kabe です。

>(ころころ変わるので対策はしてあったつもりですが、甘かったようです・・・・)
今、ソースを見たら、単に zipファイルの拡張子を変えているだけでした。
zipファイル名と同じということを前提にしておりました。(_ _
これだとzip書庫の中からファイル名と取り出さないとダメですね。
修正にはしばらく時間がかかるかもしれません。
・ツリー全体表示

〔830〕またですか…
 Hidemi Oya WEB  (08/09/03 20:12)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>ACFinder サイトの方にも書きましたが、薬検CSVの登録基本部部分のファイル名が変わったことが原因のようです。
>(ころころ変わるので対策はしてあったつもりですが、甘かったようです・・・・)
 これのせいで、ここのデータは効率の悪い Excel からの変換のままです。Excel データのように素直なファイル名で統一してくれた方が余程ありがたいですね。
・ツリー全体表示

〔829〕Re:データ更新エラー
 kabe  (08/09/03 17:25)

引用なし
   >takaさん

kabe です。

>一度、更新時 失敗するとダウンロードをやり直しても同じエラーが出るのはなぜ?ちなみにI/Oエラー103エラー という表示が出ます。
>どなたか教えてください。

ACFinder サイトの方にも書きましたが、薬検CSVの登録基本部部分のファイル名が変わったことが原因のようです。
(ころころ変わるので対策はしてあったつもりですが、甘かったようです・・・・)

Excelデータか Macs形式CSVは変換可能ですので、当面そちらを利用してください。
あるいは暫定対策としては ACFinder をインストールしたフォルダ下の Downloadフォルダの中にある登録基本部20080901.csv のファイル名を 登録基本部csv20080901.csv に変更してください。これで手動更新で、CSV->データベース更新 を実行してください。
・ツリー全体表示

〔828〕データ更新エラー
 taka  (08/09/02 16:02)

引用なし
   一度、更新時 失敗するとダウンロードをやり直しても同じエラーが出るのはなぜ?ちなみにI/Oエラー103エラー という表示が出ます。
どなたか教えてください。
・ツリー全体表示

〔827〕定型処理 080430版
 Hidemi Oya WEB  (08/05/03 11:05)

引用なし
    CSV 形式データ対応後の ACFinder で、「特定作物通称別防除記録」及び「特定作物農薬一覧」で対象病害虫等が表示されなくなった不具合を修正しました。ACFinder のダウンロードページからダウンロードしてご利用ください。
http://acfinder.kabe.info/
・ツリー全体表示

〔826〕MACS CSV データ修正完了
 Hidemi Oya WEB  (08/05/01 21:33)

引用なし
   > 登録反映の日付がおかしいのは気がついてたんですが、しばらく ACFinder を使っていなかったので、中身がおかしいのまでは気づいてませんでした(^_^;)。今週中に変換プログラムを修正したいと思います。
 ってことで、本日データアップデートプログラムを修正しました。当サイトのデータをお使いの皆さん、お騒がせをして申し訳ありません。
・ツリー全体表示

〔825〕Re:終了時エラー
 Hidemi Oya WEB  (08/05/01 1:32)

引用なし
    あと、もしかするとスタックオーバーフローでも EAccessViolation が発生するかもしれません。Delphi のプロジェクトオプションで、デフォルトの最大スタックサイズは 1MB なので、もしローカル変数で 1MB 以上の静的配列を使用しているなら、最大スタックサイズを変更する必要があります。
 動的配列や TStringList 等は、ヒープ領域が使用されるので、スタックサイズを気にする必要はありません。
・ツリー全体表示

〔824〕Re:終了時エラー
 Hidemi Oya WEB  (08/05/01 1:19)

引用なし
   >下記に Delphi6 の ExtractFileDir の障害に関する報告があります。日本語のフォルダー名を含むときの問題ですが、無関係ではないかも…。
 データの更新やテンプレートの読み込みは可能なので、少なくとも私の環境ではこいつは無関係ですね。ちょっと寝ぼけてました(^_^;)。

>EAccessViolation in module acfinder.exe at 0004F017.
 EAccessViolation は、通常、解放後のメモリにアクセスしようとした場合やヌルポインタアクセスで発生します。エラーが発生するフォルダーにソースを置いて、Delphi の IDE 内で acfinder のコンパイル&ランを行うと、ソース上のどこでエラーが発生したか分かります。その行のオブジェクト変数等にアクセスする前にオブジェクトが開放されていないか確認してください。
 エラー発生時に CPU ウィンドウが表示される場合は、Delphi のランタイムパッケージ内でエラーが発生しています。この場合、Delphi 標準以外で使用しているコンポーネントのデストラクタを疑った方が良いかもしれません。
・ツリー全体表示

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
12 / 54 ページ <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.