MySQL - duda con un query

   
Vista:

duda con un query

Publicado por marcos (3 intervenciones) el 18/07/2008 10:29:13
hola a todos tengo una duda con un fuckin query

ejemplo tengo dos tablas de entrada y una de salidas

en entradas guardo

id
nombre
fecha
hora
cantidad

en jalo el id y nombre de una tabla de catalagos osea si pongo inserto dos campos ala tabla de entradas ejemplo

id 1
nombre monitor
fecha 17-07-2008
hora 13:34:23
cantidad 5

ingreso otro con el mismo id pero difernete fecha y hora

id 1
nombre monitor
fecha 17-07-2008
hora 13:34:23
cantidad 6

el problema viene en salidas por ejemplo lo programe en un ciclo

primero selecciona de la tabla d eentradas todo id nombre fecha hora y cantidad
si me regresa algo

en un for each meto

si la cantidad de saldo es mayot ke la la kiero sakar
entonces si aslo
pero como actualizar la cantidad lo ago asi

update tabla set cantidad=cantidad-"+TextBox1.Text+"' where id sea el mismo and nombre sea el mismo pero coomo decirle por ejemplo si tengo de cantidad 5 y kiero sacar 6 ke me kite los 5 ke tengo entonces falta uno y ke me lo agarre del campo ke sige como aser eso ?????? espero y me aiga explicado :$:$ jeje
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:duda con un query

Publicado por m@slfire (20 intervenciones) el 18/07/2008 17:00:02
Hola Marcos,
Intentare ayudarte, pero antes, quisiera saber el porque guardas los registros de esa forma?. Si estas entrando cantidades diferentes para un mismo articulo, lo conveniente seria que tuvieras dos tablas, una para describir tu producto y otra para registrar las entradas y salidas del mismo. Por Ejemplo:

Tabla Articulos | Tabla Historial (Entradas/Salidas)
===================================================
ID 1 | ID 1
NOMBRE monitor | FECHA 17-07-2008
DISPONIBLE 15 | HORA 12:30:45
CANTIDAD 5
TIPO entrada

De esta manera, afectarias el "DISPONIBLE" cada vez que realices una entrada/salida.
Ademas de que asi tendrias un registro de Entradas y Salidas como historial.

Al momento de realizar una salida consultas "DISPONIBLE" en la tabla de articulos para verificar que la cantidad solicitada no sea mayor a la "DISPOBLE".

Para realizar una entrada o salida: Sino esta registrado el Articulo, entonces primero lo registras.

Query1.Close();
Query1.SQL.Text := 'INSERT INTO Historial VALUES( :articulo, :fecha, :hora, :cantidad, 'ENTRADA' ) ';
Query1.ParamByName('articulo').AsString := Edit1.Text;
Query1.ParamByName('fecha').AsDateTime := Date();
Query1.ParamByName('hora').AsDateTime := Time();
Query1.ParamByName('cantidad').AsInteger := Edit2.Text;
Query1.SQLExec();

Para actualizar la cantidad "DISPONIBLE", solo debes de verificar si es suma o resta.
Query1.Close();
Query1.Clear();
Query1.SQL.Add('UPDATE Articulo SET DISPONIBLE = DISPONIBLE + :cantidad ');
Query1.SQL.Add('WHERE ID = :articulo ');
Query1.ParamByName('articulo').AsString := Edit1.Text;
Query1.ParamByName('cantidad').AsInteger := Edit2.Text;
Query1.SQLExec();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con un query

Publicado por m@slfire (20 intervenciones) el 18/07/2008 17:03:46
Salio todo amontonado....

Tabla Articulos | Tabla Historial (Entradas/Salidas)
===================================================
ID 1 | ID 1
NOMBRE monitor | FECHA 17-07-2008
DISPONIBLE 15 | HORA 12:30:45
CANTIDAD 5
TIPO entrada

Esto seria asi:

Tabla Articulos | Tabla Historial (Entradas/Salidas)
===================================================
ID 1 | ID 1
NOMBRE monitor | FECHA 17-07-2008
DISPONIBLE 15 | HORA 12:30:45
CANTIDAD 5
TIPO entrada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con un query

Publicado por m@slfire (20 intervenciones) el 18/07/2008 17:04:02
Salio todo amontonado....

Tabla Articulos | Tabla Historial (Entradas/Salidas)
===================================================
ID 1 | ID 1
NOMBRE monitor | FECHA 17-07-2008
DISPONIBLE 15 | HORA 12:30:45
CANTIDAD 5
TIPO entrada

Esto seria asi:

Tabla Articulos | Tabla Historial (Entradas/Salidas)
===================================================
ID 1 | ID 1
NOMBRE monitor | FECHA 17-07-2008
DISPONIBLE 15 | HORA 12:30:45
CANTIDAD 5
TIPO entrada
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con un query

Publicado por m@slfire (20 intervenciones) el 18/07/2008 17:07:19
Lo siento. Intente ponertelo "TAB"ulado, pero no se pudo. Le intente con espacios, pero tampoco se pudo, automaticamente eliminan los espacios en blanco que uno inserta.

Tabla Articulos
================
ID 1
NOMBRE monitor
DISPONIBLE 15

Tabla Historial (Entradas/Salidas)
============================
ID 1
TIPO entrada
FECHA 17-07-2008
HORA 12:30:45
CANTIDAD 5
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda con un query

Publicado por marcos (3 intervenciones) el 18/07/2008 20:32:38
hola maslfire

ske tengo un catalogo
contiene estos campos

id nombre fecha_entrada stock minimo(este no es tan important)

en entradas puedo comprar varios articulos con el id 1

entonces por ejemplo compre dos articulos con el mismo id pero con fecha diferente por ejempo por as dos compras tengo 7
yen uno tengo 4 y en otro 3

en salidas yo le digo ke kiero sacar 5
entonces se va al 4 lo convierte en 0 qeda uno al cinco le resta ese uno
pero como hacer eso ?? esa es mi gran duda mira chekate el codigo ke utilizo es en asp.net y con base de datos informix chekalo

Sub updates()


Try
Dim cantidad1 As Integer
Dim cantidad2 As Integer
Dim comando As OdbcCommand

Dim mi_conex As New OdbcConnection(myconexion)
mi_conex.Open()
Dim da As OdbcDataAdapter = New OdbcDataAdapter("SELECT num_articulo,nombre_equipo,tipo,fecha_entrega,hora,cantidad
FROM suministros
where num_articulo=" + Me.TxtArticulo.Text + " and nombre_equipo='" + Me.TxtNombre.Text.ToUpper + "' ORDER BY fecha_entrega,hora asc", mi_conex)
Dim ds As New DataSet
da.Fill(ds, "suministros")

If ds.Tables(0).Rows.Count > 0 Then

For Each renglones As DataRow In ds.Tables("suministros").Rows

cantidad1 = renglones("cantidad")
cantidad2 = Me.TxtCanSalida.Text

If (cantidad1 > cantidad2) Then

cantidad1 = cantidad1 - cantidad2
comando = New OdbcCommand("UPDATE suministros
SET cantidad='" + CStr(cantidad1) + "'
WHERE num_articulo=" + Me.TxtArticulo.Text.ToUpper + "
and nombre_equipo='" + Me.TxtNombre.Text.ToUpper + "'", mi_conex)
comando.ExecuteNonQuery()
ClientScript.RegisterStartupScript(Page.GetType, "Aviso", "<script language='JavaScript'> alert(' Se ha guardado una salida')</script>")

Exit For


ElseIf (cantidad1 = cantidad2) Then
cantidad1 = cantidad2 = (0)
comando = New OdbcCommand("UPDATE suministros
SET cantidad='0'
WHERE num_articulo=" + Me.TxtArticulo.Text.ToUpper + "
and nombre_equipo='" + Me.TxtNombre.Text.ToUpper + "'
and hora=hora", mi_conex)
comando.ExecuteNonQuery()
ClientScript.RegisterStartupScript(Page.GetType, "Aviso", "<script language='JavaScript'> alert(' Se ha guardado una salida')</script>")

Exit For

ElseIf (cantidad1 < cantidad2) Then
cantidad2 = cantidad2 - cantidad1
comando = New OdbcCommand("UPDATE suministros
SET cantidad='0' WHERE num_articulo=" + Me.TxtArticulo.Text.ToUpper + " and nombre_equipo='" + Me.TxtNombre.Text.ToUpper + "'
and hora=hora", mi_conex)
comando.ExecuteNonQuery()
ClientScript.RegisterStartupScript(Page.GetType, "Aviso", "<script language='JavaScript'> alert(' Se ha guardado una salida')</script>")
End If


Next

Else
ClientScript.RegisterStartupScript(Page.GetType, "Aviso", "<script language='JavaScript'> alert('NO HAY ARTICULOS EN ALMACEN')</script>")
End If



mi_conex.Close()
mi_conex.Dispose()

Catch ex As Exception
ClientScript.RegisterStartupScript(Page.GetType, "Aviso", "<script language='JavaScript'> alert('ERROR AL CONSULTAR" & ex.Message & "'')</script>")

End Try
End Sub

TE AGRADECERIA MUCHO BROTHER KE ME HICIERA SUN PARO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar