一个数据库操作的问题

葫芦老四 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;
...全文
135 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-08-17
  • 打赏
  • 举报
回复
数字开头的字段,加上中括号

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

另外如果这个字段是数字类型,25可以不要引号
葫芦老四 2012-08-17
  • 打赏
  • 举报
回复
葫芦老四 2012-08-17
  • 打赏
  • 举报
回复
葫芦老四 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,语句毛病有时不易找。
葫芦老四 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
  • 打赏
  • 举报
回复
提示啥呀?
葫芦老四 2012-08-17
  • 打赏
  • 举报
回复
感谢kaikai_kk,你的是对的

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧