本人菜鸟,刚接触DELPHI
試著做树结构时遇到问题,请高手帮忙解答, 請問該如何以 ADOQuery 連結 SQL Sever,
並且以 Edit 輸入查詢值後,按下 Button1
由 TreeView 顯示查詢到的值?
試著做树结构时遇到问题,请高手帮忙解答, 請問該如何以 ADOQuery 連結 SQL Sever,
並且以 Edit 輸入查詢值後,按下 Button1
由 TreeView 顯示查詢到的值?
解决方案 »
- delphi + access
- 用数据线将手机连到电脑然后用AT指令控制手机收发短信和使用GSM短信猫有什么区别?
- taideveloper(孔丙已) 或 happyzsl(学习) 请教一下!
- 望高手解惑!!!参与者都有分!!!
- 新手(菜鸟)请教!如何让程序自已来处理Error事件?。。。。。。
- 一个关于组件开发的问题
- 请问dephi参考手册哪有下的
- 怎么样实现EDIT的从右到左的输出
- delphi 2010 dbExpress 连接Oracle9i报错
- 会EmbeddedWB或精通webbrowser的同志请进!~
- vc写的ocx delphi导入 死掉
- 线程使用GetMessage后.如何判断是否处于休眠
1.设置sql语句: 'select * from table where 字段='+QuotedStr(Edit1.Text)
2.数据集打开后,根据记录的上下级关系去生成树,代码论坛里有很多,搜一下
http://topic.csdn.net/u/20090311/11/5b284b86-7434-412e-8c66-67f06a432d97.html
看看上面这个帖子,里面有一个代码,看BuildTree和BuildNode
1.设置sql语句: 'select * from table where 字段='+QuotedStr(Edit1.Text)
2.数据集打开后,根据记录的上下级关系去生成树,代码论坛里有很多,搜一下
http://topic.csdn.net/u/20090311/11/5b284b86-7434-412e-8c66-67f06a432d97.html
看看上面这个帖子,里面有一个代码,看BuildTree和BuildNode
1.设置sql语句: 'select * from table where 字段='+QuotedStr(Edit1.Text)
2.数据集打开后,根据记录的上下级关系去生成树,代码论坛里有很多,搜一下
http://topic.csdn.net/u/20090311/11/5b284b86-7434-412e-8c66-67f06a432d97.html
看看上面这个帖子,里面有一个代码,看BuildTree和BuildNode
TO bdmh 大大~
1.設置SQL語句~我還是學書本上的做了.雖然長了些~但可以
ADOQuery1.sql.add('select * from MF where bom_no Like ''%'+edit1.Text+'%''');
而您給的是否為Adoquery1.sql.add('select * from MF where bom_no=')+quotedstr(edit1.text); <<是否我寫錯?因為沒辦法耶2.您給我看的帖子,我有很努力的研究,但看不太懂。不過我會繼續研究看看附上我寫的CODE..一直有ADOTFB:Parameter'bom_no' not found 錯,但我不知道原因unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ComCtrls, RpCon, RpConDS, RpBase, RpSystem,
RpDefine, RpRave, DB, ADODB;type
TForm1 = class(TForm)
TreeView1: TTreeView;
DBGrid1: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADOMFB: TADOQuery;
ADOTFB: TADOQuery;
ADOUKS: TADOQuery;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
RvDataSetMFB: TRvDataSetConnection;
RvDataSetTFB: TRvDataSetConnection;
RvDataSetUKS: TRvDataSetConnection;
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ListBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject); private
{ Private declarations }
public
{ Public declarations } end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
Newnode: TTreeNode;
begin
with adoMFB do
begin
sql.clear;
sql.add('select * from MF_BOM where BOM_NO Like ''%'+edit1.Text+'%''');
close;
open;
Newnode:=treeview1.items.add(nil,adomfb.fieldbyname('BOM_NO').value);
while not adoMFB.eof do
begin
newnode:=treeview1.Items.AddChild(newnode,adomfb.fieldbyname('PRD_NO').value);
with adoTFB do
begin
sql.Clear;
sql.Add('select distinct T.BOM_NO,T.PRD_NO,T.NAME,U.UNIT,T.QTY,U.PRD_KND,U.USEIN_NAME from TF_BOM AS T, TF_UKS AS U ');
Parameters.ParamByName('BOM_NO').value:=copy(adoMFB.fieldbyname('BOM_NO').value,1,2);
close;
open;
first;
while not adoTFB.Eof do
begin
treeview1.Items.AddChild(newnode,adoTFB.fieldbyname('PRD_NO').value);
next;
end;
end;
next;
end;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
RvProject1.Execute;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
ADOConnection1.Connected:=true;
except
showmessage('無法中斷連線!');
end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
try
ADOConnection1.Connected:=true;
except
showmessage('無法連線!');
end;Rvproject1.Open;
Rvproject1.getreportlist(Listbox1.items,true);
end;procedure TForm1.ListBox1Click(Sender: TObject);
begin
Rvproject1.selectreport(listbox1.Items[listbox1.itemindex],true);
end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected.Level=1 then
begin
with ADOMFB DO
begin
SQL.Clear;
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO''%'+edit1.Text+'%''');
Parameters.ParamByName('BOM_NO').Value:=copy(treeview1.Selected.Text,4,2);
showmessage(copy(treeview1.Selected.Text,4,2));
CLOSE;
open;
//treeview1.Selected:=nil;
end;
if treeview1.Selected.Level=2 then
With ADOMFB DO
begin
Close;
SQL.Clear;
SQL.Add('select BOM_NO,PRD_NO,NAME,SPC,QTY from ADOMFB');
if Edit1.Text<>'' then
sql.Add('where BOM_NO LIKE ''%'+Edit1.text+'%'' ');
Parameters.ParamByName('BOM_NO').Value:=copy(treeview1.Selected.Text,2,4);
showmessage(copy(treeview1.Selected.Text,2,4));
Open;
end;
end;
end;
end.
更改为
Adoquery1.sql.add('select * from MF where bom_no='+quotedstr(edit1.text));
这个是因为你的字段名错误,SQLServer认为他是参数了。 sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO ''%'+edit1.Text+'%''');这句错误了
正确的为
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO like'+ QuotedStr('%'+edit1.Text+'%'));
和
Parameters.ParamByName('BOM_NO').Value:=copy(treeview1.Selected.Text,2,4);
是多余的,如果你要使用参数的话
这样
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO like :BOM_NO');
Parameters.ParamByName('BOM_NO').Value:= QuotedStr('%'+edit1.Text+'%')
1.這個我知道我哪寫錯了.感謝你的建議
2.Button1click做了些修改~你給我的建議我也做修改了.父節點可以順利的出現,而也沒再出現那個錯误讯息。
但是子節點依舊沒出現,麻煩請在幫我看看糾正..非常感謝
procedure TForm1.Button1Click(Sender: TObject);
var
Newnode: TTreeNode;
begin
Treeview1.Items.Clear;
treeview1.Items.BeginUpdate;
with adoMFB do
begin
sql.clear;
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO like'+ QuotedStr('%'+edit1.Text+'%'));
close;
open;
Newnode:=treeview1.items.add(nil,adomfb.fieldbyname('BOM_NO').ASString+(adomfb.FieldByName('NAME')).asstring);
while not adoMFB.eof do
begin
with adoTFB do
begin
sql.Clear;
sql.Add('select distinct T.BOM_NO,T.PRD_NO,T.NAME,U.UNIT,T.QTY,U.PRD_KND,U.USEIN_NAME from TF_BOM AS T, TF_UKS AS U where T.BOM_NO like :BOM_NO');
Parameters.ParamByName('BOM_NO').Value:=copy(adoMFB.fieldbyname('BOM_NO').AsString,1,2);
close;
open;
newnode:=treeview1.Items.AddChild(newnode,adoTFB.fieldbyname('BOM_NO').AsString);
first;
while not adoTFB.Eof do
begin
treeview1.Items.AddChild(newnode,adoTFB.fieldbyname('PRD_NO').ASString);
next;
end;
end;
next;
end;
end;
treeview1.Items.EndUpdate;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected.Level=1 then
begin
with ADOMFB DO
begin
SQL.Clear;
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO like :BOM_NO');
Parameters.ParamByName('BOM_NO').Value:= QuotedStr('%'+edit1.Text+'%');
showmessage(copy(treeview1.Selected.Text,4,2));
CLOSE;
open;
//treeview1.Selected:=nil;
end;
if treeview1.Selected.Level=2 then
With ADOMFB DO
begin
Close;
SQL.Clear;
sql.add('select BOM_NO,PRD_NO,NAME,SPC,QTY from MF_BOM where BOM_NO like :BOM_NO');
Parameters.ParamByName('BOM_NO').Value:= QuotedStr('%'+edit1.Text+'%');
showmessage(copy(treeview1.Selected.Text,2,4));
Open;
end;
end;
end;