代码之家  ›  专栏  ›  技术社区  ›  Miracle

将所有名称提取到多行块中

  •  0
  • Miracle  · 技术社区  · 7 年前

    我有这样的表:

    tbl1
    +---------+
    |c_no     |
    +---------+
    |1        |
    +---------+
    
    tbl2
    +----------+---------+
    |tbl1_c_no |s_name   |
    +----------+---------+
    |1         |A        |
    |1         |D        |
    +----------+---------+
    

    我的表格:

    enter image description here


    C_没有使用序列自动生成字段。(必需)。
    –S˜GR只是一个未绑定的项。(不需要)。
    第二个块的基表用法是tbl2,并且是多行的。
    S_的名字。(必选)
    第一个区块类似于第二个区块的父区块。
    第一块和第二块使用c_编号和tbl1_c_编号链接

    例如,如果我想添加一些数据,它是这样的:

    enter image description here

    然后按F10保存:

    enter image description here

    tbl1 will be:
    +---------+
    |c_no     |
    +---------+
    |1        |
    |2        |
    +---------+
    
    tbl2 will be:
    +----------+---------+
    |tbl1_c_no |s_name   |
    +----------+---------+
    |1         |A        |
    |1         |D        |
    |2         |B        |
    |2         |C        |
    |2         |E        |
    +----------+---------+
    

    我的问题是,我想从第三个表中提取s_名称到第二个块中。

    tbl3
    +----------+---------+
    |s_gr      |s_name   |
    +----------+---------+
    |80        |F        |
    |85        |G        |
    |84        |H        |
    |84        |I        |
    |80        |J        |
    +----------+---------+
    

    enter image description here

    然后在离开S_GR字段后,它将从tbl3中获取S_NAME,即S_GR=80,并将其放入第二个块中

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   Barbaros Özhan    7 年前

    可以创建两个块:

    • 对于 第一 第一,有一个街区 ,只需触摸即可手动创建 Data Blocks 节点 使用鼠标光标,然后切换“创建”图标( 签名 )然后键入一个名称 blk_no . 并在画布上添加一个字段s_no。

    • 对于 一次性使用 Data Block Wizard Table or View type 对于块的类型。在那里选择表格( tbl1 )两栏都有 ( s_no 和 name )作为 Database Items

      然后,表单必须调用 Layout Wizard 名称 柱 像 显示 然后离开 苏诺 隐藏的。将块命名为 blk_names . 这是一个 基表 Data Source Name 街区的 blk_名称 是 桌子 .

      顺便说一下,准备好了 Number of Records Displayed 财产 10 到 snames 就像你的问题一样。

      设置块的 WHERE子句 (在 数据库 节点)作为 s_no = :blk_no.s_no 在属性选项板上。之后 所有,创建一个 KEY-NEXT-ITEM 苏诺 具有内联 代码:

      go_block('blk_names');
      execute_query;
      

    在运行时,可以输入整数值( 让我们给 1 例如 )为了 苏诺 names 按字段 enter key ( 记录与 A 和 D 将出现

    可能会添加一个按钮 WHEN-BUTTON-PRESSED 具有以下代码的触发器:

     go_block('blk_names');
     delete tbl2;
     first_record;
    while :blk_names.s_no is not null 
    loop
     insert into tbl2 values(:snames);
     next_record;
    end loop;   
     commit;
    

    填充和重新填充表格的步骤 tbl2 (在这种情况下 由记录填充 和 ).

    请注意,禁止显示该消息

    FRM-40352 :检索到的查询的最后记录

    添加 ON-MESSAGE 在表单级别触发代码:

    if message_code = 40352 then 
        null;
    end if;