一个数据库操作的问题

changfenglee 2012-08-17 10:31:52
大侠们:
下面这段代码一直编译不过去,请帮忙看看问题出在哪了!
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select 配件编号, 配件名称, 配件规格, sum(数量) as 数量 from 收支记录 where (时间 between '''+
DateToStr(RzDateTimeEdit6.Date)+''' and '''+DateToStr(RzDateTimeEdit7.Date)+''') and (收支=''收入'') group by 配件编号,配件名称,配件规格');
qry1.Open;
MStr1:=MStr1+'进';
qry1.First;
for hz:=1 to qry1.RecordCount do
begin
HzCnt:=qry1.fieldbyname('数量').AsString;
PNStr:=qry1.fieldbyname('配件编号').AsString;

qry3.Close;
qry3.SQL.Clear;
qry3.SQL.Add('update 配件信息 set '+ MStr1+' = '''+ HzCnt+''' where 配件编号='''+ PNStr+''' ' );//这条语句有问题
qry3.ExecSQL;
qry1.Next;
Next

end;
...全文
88 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaikai_kk 2012-08-17
数字开头的字段,加上中括号

... set [8月进]='25' ...

另外如果这个字段是数字类型,25可以不要引号
回复
changfenglee 2012-08-17
回复
changfenglee 2012-08-17
回复
changfenglee 2012-08-17
配件编号是 文本类型
回复
MMas 2012-08-17
会不会是“配件编号”在数据库里定义为数值?如果这样,UPDATE语句会返回类型不相同的错误信息。
回复
MMas 2012-08-17
会不会是“配件编号”在数据库里定义为数值?如果这样,UPDATE语句会返回类型不相同的错误信息。
回复
MMas 2012-08-17
FOR改成
QRY1.FIRST;
WHILE NOT QRY1.EOF DO
BEGIN
...;
QRY1.NEXT;
END;

数据库应该会有错误提示返回的,试试先用常量操作QRY3,语句毛病有时不易找。
回复
changfenglee 2012-08-17
怎么把图片发上去啊
回复
kaikai_kk 2012-08-17
在执行qry3.ExecSQL;前用showmessage(qry3.sql.text);显示出来看看语句对不对

另外用了for hz:=1 to qry1.RecordCount do这个循环,后面的qry1.Next就不需要用了
建议用while not qry1.eof do这种循环方式

还有最后还有一个Next是啥东西,去掉吧
回复
xutaiqing 2012-08-17
错误提示是什么
回复
bdmh 2012-08-17
你不会copy过来直接用吧,里面用到的变量,控件,函数你都有吗
回复
酣酣 2012-08-17
提示啥呀?
回复
changfenglee 2012-08-17
感谢kaikai_kk,你的是对的
回复
相关推荐
发帖
数据库相关
创建于2007-08-02

2454

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2012-08-17 10:31
社区公告
暂无公告