1
我有一个表格可以打开多个实例。在那里,我使用SQL查询从数据库中读取一些数据(在这种情况下为绝对数据库)。然后用数据填写一些变量,并在表单的生命周期中使用查询进行其他操作。SQL查询在一个表格的多个实例中的作用域
问题是,当我打开窗体的多个实例时,数据会在旧窗体上更改为上次打开窗体的值。
我在窗体打开时创建查询,所以我认为他们不会共享相同的数据。
我不使用自动创建的表单。
如何避免这种情况发生?
**编辑 - 添加了一些代码**
创建如下形式:从窗体的代码
// decleared in implementation
Dato: TDate;
GrenType: string;
GrenRunder: integer;
MaxPoeng: integer;
procedure TfrmRegResultat.FormShow(Sender: TObject);
begin
//-- qStevneHead is a TABSQuery component on the form
//-- DataX is the name of my DataModule
with qStevneHead do
begin
Close;
SQL.Clear;
SQL.Text := 'SELECT * FROM StevneHead WHERE GrenType = :aGrenType AND StevneNummer = aStevneNummer';
ParamByName('aGrenType').AsString := DataX.tStevneHead.FieldByName('GrenType').Value;
ParamByName('aStevneNummer').AsString := DataX.tStevneHead.FieldByName('StevneNummer').Value;
Open;
end;
GrenRunder := qStevneHead.FieldByName('AntallRunder').Value;
Dato := qStevneHead.FieldByName('Dato').AsDateTime;
GrenType := qStevneHead.FieldByName('GrenType').Value;
MaxPoeng := qStevneHead.FieldByName('MaxPoeng').Value;
// More code to init stringgrid and other stuff on the form
end;
如果我理解正确,则更改表单A中的某些数据并关闭它(例如)。然后,您切换到另一个已经打开的表单B,该表单显示您在表单A中更改的数据,但由于您在创建表单时已经加载了数据,因此数据不再是实际的数据。是对的吗 ? – TLama 2013-04-20 17:57:27
很难说这个问题可能是什么;这绝对不正常。你能编辑包含创建查询的代码和创建表单实例的代码吗? – 2013-04-20 17:57:28
是的,在没有看到实现的情况下回答这个问题是不可能的。 – 2013-04-20 18:00:00