天天看點

FDQuery 怎麼能插入NULL參數

[FireDAC][Phys][MSSQL]-335. Parameter [fieldAA] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call

以前BDE可以。

ADO

 qrypub->ParamByName("fieldAA")->DataType= ftDateTime;

qrypub->ParamByName("fieldAA")->DataType= ftString;

DataType就是字段類型,設定字段類型就可以插入NULL值了,不指派執行insert或update語句自動填充為NULL值了。

2016.9.23 record,

fdquery有個屬性,FormatOptions.DefaultParamDataType=ftUnknow,預設是ftUnknown,改為ftString或者ftVariant也許就好了,未測試。

2017.5.11 測試用ftString是ok了。

qrypub->FormatOptions->DefaultParamDataType = ftString;

       FDQuery1.FormatOptions.DefaultParamDataType := ftString;

TFieldType : unsigned char { ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, ftFixedWideChar, ftWideMemo, ftOraTimeStamp, ftOraInterval, ftLongWord, ftShortint, ftByte, ftExtended, ftConnection, ftParams, ftStream, ftTimeStampOffset, ftObject, ftSingle };

TADTField

TAggregateField

TArrayField

TAutoIncField

TBCDField

TBinaryField

TBlobField

TBooleanField

TByteField

TBytesField

TCurrencyField

TDataSetField

TDateField

TDateTimeField

TExtendedField

TFloatField

TFMTBCDField

TGraphicField

TGuidField

TIDispatchField

TIntegerField

TInterfaceField

TLargeintField

TLongWordField

TMemoField

TNumericField

TObjectField

TReferenceField

TShortintField

TSingleField

TSmallintField

TSQLTimeStampField

TSQLTimeStampOffsetField

TStringField

TTimeField

TUnsignedAutoIncField

TVarBytesField

TVariantField

TWideMemoField

TWideStringField

TWordField

Param [PName] type changed from [ftString] to [ftFixedChar]. Query must be reprepared. Possible reason: an assignment to a TFDParam.AsXXX property implicitly changed the parameter data type. Hint: use the TFDParam.Value or appropriate TFDParam.AsXXX property.