2013年10月23日

PostgreSQL FDQuery 文字 数値

FireDAC + PostgreSQL8.4(UTF8)
FireDAC + PostgreSQL9.2(UTF8) の FDQueryでの文字の扱い

PostgreSQL8.4 は AsWideString の記述が必要
FDQuery1.ParamByName('xxx').AsWideString := '漢字';

Firebird MySQL Oracle ではAsStringのパラメータでも、OK
------------------------------------------------------------------------

FDTableの場合は、AsStringのパラメータでも、OK
FDTable1.FieldByName('xxx').AsString
------------------------------------------------------------------------

数値 DECIMAL/NUMERIC に関して

INSERT SELECT UPDATE DELETE をテスト

sqlstmt:='CREATE TABLE TEST_TBL '+
'('+
'TSNO INTEGER not null,'+
'TSNAME VARChar(30) ,'+
'TSQTY DECIMAL(14,2) Default 0 ,'+
'primary key(TSNO)'+
')';

---------------------------------------------------------------------------------


FDQueryでは、Insert / Update で DECIMALを xx.AsCurrencyで代入しようとすると、エラーになります

8.4の FireDAC Monitorのログ
ERROR: 列"tsqty"は型numericですが、式は0).#0f=""] [Status=7]

9.2の FireDAC Monitorのログ
Var [N=2, Name="TSQTY", Type=money, Size=0, Data(0)=111.11]
---------------------------------------------------------------------------------


FDTableとdbExpress Over ODBCでは、正しく動作しました。
---------------------------------------------------------------------------------

dbExpress Over ODBCでは、DBGRIDを動作させることがも、できませんでした。

テスト環境は ローカル CentOS6.4 32bit と KAGOYA PostgreSQLプランというレンタルサーバーのプランとの2つの環境で、テストしても同様でした。
posted by a23 at 18:40| Comment(0) | FireDAC

2013年10月21日

FireDAC 文字化け

FireDAC 文字化け

dbExpresで追加したデータを、FireDACで参照すると漢字が、文字化けすると現象に悩まされていたのですが、原因が解決しました。

FireDAC 文字化けで、ググってみると、「データ型のマッピングを変更する」などに、たどり着いて悩んでいたのですが、たんに、キャラセットのパラメータの記述が、まちがっていました。

Firebird2.5.2 embedでの接続例です

----------------------------------------------------------------------
dbExpress
SQLConnection1.Params.Values['Database'] :=GetCurrentDir+'\'+'testdbfdb';
SQLConnection1.Params.Values['User_Name'] :='SYSDBA';
SQLConnection1.Params.Values['Password'] :='masterkey';
SQLConnection1.Params.Values['ServerCharSet']:='utf8';

----------------------------------------------------------------------
FireDAC
FDConnection1.Params.Values['Database'] :=GetCurrentDir+'\'+'testdbfdb';
FDConnection1.Params.Values['User_Name'] :='SYSDBA';
FDConnection1.Params.Values['Password'] :='masterkey';
//FDConnection1.Params.Values['ServerCharSet']:='utf8';  <-ここのキャラセットのパラメータがdbExpressとFireDACで違う
FDConnection1.Params.Values['CharacterSet']:='utf8'; <-こちらが正解

----------------------------------------------------------------------


dbExpressよりコピーして、そのまま使用してしたのと、Firebird1.5.6 でも、テストしておりまして、この状態でも、文字化けを起こさず、同一コードで、順に、Firebird2.5.2、 MySQL5.6、 ORACLE XEで、文字化けの現象となってしまっていたので、悩んでおりました。





以下が、文字化けの現象でした。


1.FireDAC
ora11.png

2.dbExpress
ora12.png

3.Oracle SQL deverover
ora13.png




ご指摘いただきました、山本隆様に、感謝いたします。
posted by a23 at 17:56| Comment(0) | FireDAC

2013年10月15日

FireDAC + DB2

IBM Data Server Driver for ODBC and CLI (CLI Driver) をDownload




FDPhysDB2DriverLink1.ODBCAdvanced := 'IGNOREWARNINGS=1';
FDPhysDB2DriverLink1.ODBCDriver := 'IBM DB2 ODBC DRIVER - DB2COPY1';

VendrLIBの指定では、ない?

DB2のクライアントモジュールは、無料でFix Packのページからダウンロード可能になっています。
DB2 Fix Pack 総合トップページ
http://www-01.ibm.com/support/docview.wss?rs=71&uid=swg27007053
posted by a23 at 10:28| Comment(0) | FireDAC