当使用带有 mtTableFields MetaDataType 的 TFDMetaInfoQuery 时,文档说将返回的 Column_Attributes 字段转换为 TFDDataAttributes 类型,以便检查特定字段的属性,例如不需要 (caAllowNull) 和 caReadOnly。这究竟是如何完成的?考虑以下代码段,它返回有关 MyTable 字段的数据表:
var
FieldAttributes: TFDDataAttributes;
Required: Boolean;
begin
FDMetaInfoQuery1.MetaInfoKind := mkTableFields;
FDMetaInfoQuery1.Open('MyTable');
for i := 0 to FDMetaInfoQuery1.RecordCount -1 do
begin
FieldAttributes := TFDDataAttributes(FDMetaInfoQuery1.FieldByName('Column_Attributes').AsExtended);
// test for particular TFDDataAttribute flags in the TFDDataAttributes set
// ie, if not ( caAllowNull in FieldAttributes ) then // flag column as required
end;
转换 Column_Attributes 列的行会生成 Invalid typecast 的编译器错误。我尝试将 Column_Attributes 字段作为变体和其他几种类型,但我不断收到相同的错误。顺便说一下,Column_Attributes 列的数据类型是 dtUInt32。FireDAC 帮助说“将值转换为 FireDAC.Stan.Intf.TFDDataAttributes”。
建议?