FDQuery 怎么能插入NULL参数
2016-06-17 19:22
661 查看
[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;
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.
ftFixedChar 对应的数据库字段类型是char
ftString 对应的数据库字段类型是varchar
所以修改数据库类型即可。
以前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;
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.
ftFixedChar 对应的数据库字段类型是char
ftString 对应的数据库字段类型是varchar
所以修改数据库类型即可。
相关文章推荐
- 10位以内二进制数字转十进制计算器(Printing the Decimal Equivalent of a Binary Number)
- UE4(二)学习之路之Matinee制作屏幕淡入淡出效果
- Android学习之 图解调用invalidate()和requestLayout()的过程
- UIAutomator remote debug方法
- easyui datagrid
- UICollectionView基础
- iOS开发UI篇—控制器的View的创建
- ORA-22922 :nonexistent LOB value解决方案
- PHP 继承,组合,单模式,GUID,等混合实例
- easyui datagrid editor在编辑状态下更新列值并不结束编辑。
- UiAutomator和Espresso比较
- 自定义锁超时
- js遍历json的key和value
- Message,Handler,MessageQueue,Looper之间的关系
- minSdkVersion、argetSdkVersion、maxSdkVersion、build target、android系统版本、API Level合理设置各个值的意义
- NYOJ 1100 WAJUEJI which home strong! (BFS)
- iOS开发UI篇—Quartz2D使用(图形上下文栈)
- 关于build.gradle文件操作
- android Gui系统之SurfaceFlinger(3)
- ModernUI + MVVM 加载页面