![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#14
|
|||
|
|||
|
Hey....!!!!!!!
Esto es lo que yo hago.....y me funcion perfecto. Si es para el autoincremental. Bien ahi va: Creo mi Generator, nombrarlo Mi_Generador. Creo un Procedure Almacenado que se nombrará MI_Procedure_Generador Este es su código Create procedure MI_Procedure_Generador returns (NUEVO integer) As Begin NUEVO = GEN_ID(MI_Procedure_Generador,1); SUSPEND END Y claro, tengo una tabla que le nombraremos MI_TABLA con un campo de llame primerria que le nombraremos MI_CODIGO Voy bien? En Delphi ahora: Tengo un IBTable con sus campos creados. Les creo todos sus TFields pero atención!!!!!!!, al Field del Código (MI_TABLAMI_CODIGO) cambiale la propieda required y colocala en False. Creas un TIBStoredProc que apunte a el Procedimiento de Interbase o FireBird. A este TIBStoredProc ponle asociado otro TIBTransaction que al de la Tabla. Además, sácale su Parametro a través de la propiedad Params Debe decirte que es de tipo OutPut y que ademas es Integer Ahora en el evento OnBeforePost de la Tabla, al final, despues que has visto todos los chequeos que puedan hacer explotar la grabación, esccribe esto: if MI_TABLA.State in [dsInsert] then Begin Aqui pones la Transaccion del Procedimiento en StartTransaction; Le das Prepare; desues ExecProc; Le das Commit a la Transaccion y ahora dices : MI_TABLAMI_CODIGO.Value = ParamByName('NUEVO').AsInteger; End; // del begin Espero que sirva, esto lo uso mucho y pone casi la probabilidad que se ejecute el Generador y no se grabe a 0, ay que como ven es hecho en el OnBeforePost pero justo antes de darle el mando a Interbase. Si amarraste todo bien, viva el consecutivo!!!!!!!!!!!!!!!!!!! espero que sirva de ayuda. Fernando Buitrago Nota: Tengo los dedos cansaos', jejejejejej |
|
|
|