![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola,
si el valor del código se va "armar" en el cliente, yo recastaría el valor del generador con una consulta:
así evito tener que crear un procedimiento en el servidor. Si no se quiere hacer la conversión de tipos en el cliente, aplicar los CAST correspondientes en la consulta. Saludos. Última edición por kinobi fecha: 29-05-2005 a las 12:47:41. |
|
#2
|
|||
|
|||
|
Hola nuevamente.
Lo que pasa es q como deberia hacerlo. Que Componente IBX debo colocar en mi formulario para poder hacer esta consulta, me lo podrias indicar y como hacerlo. Soy Nuevo en esto y todavia no pillo el truco de los Trigger y SP. Gracias |
|
#3
|
||||
|
||||
|
Hola,
Cita:
Cita:
Cita:
Saludos. |
|
#4
|
|||
|
|||
|
hola Hector ,es Julio ramos mi problema es el siguiente muy paresido al de JoanKa:Tengo las siguiente tablas:
CREATE TABLE tblfacturas ( COD_factura long NOT NULL, NOMB_CLI VARCHAR(30), );CREATE TABLE tbltiene ( COD_factura long NOT NULL, /* este campo esta referenciado al campo clave de tblfacturas*/ cod_articulo VARCHAR(10) NOT NULL/* este campo esta referenciado al campo clave de tblarticulo*/ ); CREATE TABLE tblarticulo ( cod_articulo VARCHAR(10) NOT NULL, nomb_articulo VARCHAR(50) NOT NULL ); asi como este Procedimiento almacenado CREATE PROCEDURE INSERTAR_factura ( COD_factura VARCHAR(10), NOM_cli VARCHAR(30), AS begin INSERT INTO tblfacturas (CODI_factura, NOMB_CLI, ) values (:COD_factura, :NOM_cli); end tengo este trigger CREATE GENERATOR CODI_GENER; SET GENERATOR CODI_GENER TO 0; CREATE TRIGGER INSERTAR_CODI FOR CLIENTE ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.cod_factura is null) then new.cod_factura=gen_id(codi_gener,1);/*este numero hay manera de sacarlo al momento de ser generado por alguna consulta,porcedimeinto desde delphi,el manejador*/ end como puedes ver necesito el numero que genera el trigger al momento de insertar el tabla factura para colocarlo en tabla tbltiene en el campo cod_factura este procedure lo puede hacer la cosa es que si el sistema esta en red me entiendes varias aplicaciones conectadas a la misma base de datos (cliente servidor).Porque un cliente "a" ejecuta el procedimiento insertar_factura y otro cliente "b" tambien ejecuta el procedimiento insertar_factura entoces caimos en esto que el cliente "b" ejecuta primero el procedimiento que retorna el numero generado por ejemplo el procedimeinto tu yo (CREATE PROCEDURE GET_NEXT_CODI_CLIE), al momento de seleccionar el valor selecciona la correcta o selecciona el ultimo numero generado y no es la correcta por primero el cliente "a" solicito el procedimiento insertar_factura. CREATE PROCEDURE GET_NEXT_CODI_CLIE RETURNS (NUEVO_CODI_CLIE long) AS BEGIN /*Obtienes el valor actual del generador sin incrementarlo*/ /*Observa el incremento en cero en la función gen_id*/ NUEVO_CODI_CLIE=CAST(gen_id(codi_gener,0)+1 AS VARCHAR(7)); SUSPEND; END espero que me puedas ayudar.... |
|
#5
|
||||
|
||||
|
Hola nuevamente!
Cita:
Conectar Trigger con Delphi: http://www.clubdelphi.com/foros/show...2152#post82152 Cita:
Espero que sea útil y seguimos en contacto. |
|
#6
|
|||
|
|||
|
Vamos a ver.
Yo lo resolvi este problema de la Siguiente Manera 1° Tenia que crear un SP donde obtendria el codigo siguiente a grabar, es decir, CREATE PROCEDURE CODIGO_SIGUIENTE RETURNS ( NUEVO_CODI_CLIE VARCHAR(10)) AS begin NUEVO_CODI_CLIE='CLI' || CAST(gen_id(codi_gener,0)+1 AS VARCHAR(7)); suspend; end 2. En delphi agrege Un IBQuery y Un DataSource 3. En la propiedad SQL del IBQUERY escribi : Select * from CODIGO_SIGUIENTE 4. En la Propiedad DATASET del DATASOURCE coloque IBQuery1 5. Ahora en el Objeto TBEDIT en su propiedad DATASOURCE escribi DATASOURCE1 6. y por ultimo en el Objeto TBEDIT en su propiedad DATAFIELD coloque: NUEVO_CODI_CLIE (que es el valor que retorna el SP). Espero que te sirva. Es obvio que para esto tienes que tener : IBDATABASE, IBTRANSACTION, y ver que haya conexion con Firebir SALudos a TOdos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|