2020年12月24日

3層スタイルC/Sアプリ作成術(Rest版)

これは Delphi Advent Calendar 2020 の 24 日目の記事です。

もうずいぶん前になりますが、"3層スタイルC/Sアプリ作成術"というタイトルでデブキャンで発表したのですが、その時はWebは、SOAPを使っていたのですが、それをRestでできないかと考えて試したものです。
サーバー側は、PHPで作ったりでその時と同じ形までまだ行ってないですがとりあえず簡易版を作ってみました。
(Delphiで作りたかったけど時間切れです)

Formは、同じで、Datamoduleを切り替えるだけで、C/SプログラムとRest版アプリを切り替えられるようにしたものです。

ソースはここからダウンロードできるようにしてあります。
動かすときは、ReadMe.txtを読んでください。

データベースをクラウドにしたいときの一つのアイデアとして作成しています。
SOAPよりも、軽くなっていて、仕組みもわかりやすいと思います。
Restについては、8日の記事を参考にしてください。
今あるプログラムに適用するには、データアクセス部分をフォームと分離しないといけないなど、既存のアプリにすぐに適用とはいきませんが。分離ができていれば、有効な手段だとおもいます。


posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2020年12月17日

Restクライアントで配列送信

これは Delphi Advent Calendar 2020 の 17 日目の記事です。
8 日目の記事(DelphiでRestクライアント)の関連記事です。
配列送信については、サーバー側をPHPで開発が前提になります。
確認は、IDE上で行います。
事前に
    RESTClient1: TRESTClient;
    RESTResponse1: TRESTResponse;
    HTTPBasicAuthenticator1: THTTPBasicAuthenticator;
のパラメータが設定されているものとします。(前記事参照)

RESTRequest1: TRESTRequest;
については、Resource、Client 、Response をそれぞれ設定します。(前記事参照)
サーバー側のPHPファイルを、Test1.phpとします。
内容は、
    <?php
    var_dump($_REQUEST['PARAM']);
    ?>

続けて、RESTRequest1のResourceSuffix に上記PHPファイル名を設定
    ResourceSuffix := 'Test1.php';

Paramsを下記のように設定


RESTClient1の上で、マウス右ボタンを押すと下記ポップアップメニューが出るので、実行を選ぶと実行されます。

応答データは、RESTResponse1のContentプロパティに返る。
確認すると、
配列で受けたものが返されるのが確認できる。


posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2020年12月14日

FastReport 1コードで複数レイアウト伝票作成

これは Delphi Advent Calendar 2020 の 14 日目の記事です。

何年か前に、デブキャンのLTで、CoReportを使った同様の処理を発表しました。
今回その時に作成したプログラムと同様のことを、FastReportで作成してみました。

FastReportも、CoReport同様にレイアウト定義ファイルを別ファイルとして作成し、実行時に読み込むことが可能なので、同様の処理が可能と考えた次第です。
この場合、データベースとリンクせず、出力内容をTfrxMemoViewで定義し、プログラムから値を設定するという方法で行うことになります。

(下部にソース、Exe, 定義ファイル一式落とせるようにしてあります)

最初に定義ファイルの作成ですが、すべて出力項目を同じにする必要があります。
この時、A定義では項目はあるが、B定義ではその項目は使わないというケースが出る場合は、B定義でその項目を定義しておいて、その項目のVisibleをFalseにしておきます。添付のサンプルでは、年月日の項目でその対応をしているものがあります。
また、プレビューで対象の伝票のイメージを背景に貼ってあるのですが、これは印刷時には、不要です。
この場合は、そのコンポーネントの、Visibilityプロパティ中の、vsPrintをFalseにします。

Delphiコード側は、処理の最初に下記メソッドで、定義ファイルを読み込むのですが、この時、出力したい伝票の定義をしています。
frxReport1.LoadFromFile( );

この後、項目に値を流し込むのですが、各定義ファイルの、項目は同一にしてあるので、それぞれの定義ごとにコードを書く必要はなく、同一のコードですむことになります。

実際のコードは下記から落とせるようにしてありますので、確認ください。
delphiadvent2020.14.zip
使用している伝票は、上記、デブキャンLTの時のもので、ずいぶん古いので、今使われてるかは不明です。



posted by しんくそふと at 08:46| Comment(0) | TrackBack(0) | 開発TIPS

2020年12月08日

DelphiでRestクライアント

これは Delphi Advent Calendar 2020 の 8 日目の記事です。

PHPとMySQLが使えるレンタルサーバーのデータを参照するプログラムを、DelphiでRestクライアントとして作成しす。サーバー側プログラムは、PHPで作成しています。
用意するコンポーネントは、
    RESTClient1: TRESTClient;
    RESTRequest1: TRESTRequest;
    RESTResponse1: TRESTResponse;
    HTTPBasicAuthenticator1: THTTPBasicAuthenticator;
の4種類です。

以下の解説でのサーバーアクセスURLは、下記とします。
https://www.thinksoft.co.jp/cgi-bin/PostListApi/ListPref.php

*RESTClient1のパラメータ設定
    Authenticator = HTTPBasicAuthenticator1
    Accept = 'application/json, text/plain; q=0.9, text/html;q=0.8,'
    AcceptCharset = 'utf-8, *;q=0.8'
    BaseURL = 'https://www.thinksoft.co.jp/cgi-bin'
Acceptと、AcceptCharsetの設定値は、RESTRequest1の同名プロパティからコピー。
Authenticatorの設定は、HTTP認証を使う場合、コンポーネントの追加とともに設定。

*HTTPBasicAuthenticator1のパラメータ設定
    Username = ******************
    Password = ************************
HTTP認証のUsername、Passwordを設定

*RESTRequest1のパラメータ設定
    Resource := 'PostListApi';
    ResourceSuffix := 'ListPref.php';
    Client = RESTClient1
    Params = <>
    Response = RESTResponse1
(RESTClient1のBaseURL とRESTRequest1のResource、ResourceSuffixの設定については、HELP参照)
Paramsに、URLクエリパラメータを設定する。
Methodパラメータは、サーバー側をどちらでも対応できるように作ったので今回はデフォルトのままです。
後述する郵便番号検索のプログラムでは、下記のようにNAMEだけ設定。Kindはデフォルトのまま。

 
下記の"DelphiIDE上でテスト実行"する場合は、Valueも設定する。
プログラムで設定する場合は、
    RESTRequest.Params.ParameterByName('POST_CODE').Value := '1234567';
のような感じで設定。

*RESTResponse1のパラメータ設定
    ContentType='text/html'

*DelphiIDE上でテスト実行
この状態で、IDE上で実行可能となります。
URLクエリパラメータがある場合は、RESTRequest1のParamsに設定したパラメータのValueに値を設定します。ない場合は、必要ありません。
RESTClient1の上で、マウス右ボタンを押すと下記ポップアップメニューが出るので、実行を選ぶと実行されます。
 
応答データは、RESTResponse1のRESTResponse1に設定され、確認できます。
DelphiIDE上でテスト実行できることから、開発については、RESTRequestコンポーネントは、

*テストプログラム
弊社で使用しているサーバーに郵便番号データベースを作成し、複数パターンで郵便番号を検索できるRestクライアントプログラムをダウンロードできます。Exeのみでソースは含めていません。
Gridタブには、応答データをTFDMemTableにロード(ライブラリとして汎用的に作成しています)した結果を、RcvTextには、応答データをそのまま出力させています。
データ形式は、jsonを使うのが一般だと思いますが、特に他システムとの連携を考えていないのでCSV形式で行っています。
Request、Response、テーブル登録時間などが確認できるようになっています。



posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2019年12月15日

FDBatchでCSVファイル入出力(2)

これは Delphi Advent Calendar 2019 の 15 日目の記事の続きです。

(2)CSV出力
使うコンポーネントは、下記になります。
FDMemTable1に、(1)で作成したデータを事前に取り込んでいます。
FDBatchMoveDataSetReader1のDataSetに、FDMemTable1を設定。
FDBatchMoveTextWriter1のFileNameに出力先のファイル名を設定。
FDBatchMove1の、ReaderにFDBatchMoveDataSetReader1を、WriterにFDBatchMoveTextWriter1を設定します。
今回は、FDMemTable1の全フィールドを落とすことにするので、Mappingsの定義はなしで行います。
こちらも、IDE上で実行可能です。
ソースで行うのであれば、
      FDBatchMove1.Execute;
となります。


今回は、DataSetは、TFDMemTableを使っていますが、TFDTableにすることも可能です。
パフォーマンスも魅力ですが、IDE上で実行できるので、データベースのデータをちょっとCSVファイルに落としたい時などに便利だと思います。

以上

<Delphi 10.3 Update 3で作成しています>


posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

FDBatchでCSVファイル入出力(1)

これは Delphi Advent Calendar 2019 の 15 日目の記事です。

FCBatchMoveで、CSVファイルの入出力が思いのほかパフォーマンスが良かった(自作ライブラリ比)ので、纏めてみました。
日本郵便のサイトから住所の郵便番号(CSV形式)のデータを、TFDMemTableに、項目を絞って取り込む処理(1)と、取り込んだTFDMemTableのデータを、CSVファイルに出力する処理(2)について纏めました。
(1つの記事で文字数オーバーになったので、2記事に分割されています)

(1)CSV取り込み
使うコンポーネントは、下記になります。

FDBatchMoveTextReader1が、読み込みCSVの設定、FDBatchMoveDataSetWriter1が、出力先(この場合、FDMemTable1)の設定となる。
FDBatchMove1が、この2つを繋ぐことになる。
住所の郵便番号(CSV形式)は、15項目あるがこのうち7項目(郵便番号と、都道府県名、市区町村名、町域名のカタカナと漢字)を抽出することにする。
まず、事前にFDMemTable1に下記のフィールドを定義する。すべて、string型で、とりあえず余裕を持った長さで設定した。

次に、FDBatchMoveTextReader1の定義を行う。
FileNameプロパティに、住所の郵便番号(CSV形式)で落としたファイル(KEN_ALL.CSVを使いました)を指定します。
プロパティのDataDef内のFiledsを選択し、CSVのフィールドを定義する。

住所の郵便番号(CSV形式)は、15項目あるので、Filedsを15設定する。
取り込むFiledsのみ、きちんと定義した。取り込むデータのみ、DataTypeは、atStringとし、それ以外は、DataTypeは、atOtherにしておく。また、FieldSize、Percisionは、すべて0にしておく。
(FDBatchMoveを選択し、マウス右ボタンでのポップアップメニュー中の”テキスト形式を推測”で、フィールド定義を生成出来るが、意図しない型やサイズが設定されることがあるので、CSVファイルの場合はあまりお勧めしない)
また、DataDefプロパティのRecordFormatプロパティが、rfCommaDoubleQuote(Default値)になっていることを確認する。

FDBatchMoveDataSetWriter1の設定は、DataSetプロパティに、FDMemTable1を設定する。

FDBatchMove1の設定は、Readerプロパティに、FDBatchMoveTextReader1を、Writerプロパティに、FDBatchMoveDataSetWriter1を設定する。この後、Mappingsを開き、下記のように、Readerのフィールドと、Writerのフィールドを紐づける。
(Readerのフィールドと、Writerのフィールドが同名で紐づけられれば、FDBatchMoveを選択し、マウス右ボタンでのポップアップメニュー中の”すべてのマッピングを追加”で、自動で生成も可能)




...more
posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2018年12月23日

一覧の行番号にTFDMemTable.RecNoプロパティ

これは Delphi Advent Calendar 2018 の 23 日目の記事です。

伝票などの明細一覧で、行番号の表示は、行の追加や削除を考えるとちょっと面倒なところです。

そこで、データセットのRecNoプロパティの利用です。
とりあえず簡略化して、下記のような画面の明細画面とします。
テーブルのフィールドは、
    行番号: TIntegerField;
    品名: TWideStringField;
    数量: TIntegerField;
    金額: TIntegerField;
です。データセット名は、FDMemTable1とします。

行番号フィールドのGetTextイベントに下記を追加します。

 Text := FDMemTable1.RecNo.ToString;

削除については、2行目削除すると下記のように、データセットの内容を操作せずリナンバーされます。

追加時は、
となり、行番号が-1となります。データセットに対して、Postをすれば下記のように行番号が設定されます。


実際に、データベースに登録する際は、当然行番号の振り直しは必要になります。

注意点は、RecNoプロパティは、データセットのデータに対し紐づけされているわけではないということです。
ソートや、フィルタをかけると、行番号が変わります。表示されてる行番号が、RecNoの値になっているようです。

(金額昇順)

RecNoプロパティは、他にも、Bookmark代わりに使えたりしています。


今回は、TFDMemTableで記述しましたが、RecNoプロパティは、TDataSetからあるので他のデータセットでも使えると思いますが、動きが確認できていないので、とりあえず、TFDMemTableとしています。
また今回の上記画面は、Delphi 10.2で動かしています。


posted by しんくそふと at 08:00| Comment(0) | TrackBack(0) | 開発TIPS

2018年03月12日

TDBGrid ScrollBar バグ

Delphi 10.1 Berlin Update2(これ以前は不明)で、TDBGrid ScrollBarのバグあり。

Delphi 10.2.2 では、同じ現象が確認されないので、このバージョンのVcl.DBGrids.pasのソースとコンペアし、修正する。

TCustomDBGrid.UpdateScrollBar;
の内容を参照し、Berlinのコンポーネントソースを修正することで対応できた。

不具合内容
 DBGrid上でデータを表示。
 その後、データが0件になる(データ検索条件を変える or Filter)ようにする。
 このときスクロールバーが消える(これはOK)
 その後、再度データが複数件表示するようにする。
 なぜかスクロールバーが消えたまま。。表示件数を変えてもスクロールバーが戻ってこない。




posted by しんくそふと at 17:43| Comment(3) | TrackBack(0) | おぼえ

2017年12月24日

DataSet 数値Fieldの書式設定

(Delphi / Appmethod Advent Calendar 2017 投稿記事です)

弊社では、マンパワー不足時の改修作業や、諸々の理由で作成者に対応してもらえなくなった、他社作成のDelphiプログラムの改修を多数やらせてもらっています。

その中で、DataSet系+Data Controlsのコンポーネントの組み合わせで、開発しているプログラムで、数値の書式(3桁カンマ区切り)で苦労しているものがたまにあります。
今回は、このあたりがTIntegerFieldのプロパティで対応できるのでその紹介と注意点を纏めます。

数値の3桁カンマ区切りついては、TIntegerFieldでは、DisplayFormatプロパティを使用します。
'#,#' または '#,0' を設定します。

ただし、このままだと、編集時もカンマが入ってしまうので、
EditFormatプロパティを使用します。
'#' または '0' を設定します。

このように設定すると、カーソルがあるときは、カンマ無で、カーソルが離れると、カンマ編集された表示になります。

注意点としては、'#,#'&'#' の組み合わせだと、値が0でも、表示がブランクになります。

今回は、数値の3桁区切りの簡単な対応として紹介していますが、DisplayFormat, EditFormat は、EditMaskと同じ書式設定が使えるようなので、
3桁区切り以外でもいろいろ書式設定ができるようです。



posted by しんくそふと at 11:54| Comment(0) | TrackBack(0) | 開発TIPS

2017年04月06日

パッケージビルドエラー


DesignIntf, DesignEditors が見つからないエラー時の対応

プロジェクトオプション
 Delphiコンパイラ -> コンパイル -> その他のオプション -> コンパイラに渡す追加オプション
に、-LUDesignIDE を設定



posted by しんくそふと at 11:14| Comment(0) | TrackBack(0) | おぼえ

2016年12月21日

複数行グリッド

これは Delphi Advent Calendar  2016 21日目の記事です。


複数行表示編集できるグリッドのようなもの(下記のような感じ)ができるか問い合わせがあり、TFrameを使ったものを試作。
個人的にいい感じでできたので、TFrameを組み合わせるとこんな感じでできますと言うご紹介させていただきます。

グリッド全体のTFrameにScrollBoxを置き、その中に明細行のTFrame(1行ごとにCreate)で構成しています。
ScrollBoxの中に、Panelを1枚置き、その中に明細Frameを必要分Createしています。
このScrollBoxの中のPanel位置を移動させることでスクロールを実現しています。

MultiLineGrid1.png


簡単な機能紹介資料(機能概要.pdf)です。



サンプルプログラムです(FrameGrid.Sample.zip)。


ソースは仕事ネタなんで公開できませんが、TFrameを使えばこんな感じでできますというご紹介でした。


タグ:Delphi
posted by しんくそふと at 00:00| Comment(2) | TrackBack(0) | 開発TIPS

2016年12月06日

FDMemTable(FireDAC)フィールド定義作成

これは Delphi Advent Calendar  2016 6日目の記事です。

FDMemTableのフィールド定義をIDE上で行う方法は、最近のDelphiでは、”データセットの割り当て..”機能を使うことで、TFDQueryなどから、取り込むことができるようになっていますが、古いもの(XE5以前は無い。XE6,XE7は未確認。XE8以降はあり)では、このメニューが出ません。
このため、フィールドを1つづつ手作業で追加するということになりちょっと面倒です。これをちょっと楽するためのテクニックです。

最近のDelphiの方法
1)FDMemTableで必要なフィールドを取得できるクエリを書いたFDQueryを作成。
2)FDQueryをOpenし、フィールドエディタですべてのフィールを取り込む。
3)FDMemTable上で、右マウスボタンでメニューを表示。
4)"データセット割り当て"を選択。
5)上記、FDQueryを選択。
6)再度、FDMemTable上で、右マウスボタンでメニューを表示。
7)"フィールドエディタ"を選択
8)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
9)"すべてのフィールドを追加"を選択
10)FDQueryのフィールド定義がコピーされる。
以上


古いものでは、4) の"データセット割り当て"が無く、”項目の設定”のみである。
ClientDataSetは、上記と同様の作業ができるので、こちらを使う。
プロパティの関連図けは
ClientDataSet1. ProviderName -> DataSetProvider1
                                                     DataSetProvider1.Dataset -> FDQuery1
1)上記プロパティ設定後、ClientDataSet1上で、右マウスボタンでメニューを表示。
2)”項目の設定”を選択。フィールドエディタが表示される。
3)"フィールドエディタ"上で、右マウスボタンでメニューを表示。
4)"すべてのフィールドを追加"を選択
5)FDQueryのフィールド定義がコピーされる。
6)dfmをエディタ表示する。
7)上記、ClientDataSet1のクラスを、TFDMemTableに変更。
8)エディタからフォーム表示へ
9)プロパティの相違でエラーメッセージが出るが無視。
10)保存で、ClientDataSet1のpas上のクラス定義の相違のメッセージが出るのでOKする。
以上

FDMemTableの活用法は、過去のブログを見てください。



posted by しんくそふと at 00:00| Comment(0) | TrackBack(0) | 開発TIPS

2016年10月10日

ESPr Developer ファームウェアの書き込み

ESPr Developer(旧名:ESP-WROOM-02開発ボード) ファームウェアの書き込み

1.FLASH 押す
2.RESET 押す
3.RESET 離す
4.この状態(FLASH 押下)のまま、スケッチ書き込み。
5.FLASH 離す(書き込みが始まった時点で離してもよいみたい)
6.RESET 押す/離す




posted by しんくそふと at 09:53| Comment(0) | TrackBack(0) | おぼえ

2016年10月05日

BDE ⇒ FireDAC変換 その4 (TFDMemTable活用)

BDE ⇒ FireDAC変換の前半部分で取り上げた、TADMemTable(XE5以降はTFDMemTable)使用部分の補足です。

古くからのプログラムでは、Paradoxを多々使用しているものがあります。
この場合、Paradoxには永続的にデータを保存する使い方と、一時的に使用する使い方の2種類があると思います。
後者のケースとしては、編集用にサーバーのデータをクライアントへ取り込み編集後サーバーへ戻すケースや、印刷時に直接サーバーデータをQueryなどで取り出したデータを使用しにくいく一旦Paradoxに取り込んで編集後、印刷出力という方法を使っている。

この場合、コンポーネントはTTableを使用している。このケースのFireDACへの変換には、TADMemTableが最適である。
具体的には、dfm書き換えで、TTableをTADMemTableに置き換えるだけです。(TTableについては、Field定義は事前に取り込んでおく必要はあります)
弊社の今までの実績では、LookupFieldやCalcFieldもそのままの定義、コードで使えます。また、イベントも変更無く使用可能です。

注意点としては、TADMemTableは、オンメモリで処理しますので、データの処理状況確認等が必要な場合は、必要なタイミングでSaveToFile()メソッドなどで、ファイルに出力することになります。

FDQueryで読み込んだデータは、
   FDMemTable.Data := FDQuery.Data;
でコピーできます。処理前は、FDMemTableは、Closeしておくことが必要です。

posted by しんくそふと at 09:18| Comment(0) | TrackBack(0) | Delphiマイグレーション

2016年08月03日

FastReport VCL ⇒ FireMonkey

FastReportのVCL版で作成したレポートフォームをFireMonkey版で開いたとき、TfrxMemoViewで設定した文字が表示されないときは、Font.Colorを確認。Nullになっているので、再設定。

追記

というか、TfrxMemoView以外もColorは、全部再設定必要。



タグ:FastReport
posted by しんくそふと at 16:57| Comment(0) | TrackBack(0) | おぼえ

2016年06月20日

FastReport 64Bitターゲット

FastReportは、デフォルトでは、ターゲットが32bit Windowsについては、ライブラリパスが設定されるが、64bit Windowsには、設定してくれないようなので、手動で設定する必要がある。

デフォルトは下記(32BitOSで作業の場合)
C:\Program Files\FastReports\LibD24x64


posted by しんくそふと at 08:49| Comment(0) | TrackBack(0) | おぼえ

2016年06月01日

FastReport レポートエディタ

FastReport を使っていて、エディタ部分が非常に使いにくい。
Delphiのコードを確認したいときに、いちいちエディタを閉じないといけない。QuickReportのような形式が便利だと思うのだが。
データベース連携の場合、この仕組みでよいのかもしれないが、データベース連携しない場合は、とくに不便。

で、エディタだけ起動できるプログラムを作ればよいのではと思い、調べる。

  frxReport.DesignReport();

でエディタが起動できるので、これだけのプログラムを作成。
まだ、不満はあるがちょっとましに。








posted by しんくそふと at 10:30| Comment(0) | TrackBack(0) | 開発TIPS

2016年05月31日

FireDAC InterBase

FireDAC InterBase 使用時、Params 設定 以下7点

  with DB.Params do
  begin
    Values['DriverID'] := 'IB';
    Values['Protocol'] := 'TCPIP';
    Values['Server'] := SvrName;       //サーバー名 or IP
    Values['InstanceName'] := InstanceName;  //インスタンス名
    Values['Database'] := DBName; //データベースファイル名
    Values['User_Name']:= UserName;
    Values['Password'] := Password;
  end;

Delphi2007の場合
上位でバージョンでは、CharSet の指定も必要に思う

詳細

posted by しんくそふと at 16:49| Comment(0) | TrackBack(0) | おぼえ

FireDAC PostgreSQL

PostgreSQL クライアントに必要なdll
(下記ファイルをパスが通っているところに置くことで特にインストールは不要)

  • libpq.dll
  • ssleay32.dll
  • libeay32.dll
  • libintl-8.dll
  • libiconv-2.dll


PCによっては、「Microsoft Visual C++ 2010 Redistributable Package」が必要


詳細は、
http://docwiki.embarcadero.com/RADStudio/Seattle/ja/PostgreSQL_%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%EF%BC%88FireDAC%EF%BC%89


FireDAC Params設定は、下記7点
  with DBPg.Params do
  begin
    Values['DriverID'] := 'PG';
    Values['Database'] := DBName;      //データベース名
    Values['User_Name'] := UserName;
    Values['Password'] := Password;
    Values['Server'] := Server;               //サーバー名(IP)
    Values['CharacterSet'] := 'UTF8';      //文字コードがUTF8のとき
    Values['ExtendedMetadata'] := 'True';;  //漢字フィールドを使うため
  end;

タグ:FireDAC
posted by しんくそふと at 16:17| Comment(0) | TrackBack(0) | おぼえ

2016年05月18日

FireDAC SQLite 設定


TFDConnectionのParamsは、

DriverID=SQLite
Database=C:\Users\*****\Documents\DataBase\UpdateTest1.db
の2件でOK。
Databaseは、データベースファイルをフルパスで指定。

MapRulesは、下記の設定をしておくと便利。

    FormatOptions.MapRules = <
      item
        SourceDataType = dtWideMemo
        TargetDataType = dtWideString
      end>
型定義がTEXTのフィールドをグリッド表示するときに、上記の設定をしておけば、データがきちんと表示させることができる。


SQLite、ちと使いにくい。。。
クエリエディタで、確認した後、デバック実行するとDeadLockがでる。
クエリ確認するとIDE上で、データベースオープンになるのが原因だけど、これどいちいちクエリエディタ使ったあと、確認しないといけない。
このデータベースの性質上仕方ないんだけど。。。。他のデータベースに変えようかな。。


posted by しんくそふと at 18:38| Comment(0) | TrackBack(0) | おぼえ