tengo 3 tablas:
Computadores
codigo
codigo procesador
codigo SO
Ram
Processador
codigo
nombre
fabricante
modelo
sistema operativo:
codigo
nombre
fabricante
versao
De estas 3 tablas quiero que Datagridview visualice "codigo" de computadores, "nombre" de procesador y "nombre" de sistemas operativos. Como puedo hacerlo? Actualmente estoy usando este procedimiento en la clase Computadores
public DataGridView CarregaGrelhaCO(DataGridView DGridVCO, SqlConnection con1, string fltr)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con1;
if (fltr == "")
cmd.CommandText = "SELECT Codigo, Cod_Processador, Cod_SO, RAM, Descrição FROM Computadores ";
else
cmd.CommandText = "SELECT Codigo, Cod_Processador, Cod_SO, RAM, Descrição FROM Computadores" + fltr;
SqlDataAdapter DAdapter = new SqlDataAdapter();
DAdapter.SelectCommand = cmd;
DAdapter.Fill(ds, "Computadores");
DGridVCO.DataSource = ds.Tables["Computadores"];
return DGridVCO;
}
Alguien me podria ayudar a modificar el codigo para que llene como pretendo la datagridview?
Copyright © 2024 Q2A.ES - All rights reserved.
Answers & Comments
Verified answer
Hola amigo aca editando mi respuesta , lo que paso ayer es que estaba un poco apurado y no ley bien tu pregunta. El problema que tienes esta en el Select , porque? vos estas usando 3 tablas y estas tablas deben de estar relacionadas logicamente , No quiere decir porque la tabla Computadores guarde el codigo de las demas tablas basta con ponerla en el Select para que todo funcione NO tiene que hacer la relacion dentro de un Where , entonces para que funcione la consulta este quedaria asi:
SELECT Codigo, Cod_Processador, Cod_SO, RAM, Descrição FROM Computadores , Procesador , Sistema_Operativo
WHERE Sistema_Operativo. codigo=Computadores. codigo_So , Procesador.codigo=Computadores. codigo_procesador
Lo que hice fue poner despues del Where nombre de la tabla principal PUNTO el nombre de su campo clave principla IGUAL nombre de tabla que se relaciona PUNTO campo clave foreana que hace la relacion con la tabla principal Ej: Sistema_Operativo.codigo=Computadores.codigo_So
Asi amigo tu estas relacionando las tablas dentro del WHERE , ahora como ya estan relacionadas ya podras hacer tu consulta sin ningun inconveniente, Un tip es preferible que cuandos uses muchos campos no les pongas un nombre que ya existe en otra Tabla ya que puedes crear resultado falsos. Es mejor que tomes las tres letras de la tabla sub guion el nombre del campo Ej:
Pro_codigo esto quiere decir que el campo se llama codigo perteneciente a la tabla Procesador
Bueno de igual manera te dejo el tuto de como llenar un Datagridview desde una base de datos
link tuto:
http://www.youtube.com/watch?v=O1-QiA1PCbA
Espero haberte ayudado
Necesitas mas bien aplicar joins desde la consulta, seria mas o menos asi
Select com.codigo, proc.nombre, sis.nombre from computadores com inner join
procesador proc on com.codigo = proc.codigo
inner join sistemas sis on com.codigo = sis.codigo
con esta cnsulta ligas las 3 tablas por el campo codigo, simple