procedure Tdtmdl1.DataMod(Sender:TObject);
begin
if con1.Connected then
con1.Close;
con1.ConnectionString:='Provider=SQLOLEDB.1;Password=kji@jiaj;'+
'Persist Security Info=True;User ID=kji;'+
'Initial Catalog=HC_kji;Data Source=192.168.1.6\MAC_INSTANCE;'+
'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;'+
'Workstation ID=PC2013061008WRV;Use Encryption for Data=False;'+
'Tag with column collation when possible=False';
con1.Open;
end;
TMD代码procedure TMainForm.FillTreeView(TreeView:TTreeView);
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;
begin
Ads_Tmp:=dtmdl1.ds1.Create(nil);//到这里运行就会报错,是什么原因?
Ads_Tmp.Connection := dtmdl1.con1;
with ADS_Tmp do
try
Close;
CommandText := 'Select * from Dir Where PID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node, FieldByName('Caption').AsString);
CreateSubTree(mLocalName, TreeNode); // 此处循环递归
Next;
end;
finally
ADS_Tmp.Free;
end;
end;
begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil, '所有目录') do
begin
ImageIndex := 1;
SelectedIndex := 1;
end;
CreateSubTree('0', TreeView.Items[0]);
TreeView.Items.EndUpdate;
//TreeView.Items[1].Selected := True; //展开部门end;使用代码
解决方案 »
- Delphi2010 怎么集成帮助文档
- 请教高手,如何在一个线程的执行过程中取消它?
- 求直接打印memo1中的内容的简单打印方法
- 怎么得到ListBox和Memo的行数,进来拿分,马上结!!!!!
- 为什么线程Tthread的onterminate事件被激发之后,线程的destroy事件确没有被执行?
- 数据显示格式问题,在线等待!
- 谁有让StringGrid可以有合并行的源码或控制?急!
- 请问vfw中的函数定义在Delphi中的哪个单元文件中??
- 大家好,请问:如何刷新。
- 请教各位大虾,如果将Word文件保存到Oracle的BLOB字段中?
- 没做什么贡献,也有两星了。开心一下,散分。。。。
- TMEMO中不断的memo.text := memo.text + string 内存会溢出
检测到错误类EAccessViolation错误信息:‘Access violation at address 004dff73 in module’
上面代码
Ads_Tmp:=dtmdl1.ds1.Create(nil);//<SPAN style="COLOR: #ff0000">到这里运行就会报错,是什么原因?</SPAN>
Ads_Tmp.Connection := dtmdl1.con1;
这里错误,第一次使用TMD是不是我那里设置或者写错了?
Ads_Tmp.Connection := dtmdl1.con1;
dtmdl1.con1;是TMD的
但是它就是报错了。
Access violation at address 004e004f is module
放一个conl在窗体上又可以。 Ads_Tmp.Connection:=dtmdl1.con1;
这样可以
Ads_Tmp.Connection:=con1;
这样又不行了
procedure TForm1.btn1Click(Sender: TObject);
const
ID_DEPT = 2;
var
nLevel: Integer;
pNodes: array[0..1023] of TTreeNode;
lpID, lpName: string;
begin
try
qryFuncTree.Close;
qryFuncTree.SQL.Clear;
qryFuncTree.SQL.Add('select TreeNo, FuncID, Caption from PubFunc where ' +
' TreeNo like ''99%'' order by TreeNo');
qryFuncTree.Open;
pNodes[0] := nil;
tvFuncTree.DoubleBuffered := True;
tvFuncTree.Parent.DoubleBuffered := True;
tvFuncTree.Items.BeginUpdate;
tvFuncTree.Perform(TVM_SETITEMHEIGHT, 18, 0); // 调整行高
tvFuncTree.Images := ilFuncTree;
tvFuncTree.Items.Clear;
if qryFuncTree.RecordCount > 0 then
begin
while not qryFuncTree.Eof do
begin
lpID := qryFuncTree.FieldByName('TreeNo').AsString;
lpName := qryFuncTree.FieldByName('Caption').AsString;
nLevel := Length(lpID) div ID_DEPT;
pNodes[nLevel] := tvFuncTree.Items.AddChild(pNodes[nLevel - 1], lpName);
lstFuncTree.AddObject(lpID, pNodes[nLevel]); //保存功能ID到对应变量列表
qryFuncTree.Next;
end;
end;
tvFuncTree.FullExpand;
if tvFuncTree.Items.Count > 0 then
tvFuncTree.Selected := tvFuncTree.Items[0];
finally
tvFuncTree.Items.EndUpdate;
end;
end;