Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 07-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
me los presento los dos sin problemas Q2612A y 5
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #22  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Estoy perdido, pero me divierto mucho.
Probemos esto:
Código Delphi [-]
ZSumaInventario.SQL.Add('update articulos set cantidad = :inv where ref = :cod');
ZSumaInventario.ParamByName('cod').Value := ZTemp.Fields[1].Value;
ZSumaInventario.ParamByName('inv').Value := IntToStr(strtoint(ZTemp.Fields[3].Value) + strtoint(ZInventario.Fields[3].Value)); 
Showmessage(ZSumaInventario.ParamByName('cod').Value);
Showmessage(ZSumaInventario.ParamByName('inv').Value);

//strtoint(ZInventario.Fields[3].Value) + strtoint(ZTemp.Fields[3].Value);
//Showmessage(ZSumaInventario.ParamByName('inv').Value);
//ZSumaInventario.ExecSQL;
Aqui puede estar el asunto, veamos que pasa.
Deberia:
el primer mensaje: Q2612A
el segundo mensaje: 10
Si se rompe algo no es mi culpa
Saludos
Responder Con Cita
  #23  
Antiguo 07-10-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Creo que el problema es con el uso del .value y los parámetros. Value no hace una conversión automática de tipos.

Prueba lo siguiente
Código Delphi [-]
//suma la existecia del articulo
ZSumaInventario.Close;
ZSumaInventario.SQL.Clear;
ZSumaInventario.SQL.Add('update articulos set cantidad = :inv where ref = :cod');
ZSumaInventario.ParamByName('inv').AsInteger := ZInventario.Fields[3].AsInteger + ZTemp.Fields[3].AsInteger;
ZSumaInventario.ParamByName('cod').AsString := ZTemp.Fields[1].AsString;
ZSumaInventario.ExecSQL;
__________________
Saludos.
Responder Con Cita
  #24  
Antiguo 07-10-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Añado una cosa, yo prefiero usar FieldByName que Fields. La razón es que si cambias la estructura de la tabla, tendrás que revisar el índice de Fields en todos los sitios. Quedaría algo así:

Código Delphi [-]
//suma la existecia del articulo
ZSumaInventario.Close;
ZSumaInventario.SQL.Clear;
ZSumaInventario.SQL.Add('update articulos set cantidad = :inv where ref = :cod');
ZSumaInventario.ParamByName('inv').AsInteger := ZInventario.FieldByName('Cantidad').AsInteger + ZTemp.FieldByName('Cantidad').AsInteger;
ZSumaInventario.ParamByName('cod').AsString := ZTemp.FieldByName('¿Código?').AsString;
ZSumaInventario.ExecSQL;
__________________
Saludos.
Responder Con Cita
  #25  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Esta es muy buena logica, lo pense tambien, pero no estaba seguro, por eso solicite que se pusieran los mensajes para ver que tipo de datos daba.
Muy bueno basti
Saludos
Responder Con Cita
  #26  
Antiguo 07-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
efectivamente Basti me funciono perfecto, pero ahora tengo otro problema, que solo toma como referencia la primera fila de la tabla temporal que son los detalles que presenta el dbgrid y deberia de hacerlo con todos no? puse dos articulos y solamente me actualiza la primera fila..

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #27  
Antiguo 07-10-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Ya que me hicieron a un lado solo me queda lo ultimo.
Cambia esto a ver:
Código Delphi [-]
ZSumaInventario.ParamByName('cod').AsString := ZInventario.Fields[0].AsInteger
Saludos
Responder Con Cita
  #28  
Antiguo 07-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola Caral, y disculpa, pero no funciono y no hizo nada, no actualiza, solamente con ZTemp lo hace, pero solo lo hace con una sola linea, no hay una forma donde jale todos los registros del ref de ZTemp, porque si tengo dos articulos en la tabla temporal(ZTemp) en el showmessage me deberia salir por ejemplo "Q2612A, C7115A", pero solo me sale por ejemplo "C7115A".

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #29  
Antiguo 07-10-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Cita:
Empezado por enecumene Ver Mensaje
efectivamente Basti me funciono perfecto, pero ahora tengo otro problema, que solo toma como referencia la primera fila de la tabla temporal que son los detalles que presenta el dbgrid y deberia de hacerlo con todos no? puse dos articulos y solamente me actualiza la primera fila..

Saludos.
No, la consulta sólo te actualizará el registro que tienes activo en ZTemp.
Tienes que recorrer la tabla ZTemp.
Código Delphi [-]
ZSumaInventario.Close;
ZSumaInventario.SQL.Clear;
ZSumaInventario.SQL.Add('update articulos set cantidad = :inv where ref = :cod');
ZTemp.First;
while not ZTemp.Eof do
begin
  //suma la existecia del articulo
  ZSumaInventario.ParamByName('inv').AsInteger := ZInventario.FieldByName('Cantidad').AsInteger + ZTemp.FieldByName('Cantidad').AsInteger;
  ZSumaInventario.ParamByName('cod').AsString := ZTemp.FieldByName('¿Código?').AsString;
  ZSumaInventario.ExecSQL;
  ZTemp.Next;
end;
__________________
Saludos.
Responder Con Cita
  #30  
Antiguo 07-10-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, Gracias Basti, Ahora si funciona, va de pelos, y muchas gracias a ti Caral por dedicar tu tiempo en ayudarme, te los agradezco a los dos. ya con esto hago la inversa en el modulo de salida de inventario igual en los ajustes de inventario.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hacer un insert o un update en un campo array David Firebird e Interbase 4 27-04-2007 19:14:13
Update para un campo dbgrid multiselect jorelivi Varios 1 26-04-2007 23:54:27
UPDATE de un campo dependiendo del valor de un campo de otra tabla Javi2 SQL 5 18-04-2005 16:35:05
Error en update campo tipo fecha dridly SQL 1 24-09-2004 14:27:37


La franja horaria es GMT +2. Ahora son las 15:40:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi