前几天我发布了一个关于使用哪个组件制作MultiDatabaseWithJustOneComponent的问题,我遵循一般建议来使用dbexpress。
FirebirdSQL有日期字段,SQL Server 2008也有日期字段。但由于某种原因,日期字段被转换为TWideStringField,当我完全相信我在delphi中看到所有错误消息时,就像'灾难性故障'一样,我有了新的。 ; - )
D2010似乎已经纠正了这个'错误',但我没有多余的现金可以处理它,所以......有没有人有任何想法?
提前致谢。
答案 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都会错误地自动检测字段类型。覆盖它,它应该没问题。