none
Relaciones ternarias en un DataSet

    Question

  • Hola

     

    Tengo un conjunto de tablas con un maestro y un detalle dentro de un dataset

    La organización es la siguiente

    DataTable Pedido

    DataTable PedidoDetalle

    DataRelation entre Pedido y PedidoDetalle definido como :  Pedido.Id = PedidoDetalle.PedidoId;

     

    hasta aqui todo bien, ahora viene lo "divertido"

    La Tabla Pedido tiene un campo proveedor ( al proveedor al que se le hace el pedido )
    y la tabla PedidoDetalle tiene un campo articulo ( el articulo que se pide).

    También tengo un datatable precios dónde tengo una clave primaria compuesta y un precio.

    La organización es la siguiente :

    PRECIO ( IdProv,IdArt,Precio) dónde IdProv y IdArt son la clave primaria.

     

    Quiero , añadir en la tabla detalle una columna dónde muestre el precio del articulo ( según el proveedor especificado en el maestro ).

     

    he provado :

    Crear una columna en el detalle con el código de proveedor y hacer el datarelation, entre los campos

     

                precios.PrimaryKey = new DataColumn[] { precios.Columns["ARTID"], precios.Columns["IDPROV"] };
                details.Columns.Add(new DataColumn("PROV", typeof(int), "PARENT(MastDet).RPRO"));
                
                DataRelation rel = new DataRelation("Precio",
                    precios.PrimaryKey, new DataColumn[] { details.Columns["RART"], 
                                                           details.Columns["PROV"] 
                    });
    
                ds.Relations.Add(rel);
    
    


    Pero no funciona y da el error :

    " No se puede crear una restricción basada en la columna Expression PROV."

     

    La otra alternativa que también he probado es 

     

    DataRelation rel = new DataRelation("PrecioDet",
                    precios.PrimaryKey,
                    new DataColumn[] { orders.Columns["RPRO"], 
                                       details.Columns["RART"] }
                    );
    
    

      Y da el error :

    No se puede crear una clave a partir de columnas que pertenecen a diferentes tablas.

     

     

    ¿ Alguna sugerencia ?

    Cómo puedo hacerlo ?

    jeudi 2 février 2012 10:22

Toutes les réponses

  • ¿Has probado qué pasa si agregas dos dataRelations: una entre  Pedido y Precio por IdProv y otra entre PedidoDetalle y Precio por IdArt?

    Eso es a nivel del Dataset... otra cosa es cómo lo presentes en la interfaz de usuario.

    Saludos,

    Y.


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    • Proposé comme réponse Yván Ecarri lundi 27 février 2012 06:09
    mercredi 22 février 2012 08:49