【问题标题】:Retrieve datename from SQL on DELPHI从 DELPHI 上的 SQL 中检索日期名称
【发布时间】:2013-10-02 21:18:11
【问题描述】:

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

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

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 的这一天保存为 Sunday=1 到 Saturday=7,因此程序将检索 queryday.text= DayOfWeek(Now) 的所有活动,并警告用户有活动要完成。

我的问题是我想在 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”字段,它不存在。我做错了什么或者我怎样才能实现我想要做的事情?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢!!!,解决方法奏效了。既然您提到 TQuery 已过时,您能否指出我应该使用什么来代替 Tquery?祝你今天过得愉快!! @user1008646
    • 当谈到最新的 Delphi 数据库技术时,我恐怕是一只恐龙。我使用 BDE 多年,并且在使用 ADO(tAdoConnection、tAdoQuery)方面取得了很大成功,但我知道还有一些我还不熟悉的新技术,如 dbExpress 和 DataSnap。希望这里有更多见识的德尔福专家提供他们的意见。
    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 2020-05-18
    • 1970-01-01
    • 2015-12-28
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多