![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
![]() Buenas tardes amigos.
Trabajo con: Delphi6, FireBird 2.5, Win7, Componentes IBX. Explico: Estoy intentando abrir un formulario (frmCatalogo) desde otro, donde registro un catálogo de las localidades que han asistido en comisión a realizar alguna actividad (frmLugaresComision). Este es llamado desde el menú principal y puedo realizar los clásicos movimientos de alta, baja, cambios, etc. sin ningun problema y luego tengo otro formulario (frmRequisicion) donde estoy registrando los datos de empleados que realizaran alguna requisición/comisión, entonces en este formulario, llamo al formulario del catálogo, pero este al abrirlo me cierra el DataSet del formulario de Requisiciones, lo anterior es porq en el formulario del catálogo tengo lo siguiente:
Ya comprobé que sí quito la transacción del catálogo frmLugaresComision, el DataSet que esta en Requisiciones no se cierra, entiendo que esto pasa por el tema de transacciones, que tanto en Requisiciones como en el Catálogo, inicio una transacción, entonces estoy iniciando 2 a la vez (solo cuando abro el formulario de Catálogo desde el formulario de requisiciones), mientras no de click sobre el botón que abre el formulario del catalogo, no pasa nada, todo bien, se graban los datos.....entonces: ¿Que opciones existen para evitar que el DataSet del formulario frmRequisicion se cierre? ¿Que cambio debo de hacer en el formulario frmLugaresComision o en frmRequisicion? Espero haberme explicado, en espera de sus comentarios....me estaré hechando un tequila ![]()
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 13-07-2018 a las 21:49:03. |
#2
|
||||
|
||||
¿Para qué inicias ahí una transaction?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Te refieres a iniciarla en el evento OnShow?
y adelantándome un poco....donde crees que quedaría mejor?
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#4
|
|||
|
|||
Veo que estas combinando dos conceptos diferentes.
El Show o Create de la 2da forma NO tiene actividad de base de datos por el hecho de mostrarse, por consecuencia el StartTransacction no tiene sentido ahi , tendría sentido en algún botón que de inicio a alguna actividad con la Base de Datos. El StartTransacction es una habilidad de la base de datos que te permite hacer recuperación de actualizaciones de datos que estén anidadas o dependientes de otras mas, es decir poder hacer un ROLLBACK o deshacer cambios aplicados por condiciones no concretadas.. . Si tu duda es como asegurar los datos últimos, busca hacer Commit Transaction para asegurar la ultima escritura o actualización que tenga pendiente el manejador de base de datos. Saludos. |
#5
|
||||
|
||||
Cita:
La idea es facilitarle al usuario el ir al menú para seleccionar la pantalla de catálogos...me gustaría que desde el formulario de Requisición la abra directamente al dar click sobre un botón. Alex, la pantalla de catálogo de lugares la construí pensando en que el usuario selecciona la opción desde el menú principal, entra y graba los lugares de comisión a los que a ido o irá, para luego ser seleccionados en la pantalla de requisiciones....de esta manera trabaja bien. El problema se me presentó al mandar llamar el catálogo desde el formulario de requisición. En fin se puede resolver no abriéndolo desde requisiciones. CASIMIRO, en cuanto a que no es necesario las transacciones y de como están configuradas, te puedo comentar que en otros hilos donde tenia problemas acerca de registro de datos en un ambiente cliente-servidor (el cual es el caso en este momento), se debía a que no usaba el manejo de transacciones, dándome el problema de que los demás usuarios no veían los datos registrados...hasta que el otro usuario se salia del sistema. Esto se resolvio con el uso Startransaction y CommitRetainig/commit y desde entonces desarrollo de esta manera...sin no uso las transacciones tendré estos problemas....o como le haces tu?. Pues la idea amigos, es: QUE DESDE EL FORMULARIO DE REQUISICIONES ABRA, DANDO CLICK EN UN BOTÓN, EL FORMULARIO DE CATÁLOGOS PARA QUE AGREGUE MAS LUGARES, SI NO ESTÁN REGISTRADOS. (no interpreten mal las mayúsculas por fa, no estoy "gritando" ![]() La otra opción es, no mandarlo llamar jajajaja ![]() Saludos y gracias por sus comentarios.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 13-07-2018 a las 23:58:08. |
#6
|
||||
|
||||
Otra opcion valida y quedó resuelto
Que tal, pues analizando las opciones que les plantee de "...que no se mande llamar del formulario de requisiciones, el formulario de catálogos...", pues les comento que la opción (abrir pantalla de catalogos) la quite del menú principal...y mejor opté por llamarlo desde el formulario de requisiciones....y bajo el concepto de transacciones (Gracias al Alex Mireles por sus comentarios) me di cuenta que podía almacenar todo lo q estaba pendiente de ser grabado usando 1 sola transacción, grabando en las base de datos, los lugares nuevos q el usuario haya dado de alta -en caso de que lo haya hecho- junto con los datos de la requisicion, al dar commit, se registraron todos los datos que estaban pendientes....
Por lo tanto el problema no fue de programación, si no -yo creo- de conceptos de diseño y como "acomodar" las virtudes de las trasacciones al grabar los datos. Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#7
|
||||
|
||||
Sí
En ningún sitio, en principio no hace falta. No sé cómo tienes configurado los componentes IBX (IBDatabase e IBTransaction), pero si usas uno para el programa, y están configurados correctamente, NO necesitas estar controlando transacciones porque el propio componente ya lo hace.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TEdit, evitar copiar y pegar violación en memoria al cerrar formulario | novato_erick | OOP | 9 | 12-08-2012 19:19:20 |
¿Cómo evitar que al cerrar el formulario principal se cierren los demás? | Master23 | Varios | 5 | 06-06-2010 13:14:46 |
Evitar cerrar formulario principal si hay librerías cargadas dinámicamente | ContraVeneno | Varios | 5 | 03-07-2008 16:21:14 |
formulario abrir, cerrar | arespremium | OOP | 3 | 14-08-2007 09:06:21 |
Evitar cerrar un formulario desde un componente | genius | Varios | 1 | 23-11-2006 15:55:42 |
![]() |
|