科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道从Linux上的DB2表生成动态数据表单 (3)

从Linux上的DB2表生成动态数据表单 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,为了动态构建视图和表单,我将检查 ® DB2® Universal Database™ (UDB) 元数据。特别是,我将使用 Linux 上的 ® Kylix 3™ 和 Borland dbExpress 数据访问驱动程序,来分析 DB2 UDB 数据库表、字段(名称和类型),以允许用户选择特定的表、

作者:yuansang 来源:赛迪网技术社区 2007年10月19日

关键字: 操作系统 表单 DB2 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

生成动态 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 命令,使数据有效。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章