我在做一个程序,是MDI结构的,也就是说程序在大多数情况下是这样的:一个窗口在不关闭的情况下,可以再打开另外一个功能窗口。
这个程序是一个信息维护程序,我将个人信息、单位信息等的Query放在了DataModal中,以备后用。在程序中有信息维护和信息查询两个功能窗口,他们的结构大致相同,所以都使用了DataModal中的Query,我现在费解的是,当这两个窗口都打开时,一个窗口的记录指针移动就会改变另一个窗口的记录指针,这可不是程序所希望的啊?
如果为每一个窗口建一个Query,势必很麻烦,那怎样做能解决这种问题呢?希望大家指教!
这个程序是一个信息维护程序,我将个人信息、单位信息等的Query放在了DataModal中,以备后用。在程序中有信息维护和信息查询两个功能窗口,他们的结构大致相同,所以都使用了DataModal中的Query,我现在费解的是,当这两个窗口都打开时,一个窗口的记录指针移动就会改变另一个窗口的记录指针,这可不是程序所希望的啊?
如果为每一个窗口建一个Query,势必很麻烦,那怎样做能解决这种问题呢?希望大家指教!
解决方案 »
- 问个菜点的问题,以下两条语句那个是正确的,为什么?
- 向大家推荐一个本地数据集二次查询的控件!
- cxgrid中ComboBox对象的使用
- 如何知道BDE alias所指向的數據庫的SERVER Name啊?
- Undeclared identifier: 'CoInitialize'
- 把一个类作为一个参数传递过去的!
- 高手指点:为什么用RESTORE恢复数据库后,数据库成Loading状态?
- TcxDBComboBox控件中文输入问题
- 请问哪个哥哥姐姐告诉我一些关于Delphi的网站!来者有分!
- 请教关于用ado控制access数据库的问题。
- 谁使用过TdxRTTIInspector控件
- 非可视化控件多了,我要怎么办?
saveplace:=adoquery1.getBook; //保存记录标记对记录进行操作
Adoquery1.gotoBook(saveplac......//反回
共用同一数据集一般用在多处使用而又不理会其指针的情况,比如数据集的LookUp字段,某个字段的下拉选择框中等等。象你所说的情况,如可实现的话数据库控件就不能称为数据感应控件了.
var
Query,Query1:TADOQuery;
ID :String;
InID:String;
i,AppState,Invoiced :Integer;
lo_bm : TBookMark;
begin
if not Assigned(DMFreights) then exit;
inherited;
with DMFreights.Queryfreight do
begin
lo_bm := GetBook;
DisableControls;
for I:=0 to slkDBGrid1.SelectedList.Count -1 do
begin
GotoBook(slkDBGrid1.SelectedList.Items[I]);
inid:=trim(FieldByName('InID').AsString); if (inid <> '') then
begin
Query1:=TADOQuery.Create(self);
try
with Query1 do
begin
Connection:=GetConnection;
Close;
with SQL do
begin
Clear;
Add('select Invoiced,AppState from T_Freight where InID='''+InID+'''');
end;
open;
end;
AppState:=Query1.FieldByName('AppState').AsInteger;
Invoiced:=Query1.FieldByName('Invoiced').AsInteger;
finally
freeAndNil(Query1);
end;
if DMFreights.Queryfreight.FieldByName('Beconfirm').AsBoolean = true then ID:='0'
else ID:='1';
if (AppState > 0) or (Invoiced > 0 )then
begin
ShowMessage('费用已经申请或打票,不能进行反确认!');
end
else
begin
Query:=TADOQuery.Create(self);
try
with Query do
begin
Connection:=GetConnection;
SQL.Add('UPDATE T_Freight ');
SQL.Add('set beconfirm='+ID);
SQL.Add('where InID = '''+InID+'''');
ExecSQL;
end;
finally
FreeAndNil(Query)
end;
end;
DMFreights.Queryfreight.Refresh;
end
else
ShowMessage('没有费用确认!');
end;
if BookValid(lo_bm) then
begin
GotoBook(lo_bm);
FreeBook(lo_bm);
end;
EnableControls;
end;
//added by jxp
//实现费用表格中不同的费用是否能修改
if not slkDBGrid1.ReadOnly then
SetFareIfReadOnly(slkDBGrid1);end;书签