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
  #1  
Antiguo 09-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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:
Código:
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
Código:
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.

Última edición por AGAG4 fecha: 09-09-2004 a las 21:14:48. Razón: Corrección
Responder Con Cita
  #2  
Antiguo 09-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: 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
Responder Con Cita
  #3  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
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
Responder Con Cita
  #4  
Antiguo 09-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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
Cita:
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:
Cita:
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:

Cita:
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

Última edición por jachguate fecha: 09-09-2004 a las 22:47:15. Razón: Corrección
Responder Con Cita
  #5  
Antiguo 09-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
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
Responder Con Cita
  #6  
Antiguo 10-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
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.
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


La franja horaria es GMT +2. Ahora son las 16:48:55.


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