You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eu tenho uma tabela no SQLite com o seguinte campo do tipo GUID
CREATE TABLE Medicao (
Codigo INTEGER PRIMARY KEY AUTOINCREMENT ,
Indicador GUID NOT NULL REFERENCES Indicadores (ID) ON DELETE CASCADE
ON UPDATE CASCADE,
Valor DOUBLE(11,3) )
Embora seja sabido que Sqlite é um banco de dados não tipado, é possível usufruir da engine Firedac para detectar automaticamente campos "GUID" como UUID durante o método Autocreate dos fields, em um componente FDQuery por exemplo.
O método abaixo retornou o seguinte erro
"Cannot find type for field "indicador""
uses Dataset.Serialize;
function DataModule1.MeuJsonArray: TJsonArray;
begin
Query1.Open('select codigo, indicador from medicao');
MeuJsonArray := Query1.ToJsonArray();
end;
Eu tenho uma tabela no SQLite com o seguinte campo do tipo GUID
CREATE TABLE Medicao (
Codigo INTEGER PRIMARY KEY AUTOINCREMENT ,
Indicador GUID NOT NULL REFERENCES Indicadores (ID) ON DELETE CASCADE
ON UPDATE CASCADE,
Valor DOUBLE(11,3) )
Embora seja sabido que Sqlite é um banco de dados não tipado, é possível usufruir da engine Firedac para detectar automaticamente campos "GUID" como UUID durante o método Autocreate dos fields, em um componente FDQuery por exemplo.
O método abaixo retornou o seguinte erro
"Cannot find type for field "indicador""
uses Dataset.Serialize;
function DataModule1.MeuJsonArray: TJsonArray;
begin
Query1.Open('select codigo, indicador from medicao');
MeuJsonArray := Query1.ToJsonArray();
end;
O erro ocorreu na seguinte linha
unit DataSet.Serialize.Export;
function TDataSetSerialize.DataSetToJSONArray(const ADataSet: TDataSet; const IsChild: Boolean): TJSONArray;
....
case LField.DataType of
TFieldType.ftBoolean:
begin
case TDataSetSerializeUtils.BooleanFieldToType(TBooleanField(LField)) of
bfUnknown, bfBoolean:
Result.AddPair(LKey, TDataSetSerializeUtils.BooleanToJSON(LField.AsBoolean));
else
Result.AddPair(LKey, TJSONNumber.Create(LField.AsInteger));
end;
end;
TFieldType.ftInteger, TFieldType.ftSmallint, TFieldType.ftShortint:
Result.AddPair(LKey, TJSONNumber.Create(LField.AsInteger));
TFieldType.ftLongWord, TFieldType.ftAutoInc:
Result.AddPair(LKey, TJSONNumber.Create(LField.AsWideString));
TFieldType.ftLargeint:
Result.AddPair(LKey, TJSONNumber.Create(LField.AsLargeInt));
TFieldType.ftSingle, TFieldType.ftFloat:
Result.AddPair(LKey, TJSONNumber.Create(LField.AsFloat));
TFieldType.ftString, TFieldType.ftWideString, TFieldType.ftMemo, TFieldType.ftWideMemo:
Result.AddPair(LKey, TJSONString.Create(LField.AsWideString));
TFieldType.ftTimeStamp, TFieldType.ftDateTime, TFieldType.ftTime:
Result.AddPair(LKey, TJSONString.Create(DateToISO8601(LField.AsDateTime, TDataSetSerializeConfig.GetInstance.DateInputIsUTC)));
TFieldType.ftDate:
Result.AddPair(LKey, TJSONString.Create(FormatDateTime(TDataSetSerializeConfig.GetInstance.Export.FormatDate, LField.AsDateTime)));
TFieldType.ftCurrency:
Result.AddPair(LKey, TJSONString.Create(FormatCurr(TDataSetSerializeConfig.GetInstance.Export.FormatCurrency, LField.AsCurrency)));
TFieldType.ftFMTBcd, TFieldType.ftBCD:
Result.AddPair(LKey, TJSONNumber.Create(BcdToDouble(LField.AsBcd)));
TFieldType.ftDataSet:
begin
LNestedDataSet := TDataSetField(LField).NestedDataSet;
Result.AddPair(LKey, DataSetToJSONArray(LNestedDataSet));
end;
TFieldType.ftGraphic, TFieldType.ftBlob, TFieldType.ftOraBlob, TFieldType.ftStream:
Result.AddPair(LKey, TJSONString.Create(EncodingBlobField(LField)));
else
raise EDataSetSerializeException.CreateFmt(FIELD_TYPE_NOT_FOUND, [LKey]);
end;
incluir também
case LField.DataType of
...
TFieldType.ftGuid: Result.AddPair(LKey, TJSONString.Create(LField.AsWideString));
The text was updated successfully, but these errors were encountered: