データベースフィールド型
概略
FCL-DBデータベースフィールドは異なる種類のデータ型を持つことができる。データセットではこれらの型のサブセットが利用できる。どのような型がサポートされるかはデータセット型で異なる。
型
現在、以下のフィールド型が定義されている。 FCLフィールド型ドキュメンテーションを参照のこと。 To do: add assignment information (e.g. can you use .AsString) and additional information below.
| フィールド型 | 内容 |
|---|---|
| ftADT | 抽象データ型 (サーバに生成されるユーザーにより定義される型); 未だサポートされていない(?)(->訳注ftADTはサポートされている模様)。 |
| ftArray | Interbase 6 / Firebird 配列データ型 (可変長文字列あるいは整数のような簡単なデータ型). しかし、SQLDBは配列データ型を現在サポートされていない(訳注->ftArrayはサポートされている模様)。 |
| ftAutoInc | 自動的に加算される整数フィールド。 |
| ftBCD | バイナリでコードされた10進数の浮動小数点値。 |
| ftBlob | バイナリの大きなオブジェクト(BLOB)、任意のバイナリデータを格納するために作られた。 |
| ftBoolean | ブール値 (yes/no)。 |
| ftBytes | おそらくそのまま格納される固定長byte。有効なSizeプロパティがある必要性あり。 |
| ftCurrency | 確実に格納される通貨値に対するフォーマット。 |
| ftCursor | |
| ftDataSet | おそらくデータセット全体を格納するために作られたデータ型(マスター/詳細テーブルを実装する可能性のため)。 |
| ftDate | 時刻情報を除く日付。 |
| ftDateTime | 日付と時刻。 |
| ftDBaseOle | おそらくOLEオブジェクトをDBaseに格納するために作られた型。有効なSizeプロパティがある必要性あり。 |
| ftFMTBcd | バイナリでコードされた10進数(BCD)フィールド。有効なSizeプロパティがある必要性あり。 |
| ftFixedChar | 固定幅の文字フィールドPascalのshortstringに類似する。有効なSizeプロパティがある必要性あり。 |
| ftFixedWideChar | 固定長のマルチバイト文字フィールド。有効なSizeプロパティがある必要性あり。 |
| ftFloat | 浮動小数点型 |
| ftFmtMemo | 有効なSizeプロパティがある必要性あり。 |
| ftGraphic | 有効なSizeプロパティがある必要性あり。 |
| ftGuid | A field used to store a GUID (Globally Unique Identifier)のために使われるフィールド。現在のコードではこのフィールドのSizeは38に設定される必要がある。 |
| ftIDispatch | |
| ftInteger | 整数値フィールド |
| ftInterface | |
| ftLargeint | 整数値を含むフィールド、ftIntegerよりも大きなbyteの整数値、ゆえに大きな幅を持つ。 |
| ftMemo | 可変長の文字/テキストを格納する: Sizeを設定する必要がない。 |
| ftOraBlob | おそらくOracle BLOBを格納する。 |
| ftOraClob | おそらくOracle CLOB: 4GBまでのデータを保持できるOracleのデータ型1。 |
| ftParadoxOle | おそらくOLEオブジェクトをaradoxデータベースで格納されるために作られた型 |
| ftReference | |
| ftSmallint | ftIntegerよりも小さなbyteのための型。 |
| ftString | 文字列データを格納する。フィールドに入力可能な最大の文字数をプロパティとして指定する必要がある。 |
| ftTime | 時刻のみを格納する。 |
| ftTimeStamp | 日付/時刻を格納する。おそらくftDateTimeと同等 |
| ftTypedBinary | ある種のBLOB様のフィールド? |
| ftUnknown | |
| ftVarBytes | おそらくbyte/バイナリのバリアントデータ? |
| ftVariant | おそらくバリアントデータを格納するために作られた。 |
| ftWideMemo | ワイドストリング(UTF-16)ためのftMemo。 |
| ftWideString | ワイドストリング(UTF-16)ためのftString |
| ftWord | おそらく整数値を格納する。 |
サイズ、データサイズ、ユニコード
文字列型のフィールドでは、Sizeは格納することのできる文字の数を指していることに注意すること。 FPC Unicode support#Introductionに示されている通り、FPCは2.6までANSI/ASCIIシングルバイト文字列のみ取り扱い、ユニコード/UTF8/UTF16/ユニコード文字列はサポートされていない。
読み込みのみのDataSizeはbyteで表されたフィールドサイズである。
もし、マルチバイト文字(例えば、UTF8もしくはUTF16/ユニコードエンコードの文字)を用いていると、DataSizeとSize同じことを意味しない。もしANSI/ASCIIのみを用いているなら、DataSizeとSizeは文字通り同じものとなる。
データセットの型を定義する
Todo: write me. Explain various ways of doing things (TFieldDef, TFields) and which dataset supports which methods.
値を割り当て取得する
一度、データセットにフィールドを定義すると、データセットの名前がFTestDatasetと仮定すると、このようにデータを取得できる:
FTestDataset.Open; //見る、編集する、挿入するため開く
FTestDataset.Append;
FTestDataset.FieldByName('YourFieldName').AsString := 'This is my field data'; //YourFieldNameがmemoフィールドと仮定する
FTestDataset.Post; //"Commit"/save changes in the record to the dataset.
Writeln('YourFieldName has data:' + FTestDataset.FieldByName('YourFieldName').AsString);
{ 現在のレコードのフィールドの値を取得する。レコードを移動していないので、入力したものが得られるはずである }Text/memoフィールドには、AsStringメソッドを用いること Date/timeフィールドには、AsDateTimeメソッドを用いること バイナリフィールドにはAsStringメソッドを用いることができると思うが - ほかのやり方があるはずである
以下も参照のこと
From the Free Pascal wiki, page "データベースフィールド型", as it stood on 2024-03-14 after a change by Ariben, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.