在DELPHI上从SQL检索datename

时间:2013-09-26 18:40:57

标签: delphi-xe2 sql-server-2005-express tdbgrid tquery

我正在使用Delphi XE2和SQL Server 2005 Express。

我有一个名为maintenance的表,其中包含以下列:

id Integer;
Activity Varchar(x); = actividad
Description Memo; = descripcion
Day Integer;= dia_sem
User Integer; = usuario

id, activity, description, day, user

我使用此表记录每天必须要进行维护的活动,如周一他们必须在x或y等后面清理,周二他们必须做其他事情等。

我将日期从1日保存到7日是星期日= 1到星期六= 7,所以程序将检索queryday.text = DayOfWeek(Now)的所有活动,并警告用户有活动要做。 / p>

我的问题是我希望当天在DBGrid中显示全名,而不是数字。

Sunday
Monday 
Tuesday etc.

在SQL上,我使用以下方式获取全天名称:

Select id AS ID, actividad AS Actividad, descripcion AS Descripcion,(datename(weekday, dia_sem-2)) AS Dia, usuario AS Usuario
from mantenimiento

我设置dia_sem-2所以它会匹配我想要的那天(显然是星期二= 1)

我的问题是,当我将这个查询添加到delphi上的Tquery并且我添加了字段时,没有添加“day”字段,它不存在。我做错了什么,或者我怎样才能实现我想做的事情?。

1 个答案:

答案 0 :(得分:0)

你说过tQuery吗? 如果我没记错的话,tQuery就是一个BDE组件。 BDE是过时的技术,建议使用更现代的方法连接数据库。

话虽这么说,BDE不知道如何处理Unicode字符串数据类型。 (我不确定在首次制作BDE时,Unicode是否存在。)

从SQL Server函数DateName返回的类型是nvarchar。 'n'表示它是一个Unicode字符串。

作为一种解决方法,您可以将结果转换为Ascii字符串。尝试这样的事情:

cast(datename(...)as varchar(20))