生成动态 SQL 语句
通过将 TSQLDataSet 的 CommandType 属性设置为 ctQuery,可以启动 Generate 按钮(图 3 中可以看见它)的 OnClick 事件处理程序。这时,不需要在 CommandText 中指定 TableName,但实际的 SQL 语句会从指定的表中选择复选的字段。您可以从把 SELECT 分配给 CommandText 属性开始,然后遍历 TCheckListBox 控件中的项。注意,您无需再次从选定的表中检索元数据,因为相应的字段名已经添加到 TCheckListBox 中,因此,您可以只使用该控件中的字段名(只需验证其复选属性是否被设为 True,以便使用每个单独的字段名)。
下方代码片段中的变量 comma 是必需的,除了首字段之外,要确保每个字段前面都插入了一个逗号。这将在选定字段列表中产生一个包含一个或多个字段的有效 SQL 语句 。
procedure TForm1.btnGenerateClick(Sender: TObject);
var
i,Y: Integer;
comma: Boolean;
begin
ClientDataSet1.Active := False;
SQLDataSet1.CommandType := ctQuery;
SQLDataSet1.CommandText := 'SELECT ';
comma := False;
for i:=0 to Pred(CheckListBox1.Items.Count) do
begin
if CheckListBox1.Checked[i] then
begin
if not comma then comma := True
else
SQLDataSet1.CommandText := SQLDataSet1.CommandText + ', ';
SQLDataSet1.CommandText := SQLDataSet1.CommandText + CheckListBox1.Items[i]
end
end;
if ListBox1.ItemIndex >= 0 then
SQLDataSet1.CommandText :=
SQLDataSet1.CommandText + ' FROM ' + ListBox1.Items[ListBox1.ItemIndex];
//ShowMessage(SQLDataSet1.CommandText);
ClientDataSet1.Active := True;
PageControl1.ActivePageIndex := PageControl1.ActivePageIndex + 1
end; |
在完成对字段列表的操作之后,您惟一需要做的就是添加 FROM 字符串,该字符串后面是数据库表的名称,您仍然可以在 TListBox 控件中找到该表。在完成这一步骤之后,您可以将 TClientDataSet 组件的 Active 属性设置为 True,这将激活 TSQLDataSet 组件中的 SQL 命令,使数据有效。 |
阅读(363) | 评论(0) | 转发(0) |