标题:问下老大读取数据库后日期数据显示的问题
作者:bjiang
日期:2006-08-18 16:21
内容:
看了你的“新新娘管理系统”,我用的是odbc数据库,我发现“顾客管理”栏里面的日期显示正确,如2006-08-09,而消费次数,显示的日期变成了如:2006-08-09T00:00:00,我自己在数据库表里直接写入数据,“顾客管理”的时期还是显示正确,消费次数的日期显示为上面所示。我现在在做一个系统,都是出现上面的问题,请问有怎么解决?
#1 [XChinux 08-18 17:09]
原来程序是直接显示数据库查询出来的数据的。
目前依你的情况看,可有两种解决方法:
1、修改SQL语句,在SQL语句中确定最后要显示的格式。
2、在sqlquerymodelconsumebottomleft.cpp这个文件中的
QVariant SqlQueryModelConsumeBottomLeft::data(const QModelIndex & index, int role) const
这个函数中对查询出来的结果进行处理,转变为你想要的格式
#2 [bjiang 08-18 18:54]
QVariant SqlQueryModelCustomer::data(const QModelIndex & index, int role) const
{
QVariant value = QSqlQueryModel::data(index, role);
if (value.isValid() && role == Qt::DisplayRole && index.column() == 3)
{
value = (value.toInt() == 1 ? tr("男") : tr("女"));
return value;
}
if (value.isValid() && role == Qt::DisplayRole && (index.column() == 2 || index.column() == 3))
{
value = "¥" + value.toString();
return value;
}
if (role == Qt::TextAlignmentRole && index.column() > 1 && index.column() < 5)
{
value = (Qt::AlignVCenter + Qt::AlignRight);
return value;
}
if (role == Qt::TextAlignmentRole && (index.column() == 2 || index.column() == 3 || index.column() == 6))
{
value = (Qt::AlignCenter);
return value;
}
return value;
}
这是"顾客管理"对数据处理程序,这里是没有对日期的处理,而时期是显示正确,"消费次数"和这个差不多,显示不正确,有点糊涂,麻烦老大再指点1,2.
#3 [XChinux 08-18 19:07]
简单地说,把数据取出来,用它来初始化Qt的日期时间类型对象,然后转化成需要的格式.
#4 [bjiang 08-19 08:23]
再请问下用SQL语句自怎么实现,因为我用"select * from example where date='2005-9-8'",sql语句不能执行,在数据库是可以的,我要用日期为条件来选数据时,麻烦具体说说这个如何解决,多谢了!
#5 [XChinux 08-19 21:09]
觉得这应该是由于使用的是ODBC的缘故吧。
我这里也没有环境,无法试验。