在ADOQuery中查询返回结果的问题(100分)

  • 主题发起人 主题发起人 心心
  • 开始时间 开始时间

心心

Unregistered / Unconfirmed
GUEST, unregistred user!
我输入1个字符,如111, 111这个字符存在表 a中
表a有两个字段结构如下
aa bb
111 这是1
112 这是2
113 这是3
....

在ADOQuery中,如何实现查找得到返回的 '这是1'?如果没有找到111要给出出错提示??
 
select * from .... where aa='111'??
 
查到没查到返回的结果怎么写?sql??
 
if AdoQuery.recordcount=0 then
showmessage('没有你要的记录')
else
执行你要做的事
 
呵呵我试试哪位能否完整的写一次??举得例??
 
procedure TForm1.Button1Click(Sender: TObject);
var
temp:string;
begin
AdoQuery1.sql.clear;
AdoQuery1.sql.add('select * from a where aa="111"');
AdoQuery1.active:=true;
if AdoQuery1.recordcount=0 then
showmessage('没有你要的记录')
else
temp:=AdoQuery1.fieldvalues['bb'];
showmessage(bb);
end;
end;
end.
 
好了发分
 
怎么没有发分的东西,班主给贪污了吗???
 
撰写查询尽量不要把程序写死,多用动态方式。以下是我程序片段:
procedure TClass1.ChangeSQL( const SearchValue: WideString);
var
AValueStringList,ByStringList:TStringList;
i,j,k:integer;
begin
AValueStringList:=TStringList.Create;
ByStringList:=TStringList.Create;
AValueStringList.Text:=SearchValue;

dtRP1501.Close;

//Reset SQL
for i:=dtRP1501.SQL.Count-1 Downto 0 do
if (pos('ORDER BY',UpperCase(dtRP1501.SQL))>0) or (pos('GROUP BY',UpperCase(dtRP1501.SQL))>0) then
begin
ByStringList.add(dtRP1501.SQL);
dtRP1501.SQL.Delete(i);
end;

for j:=dtRP1501.SQL.Count-1 Downto 0 do
if (Pos(' ',dtRP1501.SQL[j])<>0) and (Pos(' as ',dtRP1501.SQL[j])=0) then dtRP1501.SQL.Delete(j);

if (AValueStringList[0]<>'') and (AValueStringList[0]<>'*') then
//dtView4.SQL.Add(' AND QCMTDT10.RemeltDATE='+sqldate1(AValueStringList[0],2));
dtRP1501.SQL.Add(' AND QCMTDT10.RemeltDATE='+''''+AValueStringList[0]+'''');

if ByStringList.count > 0 then
for k:= ByStringList.count-1 downto 0 do
dtRP1501.SQL.Add(ByStringList[k]);

dtRP1501.Open;
end;

在从Client端呼叫此函数。
 
谢谢大家
 
后退
顶部