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 08-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Obtener un nuevo ID antes de cargar sus respectivos datos

Hola foro!!!
A lo mejor con mi titulo no fui muy explicativa y clara, pero no sabia como narrar muy breve mi inconveniente.. Por eso mismo aqui les explico..

UTILIZO:
*delphi 7
*Firebird
*sql manager 2008
*ibdataset, ibquery, ib transaction, ibdatabase, data source (Guardados en un Data Module)
Tengo que dar de alta un profesional con sus respectivos datos y las coberturas con las cuales este mismo trabaja.. A dichas cobertuas las saco de una tabla llamada CEBERTURAS_MEDICAS, a esto lo hago con dos grillas relacionadas, una conectada a la tabla COBERTURAS_MEDICAS y la otra grilla conectada a una tabla llamada COBER_PROF(relacion entre Profesionales y coberturas medicas NaN).. Para realizar esto yo necesito obtener el Id del profesional que etoy cargando para asignarles las coberturas en el proceso del alta.. Se entiende??
Entonces yo quiero saber como hago para que cuando ingreso al formulario para dar el alta, me guarde el ID y luego pueda seguir cargando los datos que faltan y las coberturas medicas, para luego guardar todo junto. (Menos el ID porque supuestamente ya estaria guardado).. Y obviamente esos datos que yo de de alta se asignen al ID guardado y que no se genere uno nuevo..

Espero puedan ayudarme, lo necesito.

Muchas gracias.-
Responder Con Cita
  #2  
Antiguo 08-06-2011
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 Vales.

Si no te entiendo mál, interpreto que querés tener en la mano el ID del médico antes de comenzar a cargar las coberturas ya que después de ingresarlas aún te quedan datos del médico por ingresar.
Si es así, creo que podrías hacer un Append/Post sobre la tabla médicos al iniciar proceso de alta y luego poner la tabla en estado de edición (Edit) para continuar con la carga.
Si tenés campos requeridos, tendrás que asignarles algún valor por defecto (antes del Post), que luego se modificarán en el transcurso del ingreso.
Por otro lado si decidis abortar la operación con Rolback o RollbackRetaining, deshace el Post inicial.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 08-06-2011 a las 23:36:51.
Responder Con Cita
  #3  
Antiguo 08-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Seguro no entiendo bien.
Primero dices que se necesita obtener el ID del profesional, si esta en alguna tabla seria solo hacer una llamada sql a ese campo.
Pero.
Posteriormente dices que se guarde el ID y Luego los datos segun se vallan obteniendo, para eso se necesita hacer, segun entiendo un Update.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 08-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Seguro no entiendo bien.
Primero dices que se necesita obtener el ID del profesional, si esta en alguna tabla seria solo hacer una llamada sql a ese campo.
Pero.
Posteriormente dices que se guarde el ID y Luego los datos segun se vallan obteniendo, para eso se necesita hacer, segun entiendo un Update.
Saludos

Precisamente por esa razon, explique bien despues que es lo que realmente queria.. Yo aclare que el titulo no era muy explicativo..

Muchas gracias por tu aporte..
Responder Con Cita
  #5  
Antiguo 08-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Vales.

Si no te entiendo mál, interpreto que querés tener en la mano el ID del médico antes de comenzar a cargar las coberturas ya que después de ingresarlas aún te quedan datos del médico por ingresar.
Si es así, creo que podrías hacer un Append/Post sobre la tabla médicos al iniciar proceso de alta y luego poner la tabla en estado de edición (Edit) para continuar con la carga.
Si tenés campos requeridos, tendrás que asignarles algún valor por defecto (antes del Post), que luego se modificarán en el transcurso del ingreso.
Por otro lado si decidis abortar la operación con Rolback o RollbackRetaining, el Post que realizaste deshace el Post inicial.

Saludos.

Hola ecfisa!!
Claro, eso es lo que quiero.. vos me habias ayudado con el tema de las grillas, que al seleccionar una cobertura por medio de un boton la pase a la otra grilla.. Yo primeramente guardaba todos los datos de un profesional que daba de alta, co un boton guardar/confirmar y luego a ese profesional le asignaba las coberturas, pero se me hacia muy engorroso porque tengo muchos botones y a la vez al terminar de cargar el profesional luego tengo que cargarle en otro formulario los horaios y demas cosas, entonces se complicaba un poco...
Ahora probare lo que me dijiste y te comento como me fue... Comento que en un momento pense alg parecido pero no sabia bien como hacer..

Gracias y saludos.-
Responder Con Cita
  #6  
Antiguo 08-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No solo el titulo:
Cita:
Empezado por Vales08 Ver Mensaje
.......
...Para realizar esto yo necesito obtener el Id del profesional que etoy cargando para asignarles las coberturas en el proceso del alta.. Se entiende??
........
.....me guarde el ID y luego pueda seguir cargando los datos que faltan .......
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 08-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
No solo el titulo:

Saludos
Es que para asignar las coberturas, traidas de otra tabla, a un profesional que no existe aun, yo necesito obtenerlo primero (que exista), para poder trabajar con la coberturas, es por eso que necesito guardar el id (Antes de cargar todoooo) para obtener el id de ESE profesional y poder trabajar con las coberturas..
Responder Con Cita
  #8  
Antiguo 08-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Eso lo entiendo, lo que no entiendo es, cual es el problema?.
Si haces una llamada a esa tabla por sql te generara el id de ese profesional, si lo quieres mantener activo puedes colocar ese dato en una variable y usarla en donde la necesites.
una vez que tengas ese ID, lo demas es simplemente guardar los datos.
Eso es lo que entiendo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 08-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ecfisa, al append/post lo realizo en el Onshow? (En el tbsheet del alta) xq lo realizo alli pero al poner el post me salta error:

Cita:
Project Project_tesis.exe raised exception class EInvalidOperation with message 'Cannot focus a disabled or invisible window'. Process stopped. Use Step or Run to continue.
Responder Con Cita
  #10  
Antiguo 09-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ya encontre el error tenia algunos campos por defecto Not Null y por eso me saltaba el error, me olvide de tener en cuenta tu ultimo consejo

Cita:
Si tenés campos requeridos, tendrás que asignarles algún valor por defecto (antes del Post), que luego se modificarán en el transcurso del ingreso.
Asi me quedo el codigo hecho en el OnShow del tabsheet Alta..
Código Delphi [-]
DM.DSET_prof.Append;
DM.DSET_profESTADO.Value:=0;
DM.DSET_prof.Post;
DM.Transaccion.CommitRetaining;
DM.DSET_prof.Edit;
ape_nom_prof_a.SetFocus;


Gracias por tu ayuda, me sirvio de mucho!! .-
Responder Con Cita
  #11  
Antiguo 09-06-2011
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 Vales.

Recién entro, me alegra que lo hayas resuelto.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 09-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola Vales.

Llego tarde... pero me alegro que lo hayas resuelto.

Saludos.
Jaja gracias pero me surgio un pequeño problemilla del que no me habia dado cuenta..
Cada vez que paso a la solapa (tabsheet) Modificacion, en la base de datos me da de alta igual el id, y cada vez que cierro el formulario, tanto con la crux de la ventana, como del boton salir, igual me guarda el id.. Y eso no tiene q suseder porque no quiero registros en blancon guardaddos solo con los id..
Me entiendes??
Responder Con Cita
  #13  
Antiguo 09-06-2011
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 Vales.

En ese caso podes utilizar CachedUpdates en las tablas relacionadas para evitar que los datos que guardaste del médico se consoliden si deciden
salir sin almacenar los cambios.

Al guardar, por ejemplo:
Código Delphi [-]
    if MessageDlg('¿Confirma la operación?',mtConfirmation,[mbYes,mbNo],0)= mrYes then
    begin
      DMDatos.tbCoberturas.DataSource:= nil;   (* desconectar Coberturas *)
      DMConect.IBDatabase.ApplyUpdates([tbMedicos,tbCoberturas]);  // Guardar datos en Cache
      DMDatos.tbCoberturas.DataSource:= dsMedicos; (* conectar Coberturas *)
      DMConect.IBTransaction.CommitRetaining;
    end
    else
      DMConect.IBTransaction.RollbackRetaining; // Cancelar
    Close; // Salir
De este modo, los cambios únicamente se guardarán sí las líneas que contienen ApplyUpdates / CommitRetaining se ejecutan.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 09-06-2011 a las 01:29:37.
Responder Con Cita
  #14  
Antiguo 09-06-2011
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ahhh ok, pero igual yo hice un commitretaining en el onshow despues el post y por eso con el RollbackRetaining no hacia nada... Ahora lo saque y me funciona bien...

Espero no tener mas problemitas.. creo q esto fue lo ultimo..
Muchas gracias ecfisa!!
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
Nuevo en el club, nuevo en el trabajo, nuevo en la vida winzo La Taberna 26 29-04-2008 19:13:52
Cargar datos Hugo Penagos Conexión con bases de datos 1 14-12-2007 09:59:43
Crear base de datos y cargar datos desde delphi Albano MySQL 4 17-05-2007 20:01:18
cargar una pantalla antes de la aplicacion noe Gráficos 1 14-04-2005 10:30:56
query que seleccione datos 5 dias antes del vencimiento!! jmedina SQL 2 10-02-2005 23:45:01


La franja horaria es GMT +2. Ahora son las 06:38:24.


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