Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Sólo un Paso para Dejar Registros Estáticos en el uso del IBDataset. (https://www.clubdelphi.com/foros/showthread.php?t=35515)

AGAG4 13-09-2006 01:06:37

Sólo un Paso para Dejar Registros Estáticos en el uso del IBDataset.
 
Uso Firebird 1.53, IBX 6.08, D6

Buen día, hace algunos meses agregue un hilo sobre como dejar estático 1 Registro al insertarlo entre otros registros, Sobre una Captura Maestro Detalle, la Llave Primaria(PK) de la tabla son 3 campos, señalo la estructura de la Tabla DETALLE:
TIPOMOV VarChar(2)
FOLIO Integer
Indice Float

Hasta aqui vamos bien, pongo un ejemplo de los Primeros Registros que se Insertan:
Código:

TIPOMOV    FOLIO    INDICE
 XX              1          1.0
 XX              1          2.0
 XX              1          3.0
 XX              1          4.0

Ahora, en el BeforePost del Dataset, Determino el Indice que le corresponda al Registro, en este caso si quiero insertar entre el Registro 2 y 3, el indice que tomaría el Nuevo Registro sería 2.5 y quedaría asi:
Código:

TIPOMOV    FOLIO    INDICE
 XX              1          1.0
 XX              1          2.0
 XX              1          2.5
 XX              1          3.0
 XX              1          4.0

Hasta aqui vamos bien, el único problema es que al Cambiarme de Registro, el Registro NUEVO se va al FINAL :eek: :
Código:

TIPOMOV    FOLIO    INDICE
  XX              1          1.0
  XX              1          2.0
  XX              1          3.0
  XX              1          4.0
  XX              1          2.5

Ya le agregue el ORDER BY en el SELECTSQL Y EN EL REFRESHSQL, inclusive en el evento AfterPost le agregue Dataset.Refresh, pero no funciona, el Registro se va al final, si guardo los cambios y al abrir el Maestro-Detalle, reviso el detalle, Aparece con el Orden Correcto:
Código:

TIPOMOV    FOLIO    INDICE
  XX              1          1.0
  XX              1          2.0
  XX              1          2.5
  XX              1          3.0
  XX              1          4.0

Pero si empiezo a insertar el dbGrid Muestra los Registros Nuevos al Final, es decir, el Propio dataset los manda al final porque el dbGrid solo es Intermediario para mostrar datos.
Porque que Rayos esta pasando esto, si uso el INSERT para no Insertar al FINAL y le AGREGO un valor CORRECTO al campo INDICE de la llave primaria ???? :eek:
Que me faltará hacer????

Espero haberme explicado.

PD. Los Ejemplos que pongo al Editar el Hilo los VEO ACOMODADOS CORRECTAMENTE pero al Guardar el Hilo se desacomodan, espero entiendan a como sale el HILO :)

Agradezco cualquier sugerencia al respecto.

Edgar Perez 13-09-2006 01:36:04

Intenta la sig.
 
Intenta asignar el indice en el evento BeforeInsert.

AGAG4 13-09-2006 01:58:32

????
 
Probaremos....

AGAG4 13-09-2006 18:28:34

No me funciono dentro del BeforeInsert, inclusive cuando toma el valor del campo INDICE en dicho evento al Presionar cualquier tecla para Escribir se borra el valor del indice y no Inicializo el Campo por Ninguna parte, en cambio si tomo el Valor del Campo INDICE en el AfterInsert aqui no se desaparece dicho valor, pero toma el mismo comportamiento que en el BeforePost, todavía me sigue mandando el Maldito Registro al Final, voy a probar con otros componentes como fibPlus, MDO espero me funcionen.

AGAG4 13-09-2006 19:17:12

No lo puedo creer, con el Dataset de los fibPlus Ver. 6.45.0 Release, si funciona:eek:, me deja el registro ESTÁTICO, Alguien ya implemento esta característica de Registro Estático para los IBX ???? si no, pues voy a perder más tiempo en cambiarme a los fibPlus, aunque sean primos hermanos, lo malo que no son libres, voy a probar con los MDO.

AGAG4 13-09-2006 20:47:35

Ya Probe los MDO y se comportan igual a los IBX', tenían que ser hermanos, casi gemelos, sigo probando....

AGAG4 14-09-2006 16:34:09

Solución
 
Para mi mala Suerte :mad: voy a tener que cambiar a fibPLUS, digo mala suerte porque ya llevo el proyecto muy avanzado para regresarme hacía atras y empezar a cambiar de componentes, no va hacer muy tardado pero es perdida de tiempo, pero para Mi Buena Suerte ;), la ventaja de los fibPLUS es que le estan dando soporte a las versiones nuevas de Firebird....


La franja horaria es GMT +2. Ahora son las 15:39:23.

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