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:
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!

Respuesta Responder a este mensaje
#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:

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:
> 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!
>



Respuesta Responder a este mensaje
#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
Respuesta Responder a este mensaje
#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:

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


Respuesta Responder a este mensaje
#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:
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:

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:
> 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!
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida