Delphi 2006将sql server 2008快速日期字段翻译为twidestring

时间:2009-11-30 19:26:15

标签: delphi sql-server-express dbexpress

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

FirebirdSQL有日期字段,SQL Server 2008也有日期字段。但由于某种原因,日期字段被转换为TWideStringField,当我完全相信我在delphi中看到所有错误消息时,就像'灾难性故障'一样,我有了新的。 ; - )

D2010似乎已经纠正了这个'错误',但我没有多余的现金可以处理它,所以......有没有人有任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:4)

当Delphi 2006发布时,SQL服务器没有日期字段类型,只有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组件),但这需要更多的返工。

答案 1 :(得分:0)

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