在DBGrideh中新增记录之前查看来记录的字段是否有空,没有就新增,有就不能新增。
代码如下:注:Ddetail LOCKTYPE 为 ltBatchOptimisticprocedure TG11Form.QdetailBeforePost(DataSet: TDataSet);
var
tempNum:double; bk:TBookMark;
tempstr:string;
begin
inherited;
try //showmessage(self.Ddetail.DataSet.FieldValues['GOODID']); if self.Ddetail.DataSet.FieldByName('GoodID').IsNull then
begin
showmessage('请选择好商品!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
self.Ddetail.DataSet.Cancel;
abort; end; if self.Ddetail.DataSet.FieldByName('GoodID').AsString='' then
begin
showmessage('请选择好商品!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
self.Ddetail.DataSet.Cancel;
exit;
end; if self.Ddetail.DataSet.FieldByName('depotID').IsNull then
begin
showmessage('请选择好仓库!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('depotID');
self.Ddetail.DataSet.Cancel;
exit;
end; if self.Ddetail.DataSet.FieldByName('depotID').AsString='' then
begin
showmessage('请选择好仓库!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('depotID');
self.Ddetail.DataSet.Cancel;
exit;
end; tempNum:=(self.Ddetail.DataSet.FieldValues['OrderNum']*self.Ddetail.DataSet.FieldValues['price'])*self.Ddetail.DataSet.FieldValues['discount'];
self.Ddetail.DataSet.FieldByName('totalMoney').AsString:=formatfloat('0.000',tempNum); except
self.Ddetail.DataSet.Cancel;
self.Ddetail.DataSet.Refresh;
end; try
tempstr:=self.Ddetail.DataSet.FieldValues['GoodID'];
bk:=self.Ddetail.DataSet.GetBook;
self.Ddetail.DataSet.First;
tempNum:=0; while not self.Ddetail.DataSet.Eof do
begin
if trim(self.Ddetail.DataSet.FieldValues['GoodID'])=tempstr then
begin
tempNum:=tempNum+1;
end;
self.Ddetail.DataSet.Next;
end; if tempNum>1 then
begin
showmessage('有相同记录!');
self.Ddetail.DataSet.GotoBook(bk);
self.Ddetail.DataSet.FreeBook(bk);
self.Ddetail.DataSet.Edit;
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
exit;
end; self.Ddetail.DataSet.GotoBook(bk);
self.Ddetail.DataSet.FreeBook(bk);
except
exit;
end;测试结果:程序有提示要“选好商品”,但是还是新增了一条空白的记录。
程序中有二种新增记录的方式:1、菜单中的“新增”。2、按向下键,DBGRIDEH自动新增。
想要的效果:上面二利“新增”记录的方法,每当新增时程序会检测是否为空,如果是空不能增新,不是空则新增一条空白记录。在线等待,情各位高手帮忙。
OK马上给分。。
代码如下:注:Ddetail LOCKTYPE 为 ltBatchOptimisticprocedure TG11Form.QdetailBeforePost(DataSet: TDataSet);
var
tempNum:double; bk:TBookMark;
tempstr:string;
begin
inherited;
try //showmessage(self.Ddetail.DataSet.FieldValues['GOODID']); if self.Ddetail.DataSet.FieldByName('GoodID').IsNull then
begin
showmessage('请选择好商品!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
self.Ddetail.DataSet.Cancel;
abort; end; if self.Ddetail.DataSet.FieldByName('GoodID').AsString='' then
begin
showmessage('请选择好商品!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
self.Ddetail.DataSet.Cancel;
exit;
end; if self.Ddetail.DataSet.FieldByName('depotID').IsNull then
begin
showmessage('请选择好仓库!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('depotID');
self.Ddetail.DataSet.Cancel;
exit;
end; if self.Ddetail.DataSet.FieldByName('depotID').AsString='' then
begin
showmessage('请选择好仓库!');
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('depotID');
self.Ddetail.DataSet.Cancel;
exit;
end; tempNum:=(self.Ddetail.DataSet.FieldValues['OrderNum']*self.Ddetail.DataSet.FieldValues['price'])*self.Ddetail.DataSet.FieldValues['discount'];
self.Ddetail.DataSet.FieldByName('totalMoney').AsString:=formatfloat('0.000',tempNum); except
self.Ddetail.DataSet.Cancel;
self.Ddetail.DataSet.Refresh;
end; try
tempstr:=self.Ddetail.DataSet.FieldValues['GoodID'];
bk:=self.Ddetail.DataSet.GetBook;
self.Ddetail.DataSet.First;
tempNum:=0; while not self.Ddetail.DataSet.Eof do
begin
if trim(self.Ddetail.DataSet.FieldValues['GoodID'])=tempstr then
begin
tempNum:=tempNum+1;
end;
self.Ddetail.DataSet.Next;
end; if tempNum>1 then
begin
showmessage('有相同记录!');
self.Ddetail.DataSet.GotoBook(bk);
self.Ddetail.DataSet.FreeBook(bk);
self.Ddetail.DataSet.Edit;
self.DBGridEh1.SelectedField:=self.Ddetail.DataSet.FieldByName('GoodID');
exit;
end; self.Ddetail.DataSet.GotoBook(bk);
self.Ddetail.DataSet.FreeBook(bk);
except
exit;
end;测试结果:程序有提示要“选好商品”,但是还是新增了一条空白的记录。
程序中有二种新增记录的方式:1、菜单中的“新增”。2、按向下键,DBGRIDEH自动新增。
想要的效果:上面二利“新增”记录的方法,每当新增时程序会检测是否为空,如果是空不能增新,不是空则新增一条空白记录。在线等待,情各位高手帮忙。
OK马上给分。。
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.DisplayLabel = 'a' then
begin
if DBGrid1.SelectedField.AsString = '' then
showmessage('不能为空!');
end;
end;
试试吧……我极度不擅长数据库……
var
i: Integer;
begin
for i:=0 to Form1.DBGrid1.Columns.Count-1 do
if Form1.DBGrid1.Columns[i].Field.AsString = '' then begin
Application.MessageBox('保存失败,有空白字段!','错误',MB_ICONERROR + MB_OK);
Abort;
end;
end;
或者这样试试?……
我试过你这样了,还是不行。