我用ADOConnection1连接数据库,ADOQuery1连ADOConnection1,DataSource1连ADOQuery1,DBGridEh1连DataSource1:
1、我已通过一个按钮从数据库查询出A、B、C、D四列信息显示在DBGridEh1中(这四列数据来源于一个表或交叉两个表的信息)
2、之后需要对DBGridEh1中的数据进行编辑,新增行,删除行等等操作,完成之后点击另外一个按钮更新到SQL数据库中;
问题:
1、我新增行时自动赋值:A列=变量1,B列=变量2?
2、C列只允许录入0-9的数字,否则提示信息并不允许离开焦点?
3、D列只允许录入10个字符长度?
4、点保存按钮时,检查DBGridEh1里的数据,C列和D列是否有空值?
1)、如果C、D两列有任意空值,提示第n行有空值,并不更新数据库?
2)、如果C、D两列无空值,将DBGridEh里的数据更新或新增记录到数据库(一个表或交叉两个表)?看似有点复杂,但对于高手不算难事,主要是不知道怎么循环判断,望高手指导一下!
1、我已通过一个按钮从数据库查询出A、B、C、D四列信息显示在DBGridEh1中(这四列数据来源于一个表或交叉两个表的信息)
2、之后需要对DBGridEh1中的数据进行编辑,新增行,删除行等等操作,完成之后点击另外一个按钮更新到SQL数据库中;
问题:
1、我新增行时自动赋值:A列=变量1,B列=变量2?
2、C列只允许录入0-9的数字,否则提示信息并不允许离开焦点?
3、D列只允许录入10个字符长度?
4、点保存按钮时,检查DBGridEh1里的数据,C列和D列是否有空值?
1)、如果C、D两列有任意空值,提示第n行有空值,并不更新数据库?
2)、如果C、D两列无空值,将DBGridEh里的数据更新或新增记录到数据库(一个表或交叉两个表)?看似有点复杂,但对于高手不算难事,主要是不知道怎么循环判断,望高手指导一下!
自动赋值,完全可以在添加时,给数据集赋值,不就是append一个记录吗,然后对字段赋值就行了,但是对于多表联合查询是不行的,所以你的问题先要搞清楚是单表还是多表,是对数据集直接操作还是在界面上临时操作,如果脱离数据集临时操作,就不能用DBGridEh1组件
修改、删除,及其它 期限的放在 查询 的 form 里,点 修改 的按钮 则返回到 新增 的 form
这样的设计,方便权限的执行
4、点保存按钮时,检查DBGridEh1里的数据,C列和D列是否有空值?
---------------------------------------------------------
2、可以在数据集的beforepost事件判断,假设数据集为Adoquery,代码如下:
if not (Adoquery.FieldbyName('C').AsString in ['0', '9']) then
begin
Abort;
ShowMessage('没有在0--9之间');
end;4、可以在保存按钮下,写如下代码:
if Adoquery.Locate('C', '', []) then
begin
Exit;
ShowMessage('C列不能为空!');
end; if Adoquery.Locate('D', '', []) then
begin
Exit;
ShowMessage('D列不能为空!');
end;
if Adoquery.Locate('D', '', []) then
begin
Exit;
ShowMessage('D列不能为空!');
end;
至于说判断为不为0-9的情况,你可以在DBGridEh1的KeyPress里去判断的啊