为何遇到edit,发生了跳转?(50)

  • 主题发起人 主题发起人 machinxing
  • 开始时间 开始时间
M

machinxing

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,请教一下为什么在程序运行的时候会发生这样的跳转? 他们之间的联系在哪? 当执行到edit处 我并不希望产生跳转, 这种情况应该如何避免? 谢谢了 procedure TfrmRoomBalance.btnQueryClick(Sender: TObject); var Day1,Day2:TDateTime; begin with DM.qryOrderRooms do //客房单据表 begin Close; SQL.Clear; SQL.Add('SELECT * FROM OrderRooms'); SQL.Add('WHERE 0=0'); if RadioGroup1.ItemIndex = 0 then //为0,表示查询未结账单 SQL.Add('AND IsBalance= 0 '); if RadioGroup1.ItemIndex = 1 then //为1,表示查询已结账单 SQL.Add('AND IsBalance= 1 '); if edtTableID.Text <> '' then //查询edtTableID.Text 内容的账单 SQL.Add('AND RoomID LIKE '+ QuotedStr('%'+ edtTableID.Text +'%')); if edtCustomer.Text <> '' then //查询edtCustomer.Text 内容的账单 SQL.Add('AND GuestName LIKE '+ QuotedStr('%'+ edtCustomer.Text +'%')); if chkDate.Checked then //查询DateToStr(dtpDate.Date)内容的账单 SQL.Add('AND BeginDate LIKE '+ QuotedStr('%'+ DateToStr(dtpDate.Date) +'%')); SQL.Add('ORDER BY BeginDate DESC'); Open; First; DM.qryOrderRooms.Edit; <----------------------------------这一句之后产生了跳转 DM.qryOrderRooms.FieldByName('LeaveDate').AsString := formatDateTime('yyyy-mm-dd', now); //离店日期显示当天 begin Day1 := StrToDate(DBText10.Caption); Day2 := StrToDate(edtLeaveDate.Text); DM.qryOrderRooms.FieldByName('KipDays').AsString := FormatFloat('1',Day2-Day1); //居住天数 end; end; 跳转到了数据模板部分的代码处: procedure TDM.qryOrderRoomsAfterInsert(DataSet: TDataSet); begin <---------------------------------------------------------跳转到了这里 with DataSet do begin FieldByName('OrderRoomID').AsString := GenerateNumber('OrderRooms', 'OrderRoomID', 'R'); FieldByName('RoomID').AsString := frmOrderRooms.lblRoomID.Caption; FieldByName('RoomPrice').AsString := frmOrderRooms.lblRoomPrice.Caption; end; end;
 
不太可能吧, 我看了下 TADOQuery.Edit; 源码, 里面也只执行了 DoAfterEdit; 啊
 
因为我初学,有些地方也看不太懂, 这是单步执行时发现的问题,很纳闷啊既然出现的这种情况 一定是程序内在有什么联系,请帮我找找吧
 
DM.qryOrderRooms的AfterEdit/beforeedit事件中可有代码要执行?
 
检查你的DataSet有没有设置AfterEdit或者BeforeEdit,如果设置了,再查看该事件代码是否对应到了qryOrderRoomsAfterInsert。
 
楼上的两位大侠说的对。
 
谢谢楼上的各位大哥, 我是数据模板的确在AfterEdit/beforeedit 都有代码要执行,因为是网上下的别人的程序拿来改,所以不少内在联系没有看到,谢谢了。但是我上面的代码 要将离店日期以及居住天数输入到数据表里,看来不能用edit了,可以用 close/open 的方法吗?就像:DM.qryorderrooms.close;DM.qryOrderRooms.FieldByName('LeaveDate').AsString := formatDateTime('yyyy-mm- dd', now); //离店日期显示当天DM.qryorderrooms.open;这样可以将离店日期录入数据表吗?
 
我倒!你这是什么代码啊?哪能这么写。在属性编辑器中,把DataSet的AfterEdit/beforeedit事件去掉就可以了啊。
 
哦 不行 属性编辑器里 没有AfterEdit/beforeedit事件, 这些编辑操作是在数据模板那里执行的, 有别的方法可以将我的离店日期录入数据表里吗?
 
edit=add or insert or modify~~你把afterinsert 里的语句先用{}括起来再看看~~
 
后退
顶部