高手帮忙,delphi关于模糊查询的问题
1.用ADO连接的SQLServer数据库.2.我想实现一个查询功能,就是自定义输入一些关键字,可以通过checklistbox选择多个关键字,然后点击查询按钮,在整个S...
1.用ADO连接的SQL Server数据库.
2.我想实现一个查询功能,就是自定义输入一些关键字,可以通过checklistbox选择多个关键字,然后点击查询按钮,在整个SQL Server数据库的所有表中查找相关内容,然后显示出来.
3.显示希望可以分成两个部分,一个是查询结果,一个是这个结果所在的表名.
哪位高手帮帮忙啊...我现在无法实现显示功能...查了很多SQL语句的资料...可是都达不到效果啊...
我知道是用SQL进行模糊查询...我现在是希望有相关源码...
我是用edit输入.但是有多个关键字..是通过复选框checklistbox选择几个关键字进行检索的..你给的这个SQL语句我用过.可是达不到我想要的结果..而且搜索的范围不是一张表..而是整个数据库的全部表.. 展开
2.我想实现一个查询功能,就是自定义输入一些关键字,可以通过checklistbox选择多个关键字,然后点击查询按钮,在整个SQL Server数据库的所有表中查找相关内容,然后显示出来.
3.显示希望可以分成两个部分,一个是查询结果,一个是这个结果所在的表名.
哪位高手帮帮忙啊...我现在无法实现显示功能...查了很多SQL语句的资料...可是都达不到效果啊...
我知道是用SQL进行模糊查询...我现在是希望有相关源码...
我是用edit输入.但是有多个关键字..是通过复选框checklistbox选择几个关键字进行检索的..你给的这个SQL语句我用过.可是达不到我想要的结果..而且搜索的范围不是一张表..而是整个数据库的全部表.. 展开
3个回答
展开全部
procedure TForm1.Button1Click(Sender: TObject);
var
sql,str: string;
i: integer;
begin
ListBox.Clear;
ListBox.Items.Add('数据库'^I'表名'^I'字段名'^I'字段值');
sql:='select name from master..sysdatabases where name not in (''master'',''model'',''msdb'',''Northwind'',''pubs'',''tempdb'')';
ADOQDB.Close;
ADOQDB.SQL.Clear;
ADOQDB.SQL.Add(sql);
ADOQDB.Open;
ADOQDB.Next;
while not ADOQDB.Eof do
begin
sql:='select name,id from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..sysobjects where xtype=''U''';
ADOQTB.Close;
ADOQTB.SQL.Clear;
ADOQTB.SQL.Add(sql);
ADOQTB.Open;
while not ADOQTB.Eof do
begin
sql:='select name from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..syscolumns where id='+Trim(ADOQTB.FieldByName('id').AsString)+' and xtype in (167,175,231,239)';
ADOQFD.Close;
ADOQFD.SQL.Clear;
ADOQFD.SQL.Add(sql);
ADOQFD.Open;
while not ADOQFD.Eof do
begin
str:='';
for i:=0 to CheckListBox.Count-1 do
begin
if CheckListBox.Checked[i] then
str:=Trim(ADOQFD.FieldByName('name').AsString)+' like ''%'+CheckListBox.Items.Strings[i]+'%'' or ';
end;
if str='' then
exit;
str:=copy(str,1,length(str)-3);
sql:='select '+Trim(ADOQFD.FieldByName('name').AsString)+' from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..'+Trim(ADOQTB.FieldByName('NAME').AsString)+' where '+str;
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add(sql);
ADOQ.Open;
while not ADOQ.Eof do
begin
ListBox.Items.Add(Trim(ADOQDB.FieldByName('NAME').AsString)+' '+Trim(ADOQTB.FieldByName('NAME').AsString)+' '+Trim(ADOQFD.FieldByName('NAME').AsString)+' '+Trim(ADOQ.FieldByName(Trim(ADOQFD.FieldByName('NAME').AsString)).AsString));
ListBox.Update;
ADOQ.Next;
end;
ADOQFD.Next;
end;
ADOQTB.Next;
end;
ADOQDB.Next;
end;
showmessage('检索完毕');
end;
var
sql,str: string;
i: integer;
begin
ListBox.Clear;
ListBox.Items.Add('数据库'^I'表名'^I'字段名'^I'字段值');
sql:='select name from master..sysdatabases where name not in (''master'',''model'',''msdb'',''Northwind'',''pubs'',''tempdb'')';
ADOQDB.Close;
ADOQDB.SQL.Clear;
ADOQDB.SQL.Add(sql);
ADOQDB.Open;
ADOQDB.Next;
while not ADOQDB.Eof do
begin
sql:='select name,id from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..sysobjects where xtype=''U''';
ADOQTB.Close;
ADOQTB.SQL.Clear;
ADOQTB.SQL.Add(sql);
ADOQTB.Open;
while not ADOQTB.Eof do
begin
sql:='select name from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..syscolumns where id='+Trim(ADOQTB.FieldByName('id').AsString)+' and xtype in (167,175,231,239)';
ADOQFD.Close;
ADOQFD.SQL.Clear;
ADOQFD.SQL.Add(sql);
ADOQFD.Open;
while not ADOQFD.Eof do
begin
str:='';
for i:=0 to CheckListBox.Count-1 do
begin
if CheckListBox.Checked[i] then
str:=Trim(ADOQFD.FieldByName('name').AsString)+' like ''%'+CheckListBox.Items.Strings[i]+'%'' or ';
end;
if str='' then
exit;
str:=copy(str,1,length(str)-3);
sql:='select '+Trim(ADOQFD.FieldByName('name').AsString)+' from '+Trim(ADOQDB.FieldByName('NAME').AsString)+'..'+Trim(ADOQTB.FieldByName('NAME').AsString)+' where '+str;
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add(sql);
ADOQ.Open;
while not ADOQ.Eof do
begin
ListBox.Items.Add(Trim(ADOQDB.FieldByName('NAME').AsString)+' '+Trim(ADOQTB.FieldByName('NAME').AsString)+' '+Trim(ADOQFD.FieldByName('NAME').AsString)+' '+Trim(ADOQ.FieldByName(Trim(ADOQFD.FieldByName('NAME').AsString)).AsString));
ListBox.Update;
ADOQ.Next;
end;
ADOQFD.Next;
end;
ADOQTB.Next;
end;
ADOQDB.Next;
end;
showmessage('检索完毕');
end;
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
展开全部
每一个表每一个表的查询
ADOQuery1.SQL.Text:='select * from 表名 where 字段名1=%'''+Edit1.Text+'''% and 字段名2=%'''+Edit2.Text+'''%';
(非整形)
ADOQuery1.SQL.Text:='select * from 表名 where 字段名1=%'+Edit1.Text+'% and 字段名2=%'+Edit2.Text+'%'; (字段名为整形)
ADOQuery1.SQL.Text:='select * from 表名 where 字段名1=%'''+Edit1.Text+'''% and 字段名2=%'''+Edit2.Text+'''%';
(非整形)
ADOQuery1.SQL.Text:='select * from 表名 where 字段名1=%'+Edit1.Text+'% and 字段名2=%'+Edit2.Text+'%'; (字段名为整形)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
模糊查询是%呀
如果你查询姓王和的人,条件直接设置成%王%就可以了。
如果你查询姓王和的人,条件直接设置成%王%就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询