IBエラーについて

解決


studio-take  2012-08-16 04:07:17  No: 42771  IP: [192.*.*.*]

Delhpi7ent + FB2.0.4でTIBDataSetを使って、書き込みを使用としたんですが、

arithmetic exception, numeric overflow, or string truncation
-Cannot transliterate character between character sets

という、エラーが出て
Locate('日付;文字列;整数;文字列',VarArrayOf([*,*,*,*]),[] )
というのを、
Locate('日付;文字列;文字列;整数',VarArrayOf([*,*,*,*]),[] )
にして、エラーを減らせたんですが、それでも

arithmetic exception, numeric overflow, or string truncation

で引っかかります。
特段、今までの使用方法とは変わってないので、どうして漏れてるのか分かりません。
Locate手前でShowMessage()して文字列等を確認したのですが、漏れるほどの引数でもなかったです。

解決の糸口をつかみたいので、ヒントでもいいので教えてください。
宜しくお願いします。

編集    削除
studio-take  2012-08-16 04:29:24  No: 42772  IP: [192.*.*.*]

新規プロジェクトで、簡素なソースなら挿入できました。

で、アプリ本体側は、トランザクション内に3つのIBDataSetを置いて、3テーブルに書き込む予定だったんですが、どれを単体で動かしても

上記エラーが出ます。
ちなみにIBQueryやらIBDataSetがデータモジュール内に20以上あります。
多すぎると問題あったりするんでしょうか?

編集    削除
igy  2012-08-16 05:05:01  No: 42773  IP: [192.*.*.*]

関係ないかもしれませんが・・・

Delphi7用のIBXはVer.7.11までアップデートがあったと思うのですが、
お使いのIBXのバージョンはいくつですか?

http://cc.embarcadero.com/Author.aspx?ID=102

編集    削除
studio-take  2012-08-16 05:17:24  No: 42774  IP: [192.*.*.*]

すいません。
コンポーネントのバージョン確認ってどうやるんですか?

基本、何回も入れ直しているので、インストールCD初期状態です。

編集    削除
studio-take  2012-08-16 05:27:47  No: 42775  IP: [192.*.*.*]

IBXバージョンアップしてみました。
ポップアップメニューが変わってたので、いけてると思うんですが。
やっぱり、
arithmetic exception, numeric overflow, or string truncation
出ました。
同等の機能を別のDLLで小さくまとめてみようと思います。
いろいろ詰め込みすぎているので。

編集    削除
igy  2012-08-16 05:31:30  No: 42776  IP: [192.*.*.*]

>コンポーネントのバージョン確認ってどうやるんですか?

ソースコードだと、IBXConst.pas の IBX_Version かと・・・

編集    削除
igy  2012-08-16 05:42:43  No: 42777  IP: [192.*.*.*]

>基本、何回も入れ直しているので、インストールCD初期状態です。

関係ないと思いますが、Update 7.1もありますので・・・

編集    削除
au  2012-08-16 17:53:22  No: 42778  IP: [192.*.*.*]

実行しようとしてるクエリーをFirebirdでisqlなりIBConsoleなりを使って直接実行してもエラーでます?
character setがnoneのDBに文字列挿入しようとしたら同じようなエラーがでるとか見た記憶があるんで

編集    削除
studio-take  2012-08-16 19:23:18  No: 42779  IP: [192.*.*.*]

現在3つのIBDataSetの2つまで通るようになりました。
原因は、複合主キーの設計と思うんですが、
前はPrimary Key(日付、文字列、整数、文字列)だったのを
Primary Key(日付、文字列、文字列、整数)の順番に変えました。

ただ、最後の1つは、主キーの順番を変えても出るので、調査中です。

ShowMessage()でカットしながら追いかけていたんですが、
データベースをOpenして、これはOK,

if Locate('',VarArrayOf([]),[]) then
のところで出ます。

編集    削除
igy  2012-08-17 06:17:20  No: 42780  IP: [192.*.*.*]

関係ないかもしれませんが・・・

> FB2.0.4で

Ver.2.0.x に関しては、Ver.2.0.7 がありますが・・・

編集    削除
igy  2012-08-17 06:51:09  No: 42781  IP: [192.*.*.*]

ついでですが・・・

> FB2.0.4

略さずに Firebird と したほうがよいかもしれませんね。

編集    削除
studio-take  2012-08-17 08:57:29  No: 42782  IP: [192.*.*.*]

略しすぎ注意ですね。
バージョンも2.07にあげました。

でもまだ、手こずっています。
ブレイクポイントが効かなくなってて。
とりあえず、POSTメソッドでのエラーとわかりました。

同じデータセットを使ってる別の手続きは、動いているんですが。

編集    削除
studio-take  2012-08-17 09:12:08  No: 42783  IP: [192.*.*.*]

すいません。
しょーもないオチでした。

VarChar(6) character set ascii
のフィールドに'CONVERT'と7桁入れていました。

みなさん、ご助言ありがとうございました。

編集    削除