弟新建一个套餐,什么保存,添加,修改,放弃,删除都可以实现.但是在不保存的情况下(也就是说DBGrid中有了数据,并显示出来了)点击右上角的关闭窗体按钮后,打开数据库,看到数据没有删除.DBGrid中依然有数据.接下来再一次操作,数据库里的数据删除了,DBGrid中也没有了数据.
注:1.在formclose事件中写了adotable关闭的代码
2.要操作兩個表(mealdetail mealhead);
代碼有
procedure TNewMeal2F.FormCreate(Sender: TObject);
beginFEditDealMan.Text:=MainF.StatusBar1.Panels[1].Text;
FEditDealDate.Text:=MainF.StatusBar1.Panels[6].Text;
//ADOTMealDateil.Active:=true;
getMealID(); //get the mealid number
ADOTMealDateil.Active:=true;FEditAllPrice.Text:='0.00';
FEditDisPrice.Text:='0.00';
end;procedure TNewMeal2F.getMealID();
begin
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add ('select * from MealHead ');
adoqmealdateil.Open ;
adoqmealdateil.Last;
if adoqmealdateil.RecordCount<>0 then
begin
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add ('select * from MealHead where wMealID like '+''''+formatdatetime('yyyymmdd',now)+'%'' order by wMealID asc');
adoqmealdateil.Open;
adoqmealdateil.Last;
if copy(formatdatetime('yyyymmdd',now),1,8)=copy(trim(adoqmealdateil.Fields[1].AsString),1,8) then
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text ))+formatfloat('000',strtoint(trim(copy(adoqmealdateil.Fields[1].asstring,9,3)))+1);
end
else
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',1);
end; end
else
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',1); end;end;
procedure TNewMeal2F.ADOTMealDateilBeforeOpen(DataSet: TDataSet);
begin
adotmealdateil.Filter:='wMealID='''+trim(FEditMealID.Text )+'''';
adotMealDateil.Filtered:=true;
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add('delete from MealDetail where wMealID='''+trim(FEditMealID.Text)+'''');
adoqmealdateil.ExecSQL;
end;procedure TNewMeal2F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adotmealdateil.Close;
Action:=cafree;
end;procedure TNewMeal2F.FButAddClick(Sender: TObject);
begin
AddNewMealF:=TAddNewMealF.Create(application);
AddNewMealF.ShowModal;
end;procedure TAddNewMealF.FormCreate(Sender: TObject);
var
no:string;
int_no:integer;
i:integer;
begin NewMeal2F.ADOTMealDateil.Append; Adoquery1.SQL.Clear;
adoquery1.SQL.Add('select wItemID from MealDetail where wMealID='''+NewMeal2F.FEditMealID.Text +''' order by wMealID desc') ;
adoquery1.OPEN;
if ADOQuery1.RecordCount<>0 then
begin
no:=ADOQuery1.fieldbyname('wItemID').AsString;
int_no:=strtoint(no);
int_no:=int_no+1;
no:=inttostr(int_no);
i:=length(widestring(no));
if i<3 then
for i:=i to 2 do
begin
no:='0'+no;
end;
FlatEdit1.Text:=no;
end
else
begin
FlatEdit1.Text:='001';
end;
ADOQuery1.Close;
FlatEdit8.Text:=MainF.StatusBar1.Panels[6].Text;
NewMeal2F.ADOTMealDateil.FieldValues['wMealID']:=NewMeal2F.FEditMealID.Text;
NewMeal2f.ADOTMealDateil.FieldValues['wItemID']:=FlatEdit1.Text;
end;procedure TAddNewMealF.FlatButton1Click(Sender: TObject);
begin if FlatEdit2.Text='' then
begin
application.MessageBox('項目名稱不能為空!','溫馨提示',MB_ok);
FlatEdit2.SetFocus;
exit;
end;
NewMeal2F.FEditAllPrice.Text:=format('%.2f',[strtofloat(NewMeal2F.FEditAllPrice.Text)+strtofloat(FlatEdit7.Text)]); NewMeal2F.ADOTMealDateil.FieldValues['wMealID']:=NewMeal2F.FEditMealID.Text;
NewMeal2F.ADOTMealDateil.Post;
close;
end;
小弟实在没有找出错误来,请前辈们說說錯在呀???
注:1.在formclose事件中写了adotable关闭的代码
2.要操作兩個表(mealdetail mealhead);
代碼有
procedure TNewMeal2F.FormCreate(Sender: TObject);
beginFEditDealMan.Text:=MainF.StatusBar1.Panels[1].Text;
FEditDealDate.Text:=MainF.StatusBar1.Panels[6].Text;
//ADOTMealDateil.Active:=true;
getMealID(); //get the mealid number
ADOTMealDateil.Active:=true;FEditAllPrice.Text:='0.00';
FEditDisPrice.Text:='0.00';
end;procedure TNewMeal2F.getMealID();
begin
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add ('select * from MealHead ');
adoqmealdateil.Open ;
adoqmealdateil.Last;
if adoqmealdateil.RecordCount<>0 then
begin
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add ('select * from MealHead where wMealID like '+''''+formatdatetime('yyyymmdd',now)+'%'' order by wMealID asc');
adoqmealdateil.Open;
adoqmealdateil.Last;
if copy(formatdatetime('yyyymmdd',now),1,8)=copy(trim(adoqmealdateil.Fields[1].AsString),1,8) then
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text ))+formatfloat('000',strtoint(trim(copy(adoqmealdateil.Fields[1].asstring,9,3)))+1);
end
else
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',1);
end; end
else
begin
FEditMealID.Text:=formatdatetime('yyyymmdd',strtodate(FEditDealDate.Text))+formatfloat('000',1); end;end;
procedure TNewMeal2F.ADOTMealDateilBeforeOpen(DataSet: TDataSet);
begin
adotmealdateil.Filter:='wMealID='''+trim(FEditMealID.Text )+'''';
adotMealDateil.Filtered:=true;
adoqmealdateil.Close;
adoqmealdateil.SQL.Clear;
adoqmealdateil.SQL.Add('delete from MealDetail where wMealID='''+trim(FEditMealID.Text)+'''');
adoqmealdateil.ExecSQL;
end;procedure TNewMeal2F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adotmealdateil.Close;
Action:=cafree;
end;procedure TNewMeal2F.FButAddClick(Sender: TObject);
begin
AddNewMealF:=TAddNewMealF.Create(application);
AddNewMealF.ShowModal;
end;procedure TAddNewMealF.FormCreate(Sender: TObject);
var
no:string;
int_no:integer;
i:integer;
begin NewMeal2F.ADOTMealDateil.Append; Adoquery1.SQL.Clear;
adoquery1.SQL.Add('select wItemID from MealDetail where wMealID='''+NewMeal2F.FEditMealID.Text +''' order by wMealID desc') ;
adoquery1.OPEN;
if ADOQuery1.RecordCount<>0 then
begin
no:=ADOQuery1.fieldbyname('wItemID').AsString;
int_no:=strtoint(no);
int_no:=int_no+1;
no:=inttostr(int_no);
i:=length(widestring(no));
if i<3 then
for i:=i to 2 do
begin
no:='0'+no;
end;
FlatEdit1.Text:=no;
end
else
begin
FlatEdit1.Text:='001';
end;
ADOQuery1.Close;
FlatEdit8.Text:=MainF.StatusBar1.Panels[6].Text;
NewMeal2F.ADOTMealDateil.FieldValues['wMealID']:=NewMeal2F.FEditMealID.Text;
NewMeal2f.ADOTMealDateil.FieldValues['wItemID']:=FlatEdit1.Text;
end;procedure TAddNewMealF.FlatButton1Click(Sender: TObject);
begin if FlatEdit2.Text='' then
begin
application.MessageBox('項目名稱不能為空!','溫馨提示',MB_ok);
FlatEdit2.SetFocus;
exit;
end;
NewMeal2F.FEditAllPrice.Text:=format('%.2f',[strtofloat(NewMeal2F.FEditAllPrice.Text)+strtofloat(FlatEdit7.Text)]); NewMeal2F.ADOTMealDateil.FieldValues['wMealID']:=NewMeal2F.FEditMealID.Text;
NewMeal2F.ADOTMealDateil.Post;
close;
end;
小弟实在没有找出错误来,请前辈们說說錯在呀???
小弟不會事务,小弟不会写代码,请给小弟代码行不??
谢谢!!
ADOConnection1.CommitTrans; //提交事务
ADOConnection1.RollbackTrans; //回滚事务
小弟不會事务,小弟不会写代码,请给小弟代码行不??
谢谢!!---------------------
够直接
:)