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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
Update un campo sumando existencia (Inventario)

Hola compañeros del foro, aqui vuelvo con un obstaculo que me he topado, he aqui el codigo:

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').Value := strtoint(ZInventario.Fields[3].Value) + strtoint(ZTemp.Fields[3].Value);
ZSumaInventario.ParamByName('cod').Value := ZTemp.Fields[1].Value;
ZSumaInventario.ExecSQL;

Objetivo: estoy haciendo un sistema de inventario, estoy haciendo la entrada a traves de un DBGrid enlazado a una tabla temporal, en la tabla articulos hay un campo llamado cantidad, estoy tratando de hacer un update donde me sume la cantidad ingresada en la tabla temporal mas la cantidad en la tabla articulos. ejemplo:

Cita:
Tabla articulo

Articulo -------cabtidad--
toner -------1--

tabla temporal

Articulo -------cantidad--
toner -------5--
con el update que estoy tratando de hacer es que en la tabla articulo se me sume los cincos de la tabla temporal que serian de 1 a 6. no se si me hice entender.

al correr me sale el siguiente error:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Almacen.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type (Null) into type (String)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
que estaria haciendo mal?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
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
Para mi el orden no esta bien, pero bueno, tal vez funcione asi.
Sabemos que ZSumaInventario hace toda la operacion, pero:
Para empezar me gustaria saber:
Cantidad
Inv
Cod
ZInventario, 3
ZTemp, 3
Bueno que tipo de datos contienen cada uno de ellos, me lo puedo imaginar pero me parece mejor preguntarlo.
Se nota que soy ademas de novato, curioso.
Saludos
Responder Con Cita
  #3  
Antiguo 07-10-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola enecumene,
¿Podrías decirme en que parte del código te arroja el error?

Al parecer dicho error se produce debido a que en tu consulta hay un campo Nulo por lo que al ejecutarse la instrucción SQL falla. Lo que se trató de hacer es convertir Null es un string...

Esto me resulta rarísimo... ¿para que hacer conversiones de strings? ¿No es mejor estar guardandolo directamente como integer?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
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
Cita:
Empezado por Caral Ver Mensaje
Hola
Para mi el orden no esta bien, pero bueno, tal vez funcione asi.
Sabemos que ZSumaInventario hace toda la operacion, pero:
Para empezar me gustaria saber:
Cantidad
Inv
Cod
ZInventario, 3
ZTemp, 3
Bueno que tipo de datos contienen cada uno de ellos, me lo puedo imaginar pero me parece mejor preguntarlo.
Se nota que soy ademas de novato, curioso.
Saludos
Inv := la suma de la nueva cantidad mas la ya existente en la base de datos
Cod := el codigo o referencia del articulo donde la cual cumple como condicion.
ZInventario[3] := es el campo cantidad de tipo integer de la tabla Articulos.
ZTemp[3] := es el campo cantidad de tipo integer de la tabla temporal.

Cita:
Empezado por Delphius
Hola enecumene,
¿Podrías decirme en que parte del código te arroja el error?

Al parecer dicho error se produce debido a que en tu consulta hay un campo Nulo por lo que al ejecutarse la instrucción SQL falla. Lo que se trató de hacer es convertir Null es un string...

Esto me resulta rarísimo... ¿para que hacer conversiones de strings? ¿No es mejor estar guardandolo directamente como integer?

Saludos,
el error se produce en esta linea:

Código Delphi [-]
ZSumaInventario.ParamByName('inv').Value := strtoint(ZInventario.Fields[3].Value) + strtoint(ZTemp.Fields[3].Value);

P.D.: se me habia olvidado decir que estoy trabajando con access y delphi7.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #5  
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
uffff!!!!, ya he ultilizado el 100% de mi pequeña cabecita y no he logrado el objetivo, pues seguire descansando y tomando mi cervecita.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
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
Intenta esta tonteria:
Código Delphi [-]
ZSumaInventario.Close;
ZSumaInventario.SQL.Clear;
ZSumaInventario.SQL.Add('update articulos set cantidad = :inv where ref = :cod');
ZSumaInventario.ParamByName('cod').Value := ZTemp.Fields[1].Value;
ZSumaInventario.ParamByName('inv').Value := strtoint(ZInventario.Fields[3].Value) + strtoint(ZTemp.Fields[3].Value);
ZSumaInventario.ExecSQL;
Saludos
Responder Con Cita
  #7  
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, el mismo error.

Saludos.
__________________

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 06:52:51.


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