Pregunta de C#

Grunt

Bovino adicto
#1
Hola comunidad bakuna, aqui vengo a solicitar ayuda una vez más jeje.

Tengo el clasico programa de grabar, eliminar, consultar y editar, todo eso lo tengo en una bd con sql.

Mis tablas son: Clientes, Proveedores, Articulos, Compras y Ventas.

El chiste del programa es generar:

Clientes (que contengan su id, nombre, telefono y saldo).
Proveedores (conteniendo id, razon social, telefono y saldo).
Articulos (codigo de articulo, descripcion, costo y existencia).

Sobre las conexiones, el Form y el codigo está bien, si me cumplen los botones para cada accion (grabar, eliminar, etc.).

Ahora, en el Form de Ventas es donde se me comienza a complicar la existencia.

La tabla la llevo asi:

Ventas (Folio, Id (cliente), codigo de articulo, fecha y cantidad).
(no se si aqui poner tambien id del cleinte - nombre y codigo de articulo - descripcion).

Y en el diseño del Form, para realizar la venta, le hize algo asi:




En lo que se me tupe es al momento de darle click al boton de Actuaizar, se me graben en la tabla Ventas los datos que consulte.

Y ps la preguntota que tengo ahora, al momento de realizar la venta, no se como hacer que el saldo del cliente o provedor se reste, tambien el numero de unidades en el stock, osea, de la tabla Clientes, restar la subtabla Saldo (restarle el saldo del cliente) desde el Form Ventas.

Ya de hai me guiaria yo para hacer la actualizacion del stock y lo demás.

No debo usar stored procedures ¬¬ (como quiera no sabria tampoco como insertarlos en c# :memeo:).

Si no me supe explicar me avisan y si quieren subo lo que llevo del programa.

Saludos.
 
#2
lo que quieres es solo actualizar el dato en la DB
pues aqui esta la instruccion para actualizar un dato en SQL
string comand = "UPDATE (nombre de la tabla) " +
"SET @(columna) = (dato) "+
"WHERE (Columna) = (celda)";
ahi es para actualizar los datos de una celda, ya lo demas es cosa de que hagas el metodo :D
 

DevIaNcE®

Bovino de la familia
#3
Y ps la preguntota que tengo ahora, al momento de realizar la venta, no se como hacer que el saldo del cliente o provedor se reste, tambien el numero de unidades en el stock, osea, de la tabla Clientes, restar la subtabla Saldo (restarle el saldo del cliente) desde el Form Ventas.
lo que puedes hacer es guardar el saldo como variable. es decir: jalas el dato de la base de datos y lo guardas como variable en una etiqueta (label)... de ésta forma podrás restar el saldo del cliente o del proveedor sin ningun problema (ya que no habrá problemas al momento de referenciar el dato de la base de datos con el dato a restar) y lo guardas en otra etiqueta (llamemosle res).

Ya solamente para actualizarlo en la base de datos... utiliza la sentencia update tomando el resultado de la resta que se guardó en la etiqueta "res".

espero eso te ayude
 
#4
lo que puedes hacer es guardar el saldo como variable. es decir: jalas el dato de la base de datos y lo guardas como variable en una etiqueta (label)... de ésta forma podrás restar el saldo del cliente o del proveedor sin ningun problema (ya que no habrá problemas al momento de referenciar el dato de la base de datos con el dato a restar) y lo guardas en otra etiqueta (llamemosle res).

Ya solamente para actualizarlo en la base de datos... utiliza la sentencia update tomando el resultado de la resta que se guardó en la etiqueta "res".

espero eso te ayude
asi es,solo bajas el dato de la db despues le restas el saldo de la venta y ese dato lo actualizas en la tabla y listo :D,
 

Grunt

Bovino adicto
#5
lo que puedes hacer es guardar el saldo como variable. es decir: jalas el dato de la base de datos y lo guardas como variable en una etiqueta (label)... de ésta forma podrás restar el saldo del cliente o del proveedor sin ningun problema (ya que no habrá problemas al momento de referenciar el dato de la base de datos con el dato a restar) y lo guardas en otra etiqueta (llamemosle res).

Ya solamente para actualizarlo en la base de datos... utiliza la sentencia update tomando el resultado de la resta que se guardó en la etiqueta "res".

espero eso te ayude

Podrias poner un ejemplo de como traerme el dato de la base de datos a la Form Ventas? (ese es por ahora mi mayor problema) y haber si esta bien lo que entendi de ese procedimiento.

En el Form Ventas, usare 2 labels (las que sean) y en una hare el procedimiento de poner el dato de la base de datos, en este caso, el dato que contiene la sub-tabla Saldo, de la tabla Clientes. Luego lo pongo en una variable.

Ahora, lo de poner el dato como una variable, tambien como seria eso? ._., ya que al momento de hacer un update en mi tabla Clientes, le asigno un Saldo determinado.

Lo demás todo bien, gracias.
 
#6
para traerte los datos de db tienes dos opciones una es hacerlo por medio de un comand en este caso el que tienes es sqlcomand y otra por sqladapter, el comando para esta es SELECT (Columnas) FROM (Tabla), esta es para traerte las columnas que quieras de tu tabla, esta otra es para solo traerte un fila de la tabla: SELECT * FROM (Tabla) WHERE (Condicion), y para traerte el dato una sola celda es SELECT (Columna) FROM (Tabla) WHERE (Columna) = (Celda), despues de ese a objeto comando le aplicas el metodo de ExecuteReader para hacer la lectura, despues del objeto hecho por ExecuteReader con un ciclo aplicas el metodo read() y ese dato obtenido se lo introduces a una variable (esta puede ser un integer, string, etc). Y ya con la variable haces lo que quieres ponerla en un label, textbox, listbox, combobox, etc, pues en el programa juegas con la variable que supongo que eso si lo has de saber, ahi le haces lo quieres y pues cuando ya sea el resultado final pues solo lo actualizas con el comando UPDATE.

ahi esta el ejemplo:
ConnectionStringSettings pubs = ConfigurationManager.ConnectionStrings["PubsData"];
DbConnection connection = new SqlConnection(pubs.ConnectionString);
DbCommand cmd = connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT stor_id, ord_num FROM Sales";
connection.Open();
DbDataReader rdr = cmd.ExecuteReader();
Label lbl = GetLabel(275, 20);
while (rdr.Read())
{
lbl.Text += rdr["stor_id"] + ": " + rdr["ord_num"] + "<br />";
}
connection.Close();
 
#7
para los stored procedures es es igual de sencillo por parte del desarrollador, solo le tienes que cambiar:
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "(Nombre del storedprocedure)";
ya dependiendo de que sea el stored procedure aplicaras un executereader, executenonquery, o executescalar.
el problema es para el programador de base de datos por que el que se debe de encargar de diseñar el store procedure :D sale suerte y hay luego nos presumes como quedo tu programa
 

Grunt

Bovino adicto
#8
Hola hola, pues aqui vengo denuevo a picar costillas :histerica:.

Pues ya hize masomenos el codigo, pero al momento de en otro label intentar hacer la resta, no me aparece la variable MySaldo, aqui les dejo el codigo:

Del Saldo:


string Saldo;
string SQLINSERT = "SELECT * FROM Clientes WHERE Id=" + Id.Text + ";";
SqlCommand Comando = newSqlCommand(SQLINSERT, Conexion);
Comando.CommandType = CommandType.Text;
Conexion.Open();
SqlDataReader Read = Comando.ExecuteReader();
Read.Read();
if (Read.HasRows == true)
{
Saldo = Read[4].ToString();
float MySaldo = float.Parse(Saldo.ToString());
}
Conexion.Close();


De el Costo del articulo:

string Costo;
string SQLINSERT = "SELECT * FROM Articulos WHERE Codigo_art=" + Codigo_art.Text + ";";
SqlCommand Comando = new SqlCommand(SQLINSERT, Conexion);
Comando.CommandType =
CommandType.Text;
Conexion.Open();
SqlDataReader Read = Comando.ExecuteReader();
Read.Read();
if (Read.HasRows == true)
{
Costo = Read[3].ToString();
float MyCosto = float.Parse(Costo.ToString());
}
Conexion.Close();


Como les digo, las dos instrucciones de arriba las tengo en 2 diferentes labels, entonces ya de hai la operacion la haria en un 3er label, pero en el 3er label al momento de intentar poner las variables MySaldo y MyCosto no aparecen, que puedo hacer hai o meto todas las instrucciones en un solo label?

Saludos y gracias por la ayuda, me esta sirviendo mucho :vientos:.
 
#11
Mira amigo no te aparecen las variables porque no las estas declarando en la parte de arriba, las estas declarando dentro del label, entonces no aparecen en otro label, declaralas en la parte de arriba como todas las variables que vayas a usar en este form y vas a ver que jala ;)
 
#12
perdon no me explique bien me refiero a las variables myCosto y mySaldo, declaralas hasta arriba algo asi:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
//En esta parte tienes que declarar tus variables
float myCosto;
float mySaldo;
public Form1()
{
InitializeComponent();
}
}
}
 
Arriba