字段类型简单问题
以下是在 DELPHI 7.0 中看到的字段类型
ftString
ftWideString
ftSmallint
ftInteger
ftWord
ftBoolean
ftFloat
ftCurrency
ftBCD
ftDate
ftTime
ftDateTime
ftTimeStamp
ftAutoInc
ftBlob
ftMemo
对以上类型还算清楚.
ftGuid可以用 AsString 来访问吗?
ftFMTBcd这个应该可以 AsString吧?
ftVarBytes怎么访问? 用得多吗
ftGraphic怎么访问? 用得多吗
ftFmtMemo与ftMemo有啥区别? 可以用BlobStream来访问它?
ftParadoxOle怎么访问? 有啥用呢
ftDBaseOle怎么访问? 有啥用呢
ftTypedBinary怎么访问? 有啥用呢
ftCursor怎么访问? 有啥用呢
ftFixedChar支持Unicode吗? 可以用 AsString 访问吗?
ftLargeint可以用 AsString 访问吗? 与ftInteger有啥不同? 是不是相当于Int64
ftADT这是什么? 怎么访问?
ftArray数组, 什么数据库有这种类型?
ftReference这是什么? 怎么访问?
ftDataSet一个字段包含有DataSet? 怎么访问?
ftOraBlob可以用 BlobStream来访问?
ftOraClob这东西怎么访问?
ftVariant什么数据库有这种类型? 有啥用呢?
ftInterface有什么用?
ftIDispatch有什么用?
[解决办法]
我的神啊!
尖端
[解决办法]
唉...落后了,高人太多;
[解决办法]
DefaultFieldClasses: array[TFieldType] of TFieldClass = (
nil, { ftUnknown }
TStringField, { ftString }
TSmallintField, { ftSmallint }
TIntegerField, { ftInteger }
TWordField, { ftWord }
TBooleanField, { ftBoolean }
TFloatField, { ftFloat }
TCurrencyField, { ftCurrency }
TBCDField, { ftBCD }
TDateField, { ftDate }
TTimeField, { ftTime }
TDateTimeField, { ftDateTime }
TBytesField, { ftBytes }
TVarBytesField, { ftVarBytes }
TAutoIncField, { ftAutoInc }
TBlobField, { ftBlob }
TMemoField, { ftMemo }
TGraphicField, { ftGraphic }
TBlobField, { ftFmtMemo }
TBlobField, { ftParadoxOle }
TBlobField, { ftDBaseOle }
TBlobField, { ftTypedBinary }
nil, { ftCursor }
TStringField, { ftFixedChar }
TWideStringField, { ftWideString }
TLargeIntField, { ftLargeInt }
TADTField, { ftADT }
TArrayField, { ftArray }
TReferenceField, { ftReference }
TDataSetField, { ftDataSet }
TBlobField, { ftOraBlob }
TMemoField, { ftOraClob }
TVariantField, { ftVariant }
TInterfaceField, { ftInterface }
TIDispatchField, { ftIDispatch }
TGuidField, { ftGuid }
TSQLTimeStampField, { ftTimeStamp }
TFMTBcdField); { ftTimeStamp }
分析VCL源代码可以知道点答案,强哥加油
TFMTBCDField = class(TNumericField)
private
FCurrency: Boolean;
FCheckRange: Boolean;
FMinValue: String;
FMaxValue: String;
FPrecision: Integer;
procedure BcdRangeError(Value: Variant; Max, Min: String);
procedure SetCurrency(Value: Boolean);
procedure SetMaxValue(Value: String);
procedure SetMinValue(Value: String);
procedure SetPrecision(Value: Integer);
procedure UpdateCheckRange;
protected
class procedure CheckTypeSize(Value: Integer); override;
procedure CopyData(Source, Dest: Pointer); override;
function GetAsCurrency: Currency; override;
function GetAsBCD: TBcd; override;
function GetAsFloat: Double; override;
function GetAsInteger: Longint; override;
function GetAsString: string; override;
function GetAsVariant: Variant; override;
function GetDataSize: Integer; override;
function GetDefaultWidth: Integer; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
function GetValue(var Value: TBcd): Boolean;
procedure SetAsCurrency(Value: Currency); override;
procedure SetAsBCD(const Value: TBcd); override;
procedure SetAsFloat(Value: Double); override;
procedure SetAsInteger(Value: Longint); override;
procedure SetAsString(const Value: string); override;
procedure SetVarValue(const Value: Variant); override;
public
constructor Create(AOwner: TComponent); override;
property Value: TBcd read GetAsBCD write SetAsBCD;
published
{ Lowercase to avoid name clash with C++ Currency type }
property currency: Boolean read FCurrency write SetCurrency default False;
property MaxValue: String read FMaxValue write SetMaxValue;
property MinValue: String read FMinValue write SetMinValue;
property Precision: Integer read FPrecision write SetPrecision default 0;
property Size default 4;
end;
[解决办法]
没用过Delphi自带的数据库
[解决办法]
突然觉得自己什么都不会
[解决办法]
高手呀。研究这么透彻。
[解决办法]
AsString好象是万能的,即使是 Blob类型,也可以 AsString, 即使数据中包含Char(0), 也不会截断后面的数据。
我以前就是这样就连时间日期字段我也用AsString
[解决办法]
都是强人。。。。INSIDE VCL 买了好久,一直没有看完毕。。
[解决办法]
看来大家的习惯都是Ctrl+C,Ctrl+V...