DL6Pro,InterBase,XPPro Sp2 にてスタンドアローンのデータベースアプリを作成しました。DBへの接続は、DL6付属のIBXを利用しています。
DBをInterBaseからFireBirdsへの変更を検討しています。
http://www.firebirdsql.org/index.php?op=filesからVer1.5をDLして設定使用しました。
接続を終えて、アプリを起動すると
起動時
①'Ambiguous Field Name Between Table Master and Table UserMasUserID'
あるイベント実行時
②'InValid expression in the Order By Cause(Not Contain in either an Aggregate function or the Group By Clause)'
の警告が出て、アプリはうまく作動しません。
interbase 6 とFireBirdsには互換性があると思われますが、この警告からすると若干の変更が必要かと思いますが、私のレベルでは、理解できません。どなたかご存知の方、アドバイス願います。
Firebirdをインストールする際にInterBaseはアンインストールしましたか?
両方インストールしていると動作が不安定になるという現象は聞いたことがあります。
また、作成したデータベースは作成したアプリ以外で使用する際には正常に動作しますか?
アプリケーション側だけでなく、データベース自体に異常がある可能性も考慮したほうがよさそうです。
りっきぃ様 早々のレス有難うございます
interbaseは削除しています(プログラムの追加と削除を利用して削除し、その後、エクスプローラーを利用して、削除しない部分もフォルダーも削除しました)
>作成したデータベースは作成したアプリ以外で使用する際には正常に動作しますか?
DL付属のIBConsoleのISQLを利用して種々の動作を確認しましたが、正常です。
DB側の検証は既にお済でしたか。
初歩的な指摘ですいませんでした^^;
見たこともないエラーメッセージなのでこれだけでは原因が特定しづらいですね(Googleで検索してもヒットしませんでした)。
エラーが発生する最小の構成のテスト用アプリを作ると原因が特定しやすいかもです。
また、そういった検証をする時間がなかなか取れなくて、OSから入れなおしてしまったほうが早かったりします^^;
InterBaseで作成したデータベースをFirebirdで開いていませんか?
もしそうなら、Firebird(IbConsole)でデータベースを新規作成して
試してください。
自己解決しました
どうも、実行時に作成するSQL(表定義)に問題があるようです。
具体的には、interbaseで作成、interbaseのISQLを利用して検証をおこなった後、プログラムに入れていたのですが、同じ構文をfirebirdは認めてくれないようです。
具体的には、①の警告は、masterテーブルにUserIDという項目があり、UserMasにも同名のUserIDという項目があります。この場合、SQL文でMaster.UserID, UserMas.UserIDそれぞれ明示したつもりですが、このSQL文をinterbaseは識別し、firebirdは識別しない(?)ようです。masterテーブルのUserIDを別名に変更すると警告は消えました。
また、②はSQL文のOrder By 句の使い方が原因のようです。
しかし、innterbaseとFireBirdとは互換性があると認識していたので、ほとんど同じように使えると思っていましたが、びっくりです。改めて、勉強になりました。りっきぃさんGTRさんありがとうございました。
ツイート | ![]() |