Tablas con cuadros combinados

08/11/2007 - 18:45 por Santi | Informe spam
Hola!
¿Cómo se puede hacer con SQL Server 2005 que un RECORDSET que apuna a una
tabla, algunos de sus campos/columnas sean cuadros combinados al
representarlo en un DATAGRID?

Me Explico mejor:

Tengo una tabla de Productos que tiene los siguientes campos:
-
-IdProducto bigint (autonumérico)
-IdCliente bigint (almacena el ID de una entrada a la tabla de clientes,
relación 1 a infinitos)
-IdTipo bigint (almacena el ID de una entrada a la tabla de Tipos de
Productos, relación 1 a infinitos)
-Descripcion varchar(100)

Tabla de Clientes:

-IdCliente bigint (autonumérico) (relacion 1 a infinitos)
-Nombre varchar(50)

IdCliente | Nombre
1 | Pepe
2 | Juan

Tabla de Tipos:

-IdTipos bigint (autonumérico) (relacion 1 a infinitos)
-Tipo varchar(50)

IdTipos | Tipo
|-
1 | Jamon
2 | Pate


Uso un formulario con un DATAGRID al que le asocio como origen de datos un
RECORDSET que he configurado sin asistente cargando los datos de la tabla de
Productos (he omitido en el SELECT el IdProducto) (usando el data adapter los
comandos SELECT, UPDATE, DELETE e INSERT). Al abrirlo muestra algo así como:

IdCliente | IdTipo | Descripcion
1 | 1 | campo 1
1 | 2 | campo 2

Pero yo lo que quiero es que en vez de mostrar los ID de los campos a los
que apunta (que es lo que realmente almacena la tabla de productos), muestre
uno de los campos con texto al que apunta cada ID. Además de poder modificar
o añadir más campos usando un combo desplegable con los valores de la tabla
al que está vinculado. Algo así:

dCliente | IdTipo | Descripcion
-| |
Pepe | Jamon | campo 1
Pepe | Pate | campo 2

Esto en ACCESS es muy sencillo sin más que asociar al campo en cuestión un
control "Cuadro combinado", Origen de la fila="Tabla/Consulta" y el origen de
la fila algo así como: "SELECT Clientes ORDER BY Clientes.Nombre" y luego
mostrar solo la columna deseada cambiando los tamaños: 0cm;1cm.

Gracias por leer hasta aquí y gracias por ayudarme!

Saludos!

Preguntas similare

Leer las respuestas

#1 Carlos Sancho
08/11/2007 - 19:02 | Informe spam
Hola, Santi

Mira las propiedades de las columnas del DataGridView. Puedes seleccionar el
tipo de columna: textbox (la tipica), combobox, etc.. Pero esto pertenece al
Visual Studio o a algun otro entorno de programacion que integre SQL server
y no al propio SQL Server.

Espero te ayude

Saludos

"Santi" escribió en el mensaje
news:
Mostrar la cita
#2 Santi
08/11/2007 - 19:55 | Informe spam
Gracias Carlos!,

Utilizo C# con el entorno Visual Studio y efectivamente por ahí van los tiros.

Voy a tratar de solucionarlo por esta vía, Gracias!

"Carlos Sancho" wrote:

Mostrar la cita
#3 jcpc91
08/11/2007 - 21:11 | Informe spam
el las columnas del datagrid tienen la propiedad de visible yo
ocultaría las columnas idcliemte, idtipo y en la consulta haria ke
aparecieran los campos nombre y tipo de sus respectivas tablas para ke
se muestren en el datagrid y para ke inserte si kieres ke haga una
insercción en las tablas involucradas yo en lo personal lo haria por
medio de un procedimiento almacenado pasndole todos los valores
necesario para insertar en las tres tablas
ejmplo

Create Procedure miProcedimiento
@NOMCLIENTE NVARCHAR(10),
@DESCTIPO NVARHCAR(10),
@OTRODATO INT,
BEGIN
INSERT INTO CLIENTE VALUES nomrbe = @NOMCLIENTE
INSERT INTO TIPOS VALUES tipo = @DESCTIPO
otra tabla
INSERT INT PRODUCTO values otrodato = @OTRODATO

mas o meno sería así lo interesante es la posible idea de la solución
tambien podría ser otra crear una vista ke involucre los datos
necesarios para insertar los registros en las tres tablas y en la
vista crear un desencadenante ke inserte en las tres tablas e incluso
utilizando transacciones por si las moscas falla una insercción no se
completen las demás
#4 Santi
08/11/2007 - 21:25 | Informe spam
Gracias!, me parece muy interesante esta respuesta, voy a ver si lo adapto a
mi caso.

Gracias!

"" wrote:

Mostrar la cita
#5 Juan Diego Bueno
08/11/2007 - 21:37 | Informe spam
Hola Santi:

Yo suelo usar la opción que te ha dicho Carlos, pero tienes otra
alternativa. Puedes crear una vista que devuelva los registros de la tabla y
los campos de texto relacionados.

Si además de eso, necesitas que el gridview permita que añadas nuevos
registros de forma directa, o poder modificar, etc..., podrías hacer que la
vista fuera modificable. Como en este caso va a tener joins de otras tablas,
no puedes hacer inserciones o modificaciones directas, tendrías que recurrir
a un trigger instead of dentro de esa misma vista que te permitiera hacer
las inserciones sobre la tabla en la que se basa la vista (es similar a lo
que te ha planteado jcpc, pero más elegante, ya que trabajas con la vista
como si fuera una tabla).

Saludos

Juan Diego Bueno www.moondance.tk

"Santi" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida