0

几天前,我发布了一个关于使用哪个组件来制作 MultiDatabaseWithJustOneComponent 的问题,我遵循使用 dbexpress 的一般建议。

FirebirdSQL 有日期字段,SQL Server 2008 也有日期字段。但是由于某种原因,日期字段被转换为 TWideStringField,当我真正确信我已经在 delphi 中看到了所有错误消息(如“灾难性故障”)时,我就有了新的错误消息。;-)

D2010 似乎已经纠正了这个“错误”,但我没有额外的大笔现金来处理它,所以......有人有什么想法吗?

提前致谢。

4

2 回答 2

4

Delphi 2006 发布时,SQL Server 没有日期字段类型,只有 DateTime。(日期和时间字段是随 SQL Server 2008 添加的)。结果 D2006 中的 DBExpress 驱动程序不知道如何处理它们。

您最好的选择可能是使用 CAST 或 CONVERT 将日期字段强制转换为 DateTime(或 SmallDateTime),然后 D2006 将知道如何处理它们。

SELECT CAST(DateField as DateTime)

OR 

SELECT CONVERT(DateTime, DateField)

如果可能,或者在您的数据库架构中使用 DateTime 或 SmallDateTime 字段。SQL Server DateTime 类似于 Delphi 的 TDateTime。

另一种可能性是隐蔽到 dbGO(ADO 组件),但这需要更多的返工。

于 2009-11-30T20:42:59.283 回答
0

手动将field.FieldType类型设置为TDateTimeField. 这只是意味着无论出于何种原因,DBExpress 都会错误地自动检测字段类型。覆盖它,它应该没问题。

于 2009-11-30T19:33:06.473 回答