Equipos Programas Media Internet Telecomunicaciones Seguridad Base de Datos Programación Calidad Desarrollo Empresa

Ruta: Desarrollo>AppmlRelacionar distintos campos con ID

Relacionar distintos campos con ID

Descripcion

El cuadro combinado (combo) y los campos relacionados

  • Entre los campos se establece una relación 1:1, siendo ésta que a un elemento de una tabla le corresponde un elemento de otra tabla relacionada.
  • Esta relación se estable a través del cuadro combinado o combo.
  • Por ejemplo:
    • (Aplicamos este tipo de relación en AppML)
    • Tenemos la tabla 'Categories', que tiene su campo ID autonumérico llamado 'IDCategory', y su campo principal llamado 'CategoryName'.
    • Si queremos relacionar este campo ID con la tabla 'Products', incluiremos en ella un campo también llamado 'IDCategory' (numérico).
    • Al campo 'IDCategory' de la tabla 'Products' le corresponderá el valor del campo 'CategoryName' de la tabla 'Categories'.
    • Se puede ver la relación entre los campos de estas tablas en la siguiente imagen:

Poner el nombre de un elemento en lugar de su ID

  • A cada elemento de 'CategoryName' de la tabla 'Categories' se le asocia un número de registo establecido en el campo autonumérico 'IDCategory'.
  • A cada elemento de 'IDCategory' de la tabla 'Products' se le ha asociado un número que equivale al número del registo que tiene cada elemento de la tabla 'Categories'.
  • Después de establecer la relación, hay que configurarlo para que salga el nombre asociado a un ID en lugar del ID numérico:


    • En htmlform:
      • En su SQL poner como campo SELECT los campos de la tabla sin JOIN y el campo ID correspondiente.
      • Por ejemplo:
        <sql>SELECT URL, WebDirs.Descripcion, IDCategory FROM WebDirs</sql>
      • En el combo hacer un SQL con selección del ID y de su nombre correspondiente tomados de la tabla simple donde se define el tipo o Category.
      • El nombre del campo receptor es el de ID correspondiente:
        • <td>Category:</td>
          <td colspan='20'>
          <field name='IDCategory'>
          <function name='dbselect'>
          <sql>
          SELECT IDCategory, Category
          FROM WebDirsCategories
          ORDER BY Category
          </sql>
          <value>IDCategory</value>
          <options>Category</options>
          </function>
          </field>
          </td>
          
    • En la htmllist, htmlreport, xmlreport:
      • En el sql poner como campo SELECT, el nombre del campo (por ejemplo: Category) y en FROM hacer un JOIN LEFT entre la tabla asociada a htmllist y la tabla donde se define el nombre correspondiente al ID:
      • Por ejemplo:
        • LEFT JOIN HTMLCategories ON HTMLetiquetas.IDCategory=HTMLCategories.IDCategory)
          <sql>
          SELECT Etiqueta, Descripcion, NN, IE, DTD, W3C, Category
          FROM (HTMLetiquetas LEFT JOIN HTMLCategories
          ON HTMLetiquetas.IDCategory=HTMLCategories.IDCategory)
          </sql>
          
      • En el SQL hay que hacer tantos join anidados como campos ID se quieran reemplazar por sus nombres.
        • <sql>
          SELECT Etiqueta, Descripcion, NN, IE, DTD, W3C, Category, Tipo
          FROM ((HTMLetiquetas LEFT JOIN HTMLCategories
          ON HTMLetiquetas.IDCategory=HTMLCategories.IDCategory)
          LEFT JOIN HTMLTipo
          LEFT JOIN HTMLTipos
          ON HTMLetiquetas.IDTipo=HTMLTipo.IDTipo)
          </sql>
          
      • La tabla resultante del JOIN tiene tantos campos como la union de los campos de cada tabla componente.
      • En el SELECT se pueden poner tantos campos de las tablas de partida del JOIN como se quiera.
      • Si en las tablas que participan en el JOIN hay campos con el mismo nombre, hay que cualificarlos con el nombre de la tabla (nombretabla.nombrecampo), para que no haya ambigüedad.

Nombre en el campo de edición de una lista desplegable de un formulario

  • En el SQL del htmlreport:
    • Hay que poner el campo ID asociado con el combo.
      • <sql>
        SELECT Etiqueta, Descripcion, NN, IE, DTD, W3C, IDCategory, Tipo
        FROM HTMLetiquetas
        </sql>
        
    • La lista del combo se crea con:
      • <function name='dbselect'>
        <sql>
        SELECT distinct IDCategory, Category
        FROM HTMLCategories
        Order by Category
        </sql>
        <value>IDCategory</value>
        <options>Category</options>
        </function>
        
    • El campo de edición se carga con el valor de IDCategory.
    • El valor del ID seleccionado al pulsar los tres puntos se pasa en #IDCategory#.

  • En html Edit (filtros) hay que hacer:
    • Filtro con combo: Hay que poner Category y no IDCategory.
      • <query>
        <field>Category</field>
        <operator> </operator>
        <value> </value>
        <label>Category HTML</label>
        <sql>
        SELECT Category
        FROM HTMLCategories
        ORDER BY IDCategory
        </sql>
        </query>
        
    • En la ordenación hay que poner Category, no IDCategory:
      • <orderselect selected='Category' direction='ASC'>
        <field>Etiqueta</field>
        <field>Category</field>
        <field>IE</field>
        <field>NN</field>
        <field>DTD</field>
        <field>W3C</field>
        </orderselect>
        

Página generada automáticamente desde la Base de Datos: AppmlDoc/ el 15/6/2008 9:57:57