调试时我在edit1中输入任何字符时都会出错.错误为:DBMemo7:field '***' not found.(***为DBMemo对应的字段,DBMemo7是最后一个DB组件)
诡异的是我把DBMemo删除后,再运行又出现;DBMemo6:feild '***' not found.(DBMemo7,DBmemo6所对应的字段数据库中都有).
下面是edit1的change事件的代码:
procedure Tdisplayfm.Edit1Change(Sender: TObject);
var
str:string;
begin
if edit1.Text<>'' then
begin
listbox1.Clear;
str:='select distinct planname from boiler where planname like'+''''
+edit1.Text+'%''';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(str);
adoquery1.Open;
while not adoquery1.Eof do
begin
listbox1.Items.Add(adoquery1.FieldValues['planname']);
adoquery1.Next;
end;
listbox1.Visible:=true;
end;
end;
请问这错误是怎么产生的?
诡异的是我把DBMemo删除后,再运行又出现;DBMemo6:feild '***' not found.(DBMemo7,DBmemo6所对应的字段数据库中都有).
下面是edit1的change事件的代码:
procedure Tdisplayfm.Edit1Change(Sender: TObject);
var
str:string;
begin
if edit1.Text<>'' then
begin
listbox1.Clear;
str:='select distinct planname from boiler where planname like'+''''
+edit1.Text+'%''';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(str);
adoquery1.Open;
while not adoquery1.Eof do
begin
listbox1.Items.Add(adoquery1.FieldValues['planname']);
adoquery1.Next;
end;
listbox1.Visible:=true;
end;
end;
请问这错误是怎么产生的?
{你这句只显示planname一个字段,不出错才怪}
str:='select distinct planname from boiler where planname like'+''''
+edit1.Text+'%''';
请问我如何只在listbox中显示planname这一字段,而使其他字段暂时不再DB组件中显示?
var
str,strb:string;
begin
if edit1.Text <>'' then begin
listbox1.Clear;
str:='select distinct planname from boiler where planname like'+''''
+edit1.Text+'%''';
strb:='select * from boiler '; with adoquery1 do begin
close;
sql.Text:=str;
DisableControls;
open;
while not eof do begin
listbox1.Items.Add(FieldValues['planname']);
next;
end;
listbox1.Visible:=true;
close;
sql.Text:=strb;
Open;
EnableControls;
end;
end;
end;
procedure Tdisplayfm.Edit1Change(Sender: TObject);
var
str:string;
begin
if edit1.Text <>'' then
begin
listbox1.Clear;
//此两行有问题like后少了空格
//str:='select distinct planname from boiler where planname like'+''''
// +edit1.Text+'%''';
str:='select distinct planname from boiler where planname like '+''''
// +edit1.Text+'%'''; adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(str);
adoquery1.Open;
while not adoquery1.Eof do
begin
listbox1.Items.Add(adoquery1.FieldValues['planname']);
adoquery1.Next;
end;
listbox1.Visible:=true;
end;
end;
这样应该用edit1change吧?
另:请问如何使listbox最前端显示啊?因为我的窗体上有多个panel,而listbox在一个panel上,其他panel会挡住listbox中的内容.