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()して文字列等を確認したのですが、漏れるほどの引数でもなかったです。
解決の糸口をつかみたいので、ヒントでもいいので教えてください。
宜しくお願いします。
新規プロジェクトで、簡素なソースなら挿入できました。
で、アプリ本体側は、トランザクション内に3つのIBDataSetを置いて、3テーブルに書き込む予定だったんですが、どれを単体で動かしても
上記エラーが出ます。
ちなみにIBQueryやらIBDataSetがデータモジュール内に20以上あります。
多すぎると問題あったりするんでしょうか?
関係ないかもしれませんが・・・
Delphi7用のIBXはVer.7.11までアップデートがあったと思うのですが、
お使いのIBXのバージョンはいくつですか?
http://cc.embarcadero.com/Author.aspx?ID=102
すいません。
コンポーネントのバージョン確認ってどうやるんですか?
基本、何回も入れ直しているので、インストールCD初期状態です。
IBXバージョンアップしてみました。
ポップアップメニューが変わってたので、いけてると思うんですが。
やっぱり、
arithmetic exception, numeric overflow, or string truncation
出ました。
同等の機能を別のDLLで小さくまとめてみようと思います。
いろいろ詰め込みすぎているので。
>コンポーネントのバージョン確認ってどうやるんですか?
ソースコードだと、IBXConst.pas の IBX_Version かと・・・
>基本、何回も入れ直しているので、インストールCD初期状態です。
関係ないと思いますが、Update 7.1もありますので・・・
実行しようとしてるクエリーをFirebirdでisqlなりIBConsoleなりを使って直接実行してもエラーでます?
character setがnoneのDBに文字列挿入しようとしたら同じようなエラーがでるとか見た記憶があるんで
現在3つのIBDataSetの2つまで通るようになりました。
原因は、複合主キーの設計と思うんですが、
前はPrimary Key(日付、文字列、整数、文字列)だったのを
Primary Key(日付、文字列、文字列、整数)の順番に変えました。
ただ、最後の1つは、主キーの順番を変えても出るので、調査中です。
ShowMessage()でカットしながら追いかけていたんですが、
データベースをOpenして、これはOK,
で
if Locate('',VarArrayOf([]),[]) then
のところで出ます。
関係ないかもしれませんが・・・
> FB2.0.4で
Ver.2.0.x に関しては、Ver.2.0.7 がありますが・・・
ついでですが・・・
> FB2.0.4
略さずに Firebird と したほうがよいかもしれませんね。
略しすぎ注意ですね。
バージョンも2.07にあげました。
でもまだ、手こずっています。
ブレイクポイントが効かなくなってて。
とりあえず、POSTメソッドでのエラーとわかりました。
同じデータセットを使ってる別の手続きは、動いているんですが。
すいません。
しょーもないオチでした。
VarChar(6) character set ascii
のフィールドに'CONVERT'と7桁入れていました。
みなさん、ご助言ありがとうございました。
ツイート | ![]() |