• Lunes 18 de Noviembre de 2024, 03:39

Autor Tema:  duda sobre venta de producto en mysql y c#  (Leído 2000 veces)

el_rolas

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
duda sobre venta de producto en mysql y c#
« en: Miércoles 18 de Noviembre de 2009, 03:24 »
0
tengo una duda, tengo en una tabla stock ligada a productos, una cantidad de productos, entonces quiero hacer que al realizar una venta, se descuente la cantidad que vendí al stock del producto, es decir tengo 10 manzanas en el stock y vendo 3 quiero que se descuente del stock las 3 y queden 7 alguna idea de como hacerlo?

he pensando en hacer un select pero no se como hacer la resta.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: duda sobre venta de producto en mysql y c#
« Respuesta #1 en: Miércoles 18 de Noviembre de 2009, 04:00 »
0
El procedimiento que tendrias que hacer es leer la cantidad de articulos que tienes en el inventario y luego utilizar la sentencia UPDATE para actualizar la base base de datos.

Te dejo un pequeño ejemplo a continuacion, suponiendo que tienes tu stock guardado en una variable llamada cantidad, (que previamente leiste mediante un select) y que la clave de tu articulo es articulo_id. La clasula WHERE es necesaria porque sin  ella, UPDATE actualizaria todas las filas de tu tabla, y solo queremos que actualice aquella fila cuya clave de articulo es la clave del articulo que vas a modificar, no se si me explique bien :P

Código: C#
  1.  
  2.             command.CommandText =
  3.                 "UPDATE articulos " +
  4.                 "SET articulo_cantidad = articulo_cantidad - " + cantidad.ToString()
  5.                 + " WHERE articulo_id = '" + articulo_id + "'";
  6.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

el_rolas

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: duda sobre venta de producto en mysql y c#
« Respuesta #2 en: Miércoles 18 de Noviembre de 2009, 04:28 »
0
lo siento pero no he entendido nada, soy muy novato para las bases de datos y c#

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: duda sobre venta de producto en mysql y c#
« Respuesta #3 en: Miércoles 18 de Noviembre de 2009, 19:57 »
0
Pues entonces tendrias que aprender entonces mas sobre SQL, C# y bases de datos :)

Desconozco la forma exacta en que te conectas y accedes a la base de datos, asi que no puedo ser muy especifico en ese sentido, solo puedo darte guias generales sobre lo que tienes que hacer.

En mi caso utilizo lo siguiente:

MySqlConnection para conectarme a la base de datos.
MySqlConnectionStringBuilder para crear mi cadena de conexion.
MySqlCommand para establecer los comandos que voy a usar sobre mi base de datos (select, insert, update, etc.)
MySqlDataReader cuando unicamente necesito leer lo que contienen mis tablas.
MySqlDataAdapter y DataTable, cuando necesito leer/escribir lo que hay en mis tablas;

En el ejemplo anterior que te di, la variable comand es simplemente un objeto de tipo MySqlCommand, al cual le asignas a la propiedad CommandText los comandos que quieras realizar sobre tu base de datos (cualquier comando que permita mysql), y luego simplemente utilizo el metodo ExecuteNonQuery() para ejecutar mi comando/consulta.

Suponiendo que tengo una tabla de articulos y quiero leer toda mi tabla, despues de haber enlazado correctamente mis objetos MySqlConnection, MySqlCommand, MySqlDataReader, MySqlDataAdapter y DataTable, lo que hago en ese caso es:

Código: C#
  1.  
  2.             // Asigno mi comando en la variable command, en este caso
  3.             // lectura de la tabla
  4.             command.CommandText = "select * from articulos";
  5.  
  6.             try
  7.             {
  8.                 // Me conecto a la base de datos (abro la conexion)
  9.                 conexion.Open();
  10.                 // executo el comando previo en este caso un select (lectura)
  11.                 command.ExecuteNonQuery();
  12.                 // Cierro la conexion a mi base de datos
  13.                 conexion.Close();
  14.             }
  15.             // Manejo de errores (excepciones) a la hora de abrir mi
  16.             // base de datos o ejecutar comandos
  17.             catch (MySqlException ex)
  18.             {
  19.                 MessageBox.Show(ex.Message);
  20.                 if (conexion.State == ConnectionState.Open)
  21.                     conexion.Close();
  22.             }
  23.  
  24.  

Ahora, suponiendo que quiero actualizar TODOS los precios de mis articulos, en caso que hayan tenido un incremento por la inflacion, haria algo como lo siguiente:

Código: C#
  1.  
  2.             // Asigno mi comando en la variable command, en este caso
  3.             // actualizacion de todas las filas de la tabla mediante UPDATE,
  4.             // aumento TODOS los precios en un 10%
  5.             command.CommandText = "UPDATE articulos SET articulo_precio = articulo_precio * 1.10"
  6.  
  7.             try
  8.             {
  9.                 // Me conecto a la base de datos (abro la conexion)
  10.                 conexion.Open();
  11.                 // executo el comando previo en este caso un UPDATE
  12.                 // (actualizacion o escritura)
  13.                 command.ExecuteNonQuery();
  14.                 // Cierro la conexion a mi base de datos
  15.                 conexion.Close();
  16.             }
  17.             // Manejo de errores (excepciones) a la hora de abrir mi
  18.             // base de datos o ejecutar comandos
  19.             catch (MySqlException ex)
  20.             {
  21.                 MessageBox.Show(ex.Message);
  22.                 if (conexion.State == ConnectionState.Open)
  23.                     conexion.Close();
  24.             }
  25.  
  26.  

Si te fijas lo unico que modifico es command.CommandText, el resto de codigo es el mismo, no importa si voy a leer (select) o actualizar (update) la base de datos.

Esa es la razon por la que solo te puse la sentencia command.CommandText, en mi respuesta anterior. No se necesita mas que saber que sentencia vas a utilizar, en ese caso fue un ejemplo de la utilizacion de UPDATE.

Ahora, si no lo haces asi, pon el codigo que utilizas para conectarte y leer, y quizas asi podriamos ayudarte mas, aunque te recomiendo que leas un poco mas sobre SQL, asi podras comprender mejor que comandos necesitas.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================