找回密码
 立即注册
12
返回列表 发新帖
收起左侧
楼主: yafeilinux

第26篇 数据库(六)SQL关系表格模型QSqlRelationalTableModel

37
回复
26524
查看
[复制链接]
累计签到:3 天
连续签到:1 天
2016-4-6 08:59:11 显示全部楼层
setItem(j, 4, new QStandardItem(QString::number(num+1, 10)));
setItem(j, 8, new QStandardItem(QString::number(price,'f',2)));

大神,这两句应该怎么理解
回复 支持 反对

使用道具 举报

累计签到:1227 天
连续签到:1 天
2016-4-6 19:15:36 显示全部楼层
studyqt 发表于 2016-4-6 08:59
setItem(j, 4, new QStandardItem(QString::number(num+1, 10)));
setItem(j, 8, new QStandardItem(QStrin ...

建议查看下setItem帮助文档。
回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:1 天
2016-4-18 10:35:07 显示全部楼层
yafeilinux 发表于 2016-4-6 19:15
建议查看下setItem帮助文档。

  model->setTable("sys_sale");
     int j=0;
    if(j==model->rowCount())
    {
        QSqlRecord record = model->record(j);
        record.setValue("order_sn",orderStr);
        record.setValue("pay_sn",orderStr);
        record.setValue("store_id",GlobalVariable::AgencyId);
        record.setValue("store_name",GlobalVariable::AgencyName);
        record.setValue("buyer_id",_map["buyerId"]);
        record.setValue("buyer_name",_map["buyerName"]);
        record.setValue("buyer_email",_map["buyerEmail"].toString()!=""?_map["buyerEmail"].toString():"custom@email.com");
        record.setValue("add_time",timeStr);
        record.setValue("payment_code",_map["payMethod"]);
        record.setValue("payment_time",timeStr);
        record.setValue("finished_time",timeStr);
        record.setValue("goods_amount",_map["totalPrice"]);
        record.setValue("order_amount",_map["realPrice"]);
        //计算会员卡金额
        double cardamount;
        if(_map["payMethod"]=="custom")
        {
            cardamount = ui->cardEdit->text().toDouble();
            record.setValue("pd_amount",ui->cardEdit->text());
        }
        else if(_map["payMethod"]=="member")
        {
             cardamount = cashLineEdit->text().toDouble();
             record.setValue("pd_amount",cashLineEdit->text());
        }
        else
        {
            cardamount = ui->cardEdit->text().toDouble();
            record.setValue("pd_amount",ui->cardEdit->text());
        }

        record.setValue("seller",GlobalVariable::SaleManName);
        model->insertRecord(-1,record);
        int id = 0;
        if(model->submitAll())
        {
            QString sql = "select max(order_id) from sys_sale";
            query.exec(sql);
            query.next();
            id = query.record().value(0).toInt();
        }
        else{
            QMessageBox::information(this,"提示","更新销售表失败",QMessageBox::Yes);
        }
大神写的setValue提交不上去,
回复 支持 反对

使用道具 举报

累计签到:29 天
连续签到:1 天
2016-7-19 16:21:12 显示全部楼层
看来还是第一种用途最广
回复 支持 反对

使用道具 举报

累计签到:580 天
连续签到:3 天
2016-9-2 12:04:04 显示全部楼层
silverdemon 发表于 2016-1-22 09:12
我也出现一楼说的情况:

更改course之后,显示的是ID值,而不是course的name

我的情况和你一样呢,你最后怎么解决了?
回复 支持 反对

使用道具 举报

累计签到:20 天
连续签到:1 天
2016-9-8 17:54:20 显示全部楼层
楼主,想问下,这个用到sqlite数据库的程序如何发布release版本,然后在一个没有安装任何环境上的电脑上运行呀,试了很多办法还是不行
回复 支持 反对

使用道具 举报

累计签到:1227 天
连续签到:1 天
2016-9-13 16:00:20 显示全部楼层
倔强的蜗牛 发表于 2016-9-8 17:54
楼主,想问下,这个用到sqlite数据库的程序如何发布release版本,然后在一个没有安装任何环境上的电脑上运 ...

需要包含插件目录的,例如:C:\Qt\4.8.6\plugins\sqldrivers,把里面这个目录复制出来,里面只需要包含sqlite相关的文件即可。
回复 支持 反对

使用道具 举报

累计签到:20 天
连续签到:1 天
2016-9-14 12:53:49 显示全部楼层
本帖最后由 倔强的蜗牛 于 2016-9-14 12:55 编辑
yafeilinux 发表于 2016-9-13 16:00
需要包含插件目录的,例如:C:\Qt\4.8.6\plugins\sqldrivers,把里面这个目录复制出来,里面只需要包含sql ...

嗯,我试了一下你的方法还是不行,在其他电脑上运行exe文件时显示“无法启动此程序,因为计算机丢失QtSql4.dll,尝试重新安装该程序以解决此问题”,呜呜,怎么办。
回复 支持 反对

使用道具 举报

累计签到:1227 天
连续签到:1 天
2016-9-19 15:58:18 显示全部楼层
倔强的蜗牛 发表于 2016-9-14 12:53
嗯,我试了一下你的方法还是不行,在其他电脑上运行exe文件时显示“无法启动此程序,因为计算机丢失QtSql4 ...

你去Qt安装目录的bin目录中找到这个文件复制过来
回复 支持 反对

使用道具 举报

累计签到:1227 天
连续签到:1 天
2016-9-19 15:58:27 显示全部楼层
倔强的蜗牛 发表于 2016-9-14 12:53
嗯,我试了一下你的方法还是不行,在其他电脑上运行exe文件时显示“无法启动此程序,因为计算机丢失QtSql4 ...

你去Qt安装目录的bin目录中找到这个文件复制过来
回复 支持 反对

使用道具 举报

累计签到:20 天
连续签到:1 天
2016-9-21 18:05:56 显示全部楼层
yafeilinux 发表于 2016-9-19 15:58
你去Qt安装目录的bin目录中找到这个文件复制过来

嗯嗯,我把这个缺少的dll文件复制到了项目下,目录如下,这次到其他无环境电脑上运行,没有报错,可是更尴尬的是双击exe文件直接没有反应,没有任何提示,呜呜~~~,


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

累计签到:20 天
连续签到:1 天
2016-9-21 18:41:05 显示全部楼层
yafeilinux 发表于 2016-9-19 15:58
你去Qt安装目录的bin目录中找到这个文件复制过来

我知道我错哪了呢,应该把sqlite驱动放在sqldriver文件下才可以,是我粗心大意呢,谢谢你耐心的解答咯,问题解决了
回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:1 天
2016-11-15 10:25:45 显示全部楼层
qt能写这样的加密吗,
//验证签名
19     public function valid()
20     {
21         $echoStr = $_GET["echostr"];
22         $signature = $_GET["signature"];
23         $timestamp = $_GET["timestamp"];
24         $nonce = $_GET["nonce"];
25         $token = TOKEN;
26         $tmpArr = array($token, $timestamp, $nonce);
27         sort($tmpArr, SORT_STRING);
28         $tmpStr = implode($tmpArr);
29         $tmpStr = sha1($tmpStr);
30         if($tmpStr == $signature){
31             echo $echoStr;
32             exit;
33         }
34     }
35
就是把几个字符串数组化,按字典序排序,在qt中应该怎么处理
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-5-5 00:45:48 显示全部楼层
老师,不知道为什么每次运行的时候它都会往数据库重新加上初始时候那三条信息,就导致里面内容越来越多
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-5-5 00:48:00 显示全部楼层
ysl19941210 发表于 2017-5-5 00:45
老师,不知道为什么每次运行的时候它都会往数据库重新加上初始时候那三条信息,就导致里面内容越来越多 ...

看了下前面回答,已经解决了。。。
回复 支持 反对

使用道具 举报

累计签到:384 天
连续签到:1 天
2017-5-16 08:04:52 显示全部楼层
我有个疑问:当外键对应的表,有添加或者删除时(即有更改时),如何使得这一变化,也在外键的QComboBox部件中更新?
回复 支持 反对

使用道具 举报

累计签到:384 天
连续签到:1 天
2017-5-16 08:16:13 显示全部楼层
XXian 发表于 2013-11-6 19:03
写错了,应该是student里原来课程的ID因为model->setRelation(2,QSqlRelation("course","id","name"));这 ...

实现了没?我也有这个疑问?
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-12-9 10:15:42 显示全部楼层
太阳的冷漠 发表于 2016-3-5 17:20
**** 作者被禁止或删除 内容自动屏蔽 ****

我也出现了这种关闭后重新打开重复插入数据的问题,最后对比了下载的代码,发现是我把primary写错成了peimary导致的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册