Dephi新手,关于GBGrid的应用问题

oyxiaoyu0 2003-08-22 10:49:14
我在DBGRID中编辑数据,如果输入重复的商品编号就报错误
PS := DataSource1.DataSet;
if (DBGrid1.SelectedField.FieldName = 'goodsNO') then
begin
for i:=0 to PS.RecordCount - 1 do
begin
if (DBGrid1.SelectedField.AsString = PS.FieldByName('goodsNO').AsString) then
begin
ShowMessage('商品编号重复!请重新输入或修改该商品数量');
DBGrid1.SelectedIndex := 0;
exit;
end;
PS.Next;
end;

为什么PS.RecordCount 在录入第一条数据时是1,而录入第二条记录时第一次循环是1,第二趟循环就变为2了。好象是我刚刚录入数据的原因,能告诉我怎样实现我的功能吗
既在DBGrid中输入数据进行编辑,如果数据重复就出错误!我想查找要比异常更省资源吧
...全文
66 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyxiaoyu0 2003-08-22
  • 打赏
  • 举报
回复
其实我就是不想用异常啊,那样代价太大了!!
直接查找不是更好吗,只是老是查不好呢
wdsimon 2003-08-22
  • 打赏
  • 举报
回复
我明白你的意思

你的意思你再DBGRID中修改或添加的数据不是每完成一条就POST,而是
一起POST,
那你可以这样试试:
var
s;string;
begin
PS := DataSource1.DataSet
s:=PS.FieldByName('goodsNO').AsString;
if (DBGrid1.SelectedField.FieldName = 'goodsNO') then
begin
if ps.RecordCount>1 then//如果新添加一条记录,就不用比较,如果要与数据库已存在数据进行比较,则另外处理
begin
first;
for i:=0 to PS.RecordCount - 2 do
begin
if PS.FieldByName('goodsNO').AsString= s then
begin
ShowMessage('商品编号重复!请重新输入或修改该商品数量');
DBGrid1.SelectedIndex := 0;
exit;
end;
PS.Next;
end;
end;
end;

以上未经测试
wdsimon 2003-08-22
  • 打赏
  • 举报
回复
我明白你的意思

你的意思你再DBGRID中修改或添加的数据不是每完成一条就POST,而是
一起POST,
那你可以这样试试:
var
s;string;
begin
PS := DataSource1.DataSet
s:=PS.FieldByName('goodsNO').AsString;
if (DBGrid1.SelectedField.FieldName = 'goodsNO') then
begin
if ps.RecordCount>1 then//如果新添加一条记录,就不用比较,如果要与数据库已存在数据进行比较,则另外处理
begin
first;
for i:=0 to PS.RecordCount - 2 do
begin
if PS.FieldByName('goodsNO').AsString= s then
begin
ShowMessage('商品编号重复!请重新输入或修改该商品数量');
DBGrid1.SelectedIndex := 0;
exit;
end;
PS.Next;
end;
end;
end;
end;

以上未经测试
duxin 2003-08-22
  • 打赏
  • 举报
回复
要是不能修改数据库

让程序自己 自己来 不要让用户输入
duxin 2003-08-22
  • 打赏
  • 举报
回复
让数据库 自增字段 不结了

或者设为主建 重复就报错
duxin 2003-08-22
  • 打赏
  • 举报
回复
让数据库 自增字段 不结了

或者设为主建 重复就报错
chenjiong 2003-08-22
  • 打赏
  • 举报
回复
这种办法不好。或是用while 循环
商品编号可以程序自动给,不让重复。

2,497

社区成员

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

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