Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 24
JXJ Va por buen camino
ok. muchas gracias.

parece que el unico componente que soporta

RETURNING es el IBDAC
de devart

IBDAC
http://www.crlab.com/ibdac/
InterBase Data Access Components. Comercial, actively developed. Provides extensive functionality and support for new Firebird 2 features like the EXECUTE STATEMENT and the RETURNING clause. A trial version is available for download.

http://www.firebirdfaq.org/faq8/

¿ahora bien. mi metodo esta bien. o puede ser mejorado?

por que lo que escribio

Antoniov

no le entendi.

para lo de hacer claves unicas. o compuestas.

que entiendo seria casi lo mismo pero de forma distinta.

de que hago el insert y luego al db hago un query se
de select

la serie , el folio. el rfcdel emisor, del cliente.
y capturo la respuesta.

como se que los datos son unicos. por la serie y el folio.
y el rfcdelemisor y del receptor. yo confio en que sera la factura que
recien estoy ingresando.

muchas gracias por su atencion.
Responder Con Cita
  #2  
Antiguo 03-09-2011
Avatar de ariefez
ariefez ariefez is offline
Miembro
 
Registrado: sep 2005
Ubicación: Perú - Lima
Posts: 63
Poder: 22
ariefez Va por buen camino
FIBPlus también lo soporta en su tiempo me acuerdo haberlo implementado, pero, luego use generadores, como comentan lineas arriba.

Implementación: mediante un procedimiento obtener el valor del generador en el evento OnBeforePost y luego trabajar con dicho valor según lo requerido, cabe recalcar que uso ClientDataSet en la capa de Entidad y bueno en la Logica uso solo referencias.

El procedimiento para obtener el valor del generador es:

Código SQL [-]
create or alter procedure Proc_Get_Sequence (
    P_SEQ_NAME d_sys_field_name )
returns (
    ID integer )
as
begin
    execute statement
        'select next value for ' || :P_SEQ_NAME || ' from rdb$database'
    into :ID;

    suspend;
end;

O de forma general:

Código SQL [-]
create or alter procedure Proc_Get_Sequence (
    P_TABLE  type of d_sys_relation_name )
returns (
    ID integer )
as
    declare variable vField d_sys_field_name;
begin
    P_TABLE = upper(P_TABLE);

    select rdb$field_name from rdb$relation_fields
        where
            rdb$relation_name = :P_TABLE and
            rdb$field_id = 0
    into :vField;

    if (vField is not null) then
    begin

        vField = 'S_' || vField;

        if ( exists (
                select rdb$generator_name from rdb$generators
                    where rdb$generator_name = :vField ) ) then

            execute statement
                'select next value for ' || :vField || ' from rdb$database'
            into :ID;

    end

    if (ID is null) then
        ID = 0;

    suspend;
end;

Donde:
P_TABLE: Es es nombre de la tabla
d_sys_relation_name: dominio tipo varchar(31)
d_sys_field_name: dominio tipo varchar(31)

El nombre del generador como se puede observar es "S_" || "El nombre del campo", en mi caso siempre es el que se define primero en la tabla (rdb$field_id = 0).

Bueno y otro requerimiento es que exista el generador, sino el procedimiento devolverá cero.

Uso Firebird 2.5, pero creo que también esta disponible para la versión 2.1
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Duplica registro en ClientDataSet maestro-detalle Josepo Conexión con bases de datos 8 07-05-2013 10:59:09
Maestro detalle con firebird e IBExpress edenis Conexión con bases de datos 1 13-10-2006 18:09:08
Maestro detalle solo muestra un registro jandres Varios 2 10-06-2006 12:11:49
InserciÓn De Registro Con Maestro-detalle perillan Conexión con bases de datos 5 23-10-2005 11:15:23
Cancelar un registro en maestro/detalle... uper Firebird e Interbase 1 15-09-2004 17:56:40


La franja horaria es GMT +2. Ahora son las 06:53:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi