我通过一个文本框输入数据库名,然后用一个listbox显示其中所有的表名,然后再用一个listbox显示选中表的各个字段,然后选中某一字段,点击排序,就在dbgrid中显示出排序好的数据,但是现在我dbgrid中什么都不显示,前面的功能都能完成。
程序如下:implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.Close;
  if (edit1.Text ='') then begin
  showmessage('please input the DatabaseName');
  edit1.Text:='DBDEMOS';
  exit;
  end;
  begin
  Query1.DatabaseName:=edit1.Text;
  Query2.DatabaseName:=edit1.Text;
  try
    session.GetTableNames(Query1.DatabaseName,'',false,false,
    lbTables.Items);
    button2.Enabled:=true;
    button4.Enabled:=true;
    button5.Enabled:=true;
  except
    showmessage('cannot open the database:'+edit1.Text);
    edit1.Text:='DBDEMOS';
  end;
  end;
end;procedure TForm1.Button2Click(Sender: TObject);
const
str= 'select * from %s';
begin
  if (lbtables.ItemIndex=-1) then begin
  showmessage('please select a table');
  exit;
  end;
  with query1 do
  begin
  close;
  sql.Clear;
  sql.Add(format(str,[lbtables.Items[lbtables.ItemIndex]]));
  prepare;
  open;
  getfieldnames(lbfields.Items);
  end;
  label3.Caption:=lbtables.Items[lbtables.ItemIndex];
  button3.Enabled:=true;
end;procedure TForm1.Button3Click(Sender: TObject);
const
  str='select * from %s order by %s';
begin
  if (lbfields.ItemIndex=-1) then begin
  showmessage('please select a field');
  exit;
  end;
  with query1 do
  begin
  close;
  sql.Clear;
  SQL.Add(format(str,[label3.Caption,lbfields.Items[lbfields.ItemIndex]]));
  prepare;
  open;
  end;
end;
end.