起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 243|回复: 11

【结贴】[请求]求助关于Query insert问题!**

[复制链接]
发表于 2009-2-17 09:24:23 | 显示全部楼层 |阅读模式
我向数据集中插入一条数据的代码如下
qryUpdate := TQuery.Create(self);
  try
    qryUpdate.ConnectionString := 'DATABASEURL=Biz:\OPERATION\OperationDB.Database';
    lSql := 'insert into XSCJGL (XH,XM,ZY,CJ,XK,RXSJ) select XH,XM,ZY,0-CJ as FCJ,XK,RXSJ from XSCJGL';
    qryUpdate.CommandText := lSql;
    qryUpdate.Execute;
  finally
    qryUpdate.Free;
  end;
每次点击按钮执行的时候都会报错“无法将null值插入字段id”,但是我已经在主键业务参数中设置了主键,是我代码有毛病吗?
回复

使用道具 举报

 楼主| 发表于 2009-2-17 09:25:31 | 显示全部楼层
我在sql server中没有设置主键自增。
回复 支持 反对

使用道具 举报

发表于 2009-2-17 09:31:38 | 显示全部楼层
tquery不能用平台的字段业务信息,只是一个简单的数据控件。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-17 09:35:59 | 显示全部楼层
那query不能用于数据的insert操作吗?
如果不可以,那么哪种操作适合多字段的数据插入呢?
回复 支持 反对

使用道具 举报

发表于 2009-2-17 09:43:32 | 显示全部楼层
不是
因为你是Query 直接发SQL插入数据的,这样将不会应用到平台数据字典层的定义,而是直接数据库交互了,所以表的主键字段的填充,或者说 必填的字段 和值,也需要写到SQL语句中,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-17 09:47:02 | 显示全部楼层
哦,意思是通过query插入数据不会触发字典层的主键自增定义,而是直接保存到数据中,必须要自己insert主键,明白了!
那有什么方法可以触发字典层吗,就像这个帖子的http://bbs.justep.com/forum.php? ... t=query%B2%E5%C8%EB
回复 支持 反对

使用道具 举报

发表于 2009-2-17 10:27:24 | 显示全部楼层
用标准数据集就可以触发字典层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-17 11:51:04 | 显示全部楼层
标准数据集可以insert吗
我是这样写的
    DataSetBrokerXXLR.DataSet.Close;
    TSQLDataSet(DataSetBrokerXXLR.DataSet).SQL.Text :='insert into XSCJGL (XH,XM,ZY,CJ,XK,RXSJ) select XH,XM,ZY,0-CJ as FCJ,XK,RXSJ from XSCJGL';
    DataSetBrokerXXLR.DataSet.Open;
但是报错“取字段定义失败”
回复 支持 反对

使用道具 举报

发表于 2009-2-17 12:17:23 | 显示全部楼层
标志数据集不是发SQL
而是给字段一个一个赋值后,然后执行
DataSetBrokerXXLR.DataSet.Post;  这是保存到本地,一般都分两步
DataSetBrokerXXLR.DataSet.ApplyUpdates;  这步是真正提交数据库的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-17 13:26:38 | 显示全部楼层
我表里的字段非常多,一个一个赋值肯定行不通,有没有其他的方法?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-27 18:15 , Processed in 0.040292 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表