Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 21
darkbits Va por buen camino
Instale Firebird-2.5.2.26539_0_Win32.exe al servidor y a los 5 CLientes tb Firebird-2.5.2.26539_0_Win32.exe
la version versión superserver

y el problema sigue entonces NO es Firebird
parece ser que mi codigo fuente esta el problema por favor si alguien puede darme una mano como realizar UPDATE en Delphi para firebird estoy realizando asi:
Código SQL [-]
    _DM.consulta1.SQL.Text:= 'select * From inalmacen Where id_inal='+idprod.text;
    _DM.consulta1.Open;
    _DM.consulta2.SQL.Text:= 'update INALMACEN set cantidad_inal=:auxcantidad_inal Where id_inal='+ idprod.text;
    _DM.consulta2.ParamByName('auxcantidad_inal').Value:=inttostr(strtoint(_DM.consulta1.FieldByName('ca  ntidad_inal').Value) - strtoint(cantidad.Text)) ;
    _DM.consulta2.ExecSQL;
    _DM.consulta2.Close;
    _DM.consulta1.Close;
    _DM.talmacen.Active:=false; // false y true lo realizo para  actualizar no se si hay otra mejor forma.
    _DM.talmacen.Close;
    _DM.talmacen.Active:=true;
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #2  
Antiguo 17-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Si hay algo que he aprendido de firebird es que se molesta cuando las cantidades estan en texto.
Te aconsejo que pongas las cantidades en variables float o integer.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 21
darkbits Va por buen camino
todo marcha bien

me da error cuando le toca esta linea

_DM.consulta2.ExecSQL;




Código SQL [-]
  _DM.consulta1.SQL.Text:= 'select * From inalmacen Where id_inal='+idprod.text;
    _DM.consulta1.Open;
    _DM.consulta2.SQL.Text:= 'update INALMACEN set cantidad_inal=:auxcantidad_inal Where id_inal='+ idprod.text;
    _DM.consulta2.ParamByName('auxcantidad_inal').Value:=inttostr(strtoint(_DM.consulta1.FieldByName('ca  ntidad_inal').Value) - strtoint(cantidad.Text)) ;
    _DM.consulta2.ExecSQL;
    _DM.consulta2.Close;
    _DM.consulta1.Close;
    _DM.talmacen.Active:=false; // false y true lo realizo para  actualizar no se si hay otra mejor forma.
    _DM.talmacen.Close;
    _DM.talmacen.Active:=true;
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #4  
Antiguo 17-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Si toca esa linea es entonces la anterior.
Como dije antes.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 17-12-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Es que sin saber lo que son esas variables, lo que estás haciendo, ni el contexto de tu código... es difícil ayudarte. A ver...
¿id_inal es texto o número?, acláralo
¿auxcantidad_inal es texto o número?, acláralo

Suponiendo que ambos son números (como debe ser) y haciendo las cosas paso a paso:

Código Delphi [-]
var
  fCantidad : double;
  iAlmacen : integer;
begin
  iAlmacen := strtoint(idprod.text);
  
  _DM.consulta1.Close;  // tienes que cerrarlo antes de cambiarle la sentencia que contiene
  _DM.consulta1.SQL.Text:= 'select * From inalmacen Where id_inal='+iAlmacen;
  _DM.consulta1.Open;
    
  fCantidad := _DM.consulta1.FieldByName('cantidad_inal').Value - strtoFloat(cantidad.Text));
  _DM.consulta1.Close;  // lo cerramos en cuanto ya no hace falta

  _DM.consulta2.Close;  // usamos los 2 parámetros ¿por qué sólo 1 y el otro no?
  _DM.consulta2.SQL.Text:= 'update INALMACEN set cantidad_inal=:auxcantidad_inal where id_inal= :auxid_inal';
  _DM.consulta2.ParamByName('auxcantidad_inal').Value := fCantidad;
  _DM.consulta2.ParamByName('auxid_inal').Value := iAlmacen;
  _DM.consulta2.ExecSQL;  // No has dicho qué componentes usas, así que supongo que los IBX
  _DM.consulta2.Transaction.commitretaining;  // Ni idea de las transacciones porque tampoco has contestado a lo que pregunté antes
  _DM.consulta2.Close;
end;
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
update, insert, delete fibplus, ayuda!!! montesoft SQL 19 11-12-2012 00:53:55
Insertar sentencia SQL despues de Insert,update o delete vivamotos Firebird e Interbase 10 02-08-2011 18:24:30
Mismatch DataPacket al realizar insert, delete o update Rockin Firebird e Interbase 0 07-04-2008 19:47:56
Trigger Before (Insert,update,delete)? estebanx MS SQL Server 2 25-05-2006 15:58:19
Como crear una sentencia SQL (Insert, update y delete) sitrico Conexión con bases de datos 1 14-10-2004 00:02:42


La franja horaria es GMT +2. Ahora son las 03:05:36.


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