先建立了一个tblFileWord: TADODataSet;的表,有一个过程
procedure FillTree(var DataSet: TADODataSet;Tree:TTreeView; Node: TTreeNode;key_ID:string);
但将TADODataSet传入后,过程执行的结果是正确的,但再执行
tblFileWord.close;
tblFileWord.open;
后tblFileWord记录集却没有记录了,原来有几十条,请问这是什么原因引起的呀,请高手们帮我分析分析,我真的没搞懂,怎样解决呢???
procedure FillTree(var DataSet: TADODataSet;Tree:TTreeView; Node: TTreeNode;key_ID:string);
但将TADODataSet传入后,过程执行的结果是正确的,但再执行
tblFileWord.close;
tblFileWord.open;
后tblFileWord记录集却没有记录了,原来有几十条,请问这是什么原因引起的呀,请高手们帮我分析分析,我真的没搞懂,怎样解决呢???
记录集没有了是不是你在过程内部对它进行了删除或其它什么处理啊?
procedure TForm2.FormCreate(Sender: TObject);
begin
with ADOQuery1 do begin
if Active then Close;
SQL.Clear;
SQL.Add('select * from operator');
Open;
end;
end;procedure TForm2.RDS(var ADODataset: TADODataset);
begin
self.DataSource1.DataSet := ADODataset;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
RDS(TADODataset(ADOquery1));
end;procedure TForm2.Button2Click(Sender: TObject);
begin
ADOquery1.Close;
ADOquery1.Open;
end;
我这样没有问题呀。
var
Id: Integer;
Tmp: TTreeNode;
begin
if Node <> nil then
begin
Id := Integer(Node.Data);
with DataSet do
begin
Filtered := False;
Filter := key_ID+' = ' + IntToStr(Id);
Filtered := True;
while not Eof do
begin
Tmp := Tree.Items.AddChild(Node, Fields.FieldByName('name').AsString);
Tmp.Data := Pointer(Fields.FieldByName('ID').AsInteger);
Next;
end;
Tmp := node.getFirstChild;
while tmp <> nil do
begin
FillTree(DataSet,Tree,Tmp,key_ID);
tmp := tmp.getNextSibling;
end;
end;
end;end;