none
Metodo Buscar RRS feed

  • Pregunta

  • Necesito ayuda con esta excepción, les adjunto el código que estoy desarrollando.

      private void button1_Click(object sender, EventArgs e)
            {
                conexionbd conexion = new conexionbd();
                conexion.abrir();
                SqlConnection conectarbd = new SqlConnection("Data Source=PRACTICANTETI; Initial Catalog=Bascula3 ;Integrated Security=True");
                SqlCommand cmd = new SqlCommand("SELECT Folio,Lote,AvisoEmbarque,Contrato, Marca,Modelo,Placas,Color,NumeroEco,PlacasCaja,Transportadora,Nombre,Producto,Tipo,NTipo,Observaciones,Provee,Concepto FROM Entrada INNER JOIN Camion INNER JOIN Operadores ON Entrada.idEntrada = Camion.idCamiones = Operadores.idOperador inner join Productos ON Productos.idProducto = Operadores.idOperador INNER JOIN Proveedores ON Proveedores.idProveedor = Productos.idProducto  where Placas = '" + bus.Text + "'", conectarbd);
                conectarbd.Open();
                SqlDataReader leer = cmd.ExecuteReader(); // EL ERROR ME LO DA EN ESTA LINEA

    viernes, 14 de febrero de 2020 19:19

Respuestas

  • hola

    Tienes que usar parametros

    string connstring = "Data Source=PRACTICANTETI; Initial Catalog=Bascula3 ;Integrated Security=True";
    using(SqlConnection conectarbd = new SqlConnection(connstring))
    {
    	conectarbd.Open();
    
    	string query = "SELECT Folio,Lote,AvisoEmbarque,Contrato, Marca,Modelo,Placas,Color,NumeroEco,PlacasCaja,
    					Transportadora,Nombre,Producto,Tipo,NTipo,Observaciones,Provee,Concepto FROM Entrada 
    					INNER JOIN Camion ON ????
    					INNER JOIN Operadores ON Entrada.idEntrada = Camion.idCamiones = Operadores.idOperador 
    					inner join Productos ON Productos.idProducto = Operadores.idOperador 
    					INNER JOIN Proveedores ON Proveedores.idProveedor = Productos.idProducto  
    					where Placas = @placas";
    
    	SqlCommand cmd = new SqlCommand(query, conectarbd);
    	cmd.Paameters.AddWithValue("@placas", bus.Text);
    	
    	SqlDataReader leer = cmd.ExecuteReader();
    	
    	//resto codigo
    }

    ademas veo que una parte del INNER JOIN no la defines

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio ParraModerator viernes, 14 de febrero de 2020 19:40
    • Marcado como respuesta Katsa viernes, 14 de febrero de 2020 21:08
    viernes, 14 de febrero de 2020 19:33
  • Hola Katsa:

    Tienes mal planteada la consulta. Las relaciones están mal. El error de sintaxis te lo da por el segundo igual de la segunda linea que te expongo. Pero algo no encaja, además de eso.

    FROM Entrada INNER JOIN Camion 
    			 INNER JOIN Operadores ON Entrada.idEntrada = Camion.idCamiones = Operadores.idOperador 
    			 inner join Productos ON Productos.idProducto = Operadores.idOperador 
    			 INNER JOIN Proveedores ON Proveedores.idProveedor = Productos.idProducto  

    Esto es lo que contiene tú consulta.

    Entrada INNER JOIN Camion xxxxx aquí falta el ON .....

    INNER JOIN Operadores On .......Seguro que Operadores.idOperador se relaciona con idCamiones o idEntrada?

    INNER JOIN Productos On Productos.idProducto = Operadores.IdOperador ...  Seguro que operadores idOperador se relaciona con Productos.IdProducto ?

    INNER JOIN Proveedores On Proveedores.idProveedor = Productos.idProducto ... Seguro que productos.idProducto se relaciona con Proveedores.idProveedor?

    Además en tú código hay varios aspectos que puedes mejorar.

    Deberías de envolver el método en un try catch, para capturar los errores.

    Las conexiones, mejor establecerlas en un using, para que sea el quien libera los recursos al terminar.

    Y deberías de usar parámetros.

    Parametros con SqlCommand

    https://docs.microsoft.com/es-es/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.8

    Datareader con Using

    https://docs.microsoft.com/es-es/dotnet/framework/data/adonet/retrieving-data-using-a-datareader

    try catch

    https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/try-catch

    • Marcado como respuesta Katsa viernes, 14 de febrero de 2020 21:08
    viernes, 14 de febrero de 2020 19:45

Todas las respuestas

  • hola

    Tienes que usar parametros

    string connstring = "Data Source=PRACTICANTETI; Initial Catalog=Bascula3 ;Integrated Security=True";
    using(SqlConnection conectarbd = new SqlConnection(connstring))
    {
    	conectarbd.Open();
    
    	string query = "SELECT Folio,Lote,AvisoEmbarque,Contrato, Marca,Modelo,Placas,Color,NumeroEco,PlacasCaja,
    					Transportadora,Nombre,Producto,Tipo,NTipo,Observaciones,Provee,Concepto FROM Entrada 
    					INNER JOIN Camion ON ????
    					INNER JOIN Operadores ON Entrada.idEntrada = Camion.idCamiones = Operadores.idOperador 
    					inner join Productos ON Productos.idProducto = Operadores.idOperador 
    					INNER JOIN Proveedores ON Proveedores.idProveedor = Productos.idProducto  
    					where Placas = @placas";
    
    	SqlCommand cmd = new SqlCommand(query, conectarbd);
    	cmd.Paameters.AddWithValue("@placas", bus.Text);
    	
    	SqlDataReader leer = cmd.ExecuteReader();
    	
    	//resto codigo
    }

    ademas veo que una parte del INNER JOIN no la defines

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio ParraModerator viernes, 14 de febrero de 2020 19:40
    • Marcado como respuesta Katsa viernes, 14 de febrero de 2020 21:08
    viernes, 14 de febrero de 2020 19:33
  • Hola Katsa:

    Tienes mal planteada la consulta. Las relaciones están mal. El error de sintaxis te lo da por el segundo igual de la segunda linea que te expongo. Pero algo no encaja, además de eso.

    FROM Entrada INNER JOIN Camion 
    			 INNER JOIN Operadores ON Entrada.idEntrada = Camion.idCamiones = Operadores.idOperador 
    			 inner join Productos ON Productos.idProducto = Operadores.idOperador 
    			 INNER JOIN Proveedores ON Proveedores.idProveedor = Productos.idProducto  

    Esto es lo que contiene tú consulta.

    Entrada INNER JOIN Camion xxxxx aquí falta el ON .....

    INNER JOIN Operadores On .......Seguro que Operadores.idOperador se relaciona con idCamiones o idEntrada?

    INNER JOIN Productos On Productos.idProducto = Operadores.IdOperador ...  Seguro que operadores idOperador se relaciona con Productos.IdProducto ?

    INNER JOIN Proveedores On Proveedores.idProveedor = Productos.idProducto ... Seguro que productos.idProducto se relaciona con Proveedores.idProveedor?

    Además en tú código hay varios aspectos que puedes mejorar.

    Deberías de envolver el método en un try catch, para capturar los errores.

    Las conexiones, mejor establecerlas en un using, para que sea el quien libera los recursos al terminar.

    Y deberías de usar parámetros.

    Parametros con SqlCommand

    https://docs.microsoft.com/es-es/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.8

    Datareader con Using

    https://docs.microsoft.com/es-es/dotnet/framework/data/adonet/retrieving-data-using-a-datareader

    try catch

    https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/keywords/try-catch

    • Marcado como respuesta Katsa viernes, 14 de febrero de 2020 21:08
    viernes, 14 de febrero de 2020 19:45