Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Conexión con bases de datos
Register FAQ Members List Calendar Guía de estilo Today's Posts

Conexión con bases de datos

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 09/09/2004
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
Problema Con Insertsql

Uso FireBird 1.5, IBX 7.08
El problema es parecido al anterior que mencione, ahora me pasa esto, hago un "insert" directo en el SQL-Editor del Ib-Expert pongo codigo :
Código SQL [-]
insert into tfac_facturas
(BODEGA, TIPOMOV, FOLIO, AUTORIZO, AUTORPRE, CLIENTE, CONCEPTO, COTIZADA, CREDCON, DESCTODOC,
DESGLODOC, FECHAFAC, IMPORFAC, IVADOC, ORDENCOMPRA, TASAIVA,VENCE, VENDEDOR, VIGENCIA)
values
(1,'FM',379938, :AUTORIZO, :AUTORPRE, :CLIENTE, :CONCEPTO, :COTIZADA, :CREDCON, ESCTODOC,
ESGLODOC, :FECHAFAC, :IMPORFAC, :IVADOC, :ORDENCOMPRA, :TASAIVA,:VENCE, :VENDEDOR, :VIGENCIA)

Ahora bien, la inserción me la hace Correctamente, hago una consulta para checar si existe y me lo muestra.

Pero, si hago esto en delphi por código usando ibDataset, asignando en la propiedad InsertSQL la misma sentencia, no me Inserta el registro despues de haber puesto:
Code:
Tabla.Open
Tabla.Insert
Que estará pasando????

Hago esto, porque una vez llamado "Tabla.Insert" y después le asigno valores a los campos llaves del Maestro y al quere Guardar con un "Tabla.Post" al Maestro me marca el siguiente error
Code:
lock conflict on no wait transaction deadlock 
update conflicts with concurrent update
Esto le aparece al segundo Usuario cuando tiene en poseción un registro diferente al Primer Usuario.

Last edited by AGAG4 : 09/09/2004 at 21:14. Reason: Corrección
Reply With Quote
  #2  
Old 09/09/2004
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿No hace falta algo como Tabla.Post después de Tabla.Insert?

// Saludos
Reply With Quote
  #3  
Old 09/09/2004
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
ese es todo el código que tenes?

Pues te falta asignar los valores a los campos de la tabla, no te parece:

Código Delphi [-]
  Tabla.Open;
  Tabla.Insert;
  Tabla.FieldByName('bodega').AsInteger := 1;
  Tabla.FieldByName('TipoMov').AsString := 'FM';
  // los demás campos!
  Tabla1.Post;  //<-- si no usas cached updates, 
                //en este momento se lanza la sentencia insert!
  Transacción.Commit;  //<-- y en este momento se confirma la 
                       //transacción, permitiendo su consulta desde otras 
                       //transacciones (dependerá del nivel de aislamiento 
                       //de estas, claro).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Reply With Quote
  #4  
Old 09/09/2004
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
????

Hago esto..., una vez llamado "Tabla.Insert" , después le asigno valores a los "campos llaves del Maestro" y al quere Guardar con un "Tabla.Post" al Maestro me marca el siguiente error
Quote:
Código:
lock conflict on no wait transaction deadlock update conflicts with concurrent update
Esto le aparece al segundo Usuario cuando tiene en posesión un registro diferente al Primer Usuario.

No acepto la Transacción, porque es el principio de la captura de una Factura, como por ejemplo:
Quote:
Abro Captura de facturas, capturo la SERIE, el FOLIO
En el OnExit del EditFolio, busco si se encuentra el Maestro, SI lo encuentra lo muestra SI NO
Inserto un NUEVO registro al Maestro con sus 2 campos llaves que son SERIE y FOLIO, al Insertarlo me doy cuenta en el Ib-Expert que no lo ha grabado todavía hasta que le doy un POST, pero si esta otro usuario dentro de la captura de Facturas con otro FOLIO distinto a este, me marca el Error que mencione arriba.
Ahora si lo hago como dicen de aceptar la TRansacción con Commit ó CommitRetaining, voy a tener este problema:

Quote:
Al aceptar la Transacción voy a guardar el Maestro en la Base de Datos, y si entra otro Usuario va a guardar el siguiente FOLIO, el problema es que si Termina primero el Segundo usuario, va a imprimir el Folio de Factura INCORRECTO-ADELANTADO al que ya viene impreso en la misma FACTURA.
Si me explico????

editado por jachguate para quitar etiquetas code que hacian ilegible el mensaje

Last edited by jachguate : 09/09/2004 at 22:47. Reason: Corrección
Reply With Quote
  #5  
Old 09/09/2004
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Hola. Te recomiendo usar las etiquetas code solamente para publicar trozos de código, y limitar su contenido a una cantidad de columnas que quepan en la pantalla (o que obliguen a un desplazamiento corto si es imposible).

De la forma que has publicado el mensaje es muy dificil de leer.

Por último, me da la impresión que esto es parte de un problema mas grande, y que pretendes que nosotros sepamos y mantengamos en mente todos el contexto de tus problemas. Mi mensaje anterior sugiere el uso de commit, dado que desconozco que se trate de una transacción mas grande. Basta que me ignores si ya sabes que es asi.

Por último, el problema que tenes, tiene que ver con concurrencia de las operaciones, dado que dos usuarios están tratando de modificar el mismo registro (o un usuario está tratando de modificarlo desde dos transacciones diferentes), y no como lo publicaste originalmente.

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Reply With Quote
  #6  
Old 10/09/2004
AGAG4's Avatar
AGAG4 AGAG4 is offline
Miembro
 
Join Date: Aug 2004
Location: Los Mochis, Sinaloa, México
Posts: 1,420
Poder: 24
AGAG4 Va por buen camino
Post ????

Gracias por su respuesta, pero la verdad no es como usted lo piensa, es sólo que planteo mis problemas como actualmente los tengo, y no tengo 1 usuario con 2 transacciones, y sobre la concurrencia, ya lo revise bien y tampoco, me hace pensar y creo que estoy en lo cierto de que antes de publicar un problema, debo de plantearlos mucho mejor como actualmente los envio, Que tenga buen día.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 00:09.


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