【问题标题】:Search tables through radiogroup selection通过无线电组选择搜索表
【发布时间】:2013-01-29 22:12:33
【问题描述】:

我正在创建一个使用 OLEDB 4.0 连接到 MS ACCESS 数据库的 Delphi XE3 应用程序。 我已经在这些表格上保存了一些信息,但现在我想开发一个“搜索内容表单”

我希望有一个无线电组供用户选择他想如何搜索数据库中每个表的内容。喜欢:按姓名、按日期或按年龄。然后有一个 TEdit 供用户动态键入他在该特定表上查找的内容。

我正在使用 TADOconnection 和 ADOtables。

【问题讨论】:

  • 你在哪个部分苦苦挣扎?
  • 首先我试图将不同的无线电组选项附加到特定的 adotable
  • 你定义你的规则并根据它填充无线电组。
  • @GeorgeVremescu 如何定义这些规则?
  • 就像您批准的答案一样:)

标签: delphi ms-access delphi-xe3


【解决方案1】:

假设您有 3 列 NameDateAge,您可能会尝试这样的操作。您需要一个计时器,其间隔设置为搜索词写入间隔(例如 1000 毫秒),然后是一个包含 3 个项目的单选组,其中第一个是名称,第二个是日期,第三个是年龄搜索词选择。然后你需要有一个搜索编辑框本身并处理以下事件:

procedure TForm1.Edit1Change(Sender: TObject);
begin
  Timer1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  Timer1.Enabled := False;
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  ADOTable1.Filtered := False;
  if Edit1.Text <> '' then
  begin
    case RadioGroup1.ItemIndex of
      0: ADOTable1.Filter := 'Name';
      1: ADOTable1.Filter := 'Date';
      2: ADOTable1.Filter := 'Age';
    end;
    ADOTable1.Filter := ADOTable1.Filter + ' LIKE ' + QuotedStr(Edit1.Text);
    ADOTable1.Filtered := True;
  end;
end;

【讨论】:

  • 这似乎工作正常 TLama,但如何显示结果?例如一个 DBGrid
  • 您说您使用的是TADOTable,因此只需通过数据源将此表对象与您的网格连接即可。
猜你喜欢
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 2014-04-23
  • 2021-04-14
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
相关资源
最近更新 更多