Database field type/ja

From Lazarus wiki
Jump to navigationJump to search
日本語版メニュー
メインページ - Lazarus Documentation日本語版 - 翻訳ノート - 日本語障害情報

概略

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のread-onlyプロパティはフィールドサイズを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.

値を割り当て取得する

Once you have the fields in your dataset defined, you can assign and retrieve data like this - suppose you have a dataset called FTestDataset:

  FTestDataset.Open; //見る/編集する/挿入するためにデータセットを開く
  FTestDataset.Append;
  FTestDataset.FieldByName('YourFieldName').AsString := 'This is my field data'; //YourFieldNameがmemoフィールドと仮定する
  FTestDataset.Post; //"Commit"/レコードの変更をデータセットに反映する。
  Writeln('YourFieldName has data:' + FTestDataset.FieldByName('YourFieldName').AsString);
  { 現在のレコードのフィールド値を取得する。レコードを移動していないので、入力した値が表示されるはずである }

text/memoフィールドにはAsStringメソッドを用いること。 date/timeフィールドにはAsDateTimeメソッドを用いること。 バイナリフィールドには、AsStringメソッドを用いることができると思われるが- 別のやり方もあるはずだ

以下も参照のこと