Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

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: 19
darkbits Va por buen camino
Problemas de UPDATE con firebird

Instale firebird 2.5 en un pc windows XP
y la aplicacion lo realizo en Delphi XE un sistema de productos

La base de datos esta configurara asi
DatabaseName:=192.168.0.70:\Yupana 2013\Win32\Debug\STORE.GDB


funciona perfectamente cuando 1 sola PC esta utilizando los productos
mi problema es la cuando una 2 o 3ra. .... 5ta PC utiliza el mismo producto
ejemplo. la PC 1 realiza la venta de un MOUSE y descuenta del almacen la cantidad
la PC2 puede vender cualquier otro producto que no sea MOUSE ,
el problema es cuando quieren vender el mismo producto al mismo tiempo.
me sale "deadlock update conflicts with concurrent update concurrent transaction number is 1125"

esto es problema del Firebird?
o es del codigo

posteo lo que esta haciendo el codigo en esta parte
Código Delphi [-]
   /// VAMOS A DESCONTAR EL ALMACEN
  if agregar.Caption='&Modificar' then
     begin
         agregar.Caption:='&Agrega';
         cancelar1.Enabled:= true;
     end;
    _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;
    _DM.talmacen.Close;
    _DM.talmacen.Active:=true;


end;

recalco que cuando una sola PC, funciona de PELO mi problem es cuando varias PC quieren vender el mismo producto y tienen que desconectar de almacen.

tengo esta misma aplicacion con MYSQL y NO tengo problema alguno. funciona en red o como local.

pero necesito en FIREBIRD:
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #2  
Antiguo 17-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por darkbits Ver Mensaje
esto es problema del Firebird?
o es del codigo
El problema es tuyo, con tu código

Veamos, dices que usas la versión 2.5 y, aunque aquí no lo digas, creo haber leido que ¿usas la versión "embebida"?
Responder Con Cita
  #3  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
en la PC principal windows XP lo instale Firebird-2.5.2.26539_0_Win32.exe

y en las demas PC2 ...PC5 tambien XP coloco Firebird-2.5.2.26539-0_Win32_embed dentro de esa carpeta esta el .exe


cual es mi problema en el codigo ? que no me doy cuenta y posible solucion?

gracias
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #4  
Antiguo 17-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces es la versión "embebida". Ese es el problema. Que esa versión es monousuario.

Si el servidor es windows, entonces instala la versión superserver o superclassic (pero no la classicserver), en todos los equipos.
Responder Con Cita
  #5  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
Gracias Casimiro No entendi esta parte de instalacion porque yo me descargue de la web oficial
y lo instale en WINDOWS XP como Superserver

y en las demas PC NO instale NADA solo descargue la version "embebida" de la misma version y los meti el ejecutable dentro
de que conectan conectan

por favor como seria la forma correcta de instalar
en el winXP como servidor y en las demas PC2....PC5 ?

tengo que instalar el mismo instalador a cada PC ? como superserver


yo utilice Firebird con la idea de no instalar y utilizar "Embebida"

agradesco tu respuesta
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #6  
Antiguo 17-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, si has instalado la superserver en el servidor, está bien. En los demás PCs instala la "versión cliente" de esa misma versión. Y si no quieres complicarte mucho, instálalo completo, igualmente, como si fuese el servidor.

Para el resto de preguntas, haría falta saber qué componentes de conexión estás usando, los parámetros de las transacciones, etc.
Responder Con Cita
  #7  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
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
  #8  
Antiguo 17-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
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
  #9  
Antiguo 17-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
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
  #10  
Antiguo 17-12-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si toca esa linea es entonces la anterior.
Como dije antes.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 17-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi 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
  #12  
Antiguo 19-12-2012
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, si has instalado la superserver en el servidor, está bien. En los demás PCs instala la "versión cliente" de esa misma versión. Y si no quieres complicarte mucho, instálalo completo, igualmente, como si fuese el servidor.

Para el resto de preguntas, haría falta saber qué componentes de conexión estás usando, los parámetros de las transacciones, etc.
Junto con el ejecutable de los clientes debes tener la gds32.dll o fbclient.dll para atacar al server.

Saludos
Responder Con Cita
  #13  
Antiguo 19-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
ejemplo de insert, drop, delete, update firebir + delphi

un saludo al club

estoy trabajando con firebird 2.5 en XE 2
en una PC XP

busque en los depositos del club y no encuentro algo espesifico. encontre para access, Mysql pero para firebird no encontre lo que busco.

y quiero pedir un favor si pueden facilitare algun ejemplo de firebir con dephi component IBX no importa si el ejemplo es super sencillo es lo que quiero para entender
que contengan ejemplos insert, drop, delete, update, y que este pueda funcionar en red

quiero tener idea como se hace esto porque supongo que no es hacer una aplicacion monousuario q para en red. yo tengo mi aplicacion como monousuario fucniona super en red me da problemas cuando realizo insert o udate.
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #14  
Antiguo 19-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola darkbits.

En este enlace, (Delphi, conexión a firebird con componentes IBX), se explica paso a paso desde la conexión con Firebird hasta las acciónes que consultas para los componentes TIBQuery y TIBDataSet.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #15  
Antiguo 19-12-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
También hay que comentar que las acciones que pides (INSERT, DROP, DELETE, UPDATE,...) entiendo que son sentencias SQL, por lo tanto no dependen (casi nada) de los componentes que utilices y de la Base de Datos.

Si revisas ejemplos de SQL (aunque no sean IBX+FB) deberían servirte para saber cómo se utilizan.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #16  
Antiguo 19-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
yo utilizo (INSERT, DROP, DELETE, UPDATE,...) para MYSQL en win XP como monousuario en red me funciona de maravilla

pero cuando utilizo en firebird 2.5 win Windows XP como monousuario tambien funciona de maravilla
cuando lo coloco en RED ahi se me cuelga cuando realizo la misma accion en 2 PC

estoy utilizando (INSERT, DROP, DELETE, UPDATE,...) para firebird
vi lo que me recomienda ecfisa y si voy a ese paso y realizo como dice el manual.

pero please necesito ejemplos firebir don Delphi si conocen algun LINK
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #17  
Antiguo 19-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No dijiste que usabas la versión de firebird "embebida"?, esa es monousuario.
Responder Con Cita
  #18  
Antiguo 19-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
en el servidor XP eh utilizado firebird Instalacion completa
en las demas PC XP utilice firebird "embebida" pero me recomendaron utilizar Instalacion Completa como el servidor
y sigo con el problema

llego a la conclusion q mi problema esta en mi codigo
__________________
Gracias por su coloración club delphi

darkbits ;)
Responder Con Cita
  #19  
Antiguo 19-12-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por darkbits Ver Mensaje
...pero cuando utilizo en firebird 2.5 win Windows XP como monousuario tambien funciona de maravilla
cuando lo coloco en RED ahi se me cuelga cuando realizo la misma accion en 2 PC
¿Puedes explicar un poco con más detalle, qué significa "se me cuelga"?
Sin tener en cuenta otros datos, eso parece tema de transacciones y bloqueos, pero das pocos datos del problema.
¿Puedes describirlo mejor y poner algo de código?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #20  
Antiguo 19-12-2012
Avatar de darkbits
darkbits darkbits is offline
Miembro
 
Registrado: may 2006
Posts: 280
Poder: 19
darkbits Va por buen camino
Gracias Neftali por tu interes

tengo una aplicacion de venta de productos de PC

cuando realizo la venta de un producto en red de cualquier punto funciona OK
el problema es cuando realizo la venta del mismo producto en mas de 2 diferentes puntos las PC se quedan sin funcionar el sistema ( colgado del sistema) hasta presionar ctrl + alt+ sup y reiniciar y si vendo otro producto q no sea el mismo si funciona.

llege a la conclusion el sistema solo funciona para solo en 1 PC y no me funciona en red para varias PC

No puedo realizar la misma accion en mas de 2 o mas PC

ese es mi problem todos estan con firebird instalacion como servidor en windows XP y esta programado en XE2 con IBX

por ello busco ejemplos de programitas pequeños de (INSERT, DROP, DELETE, UPDATE,...) para ver como se hace y corregir.

Lo raro es que utilizo el mismo con db MYSQL y funciona de maravilla en una PC o en 3 o mas PC


este es el codigo donde se bloquea el sistema:


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; // ejecuo la consulta y  AQUI ES EL PROBLEMA SE QUEDA EN STOP CUANDO HAY MAS DE 2 PC
    _DM.consulta2.Close;

DATA Module dond esta la DB= _DM


gracias.
__________________
Gracias por su coloración club delphi

darkbits ;)

Última edición por darkbits fecha: 19-12-2012 a las 16:11:35.
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
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 23:43:56.


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