Saludos
El Query de Ado no tiene manera de asignar el tipo de dato como AsString, AsInteger,... solo tiene value; pero para Ado, Qué tipo de dato es el que tiene Value

?, a mi entender no sabe y esa misma pregunta se hace el componente, y debemos contestar asingando el tipo de dato en
DataType
Código Delphi
[-]
TDataType = TFieldType;
...
...
TFieldType = (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);