起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: trickle

如何在数据网格中有规律的修改某一个字段的值,急!

[复制链接]
 楼主| 发表于 2008-6-17 16:50:16 | 显示全部楼层
谢谢了,还是不太明白
继续摸索
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-17 16:52:28 | 显示全部楼层
嗯,如果我想在导航栏的保存按钮里面写代码,该怎么改?
貌似主窗体里面并没有给出导航栏的代码吧
设想是增加一个控制变量,新增、删除的时候赋不同的值,没找到地方呢
可否指教以下
回复 支持 反对

使用道具 举报

发表于 2008-6-17 17:00:43 | 显示全部楼层
可以将代码写在DataNavigator的事件中
http://bbs.justep.com/forum.php?mod=viewthread&tid=517
1楼有在事件中的控制,可以判断是按了哪个钮
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-18 11:15:08 | 显示全部楼层

嗯,有进展了,但是有错误,请帮忙分析一下这个错误是什么原因

错误见图
代码如下,现在如果只是插入新记录,然后按保存按钮,一切很好,后面的序号自动增1
但是,如果在原有记录上修改序号,点保存,就会出现如下错误

3.jpg

39.12 KB, 下载次数: 200

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-18 11:15:51 | 显示全部楼层

代码以及错误后的图

procedure TXLXX.DataSetQYLJSJJ2BeforePost(DataSet: TDataSet);
begin
  DataSetQYLJSJJ2.Connection.ExecuteSQL('update QYLJB set XH=XH + 1 where QYLJB.XLID='''+DataSetXZXLSJJ.FieldByName('XLID').AsString+''' AND XH >= ' + DataSetQYLJSJJ2.FieldByName('XH').AsString);
end;

procedure TXLXX.DataSetQYLJSJJ2AfterPost(DataSet: TDataSet);
begin
//保存记录后,刷新
  DataSetQYLJSJJ2.ApplyUpdates;
  DataSetQYLJSJJ2.Refresh;
end;

4.jpg

28.42 KB, 下载次数: 204

回复 支持 反对

使用道具 举报

发表于 2008-6-18 11:18:07 | 显示全部楼层
看一下更新选项,设置成只对主键更新
或贴更新选项的截图上来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-18 11:26:10 | 显示全部楼层
更新选项的图

5.jpg

42.59 KB, 下载次数: 175

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-18 11:29:07 | 显示全部楼层
go on

6.jpg

31.15 KB, 下载次数: 162

回复 支持 反对

使用道具 举报

发表于 2008-6-18 11:35:06 | 显示全部楼层
你把那几个被调用的函数都加上断点,踪跟一个是哪里出现的重复值,在什么情况下出现的重复值 ,找到原因后,再想法用代码处理。
用Ctrl+F7可以查看变量值,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-18 13:52:23 | 显示全部楼层
原来并没有设成主键更新的时候,即设为所有字段的时候,功能运行的效果和现在是一样的
另外,想做一下控制,即只有按了导航栏的新增按钮的时候才调用beforePost里面的方法,设想添加一个变量,然后在按了新增按钮的时候给这个变量赋值。请问这个变量该在哪里声明,是业务信息的代码还是主窗体的代码。因为导航栏是加在主窗体上的,但是这个+1的方法却是写在业务信息里面的
谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 05:40 , Processed in 0.042701 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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