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 09-01-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Falta información por tu parte, ¿cómo aumentas el generador?, trigger, store procedure, desde delphi...
Responder Con Cita
  #2  
Antiguo 09-01-2011
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 21
JAI_ME Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Falta información por tu parte, ¿cómo aumentas el generador?, trigger, store procedure, desde delphi...
gracias casimiro, todo lo hago desde delphi.
__________________
JaiMelendez
Responder Con Cita
  #3  
Antiguo 09-01-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Hola.

Para conocer el valor actual de un generador, puedes usar la función gen_id con un incremento de 0.

Ejplo.

select gen_id(gen_clientes, 0) from rdb$database

NOTA: Utilizo rdb$database porqué sé que un select de esa tabla siempre va a devolver un único registro.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 09-01-2011
JAI_ME JAI_ME is offline
Miembro
 
Registrado: ene 2006
Posts: 188
Poder: 21
JAI_ME Va por buen camino
gracias guillotemarc enseguida lo pruebo.
__________________
JaiMelendez
Responder Con Cita
  #5  
Antiguo 09-01-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Al estar relacionadas entiendo que por cada registro en la Tabla A puede haber x en la Tabla B, en este caso podrías utilizar el evento OnNewRecord de la tabla B.

Código Delphi [-]
....
Tablab_Campoxxx.Value := TablaAID.Value;
.....

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 14-10-2011
ljvenegas ljvenegas is offline
Miembro
 
Registrado: feb 2007
Posts: 13
Poder: 0
ljvenegas Va por buen camino
gracias creo que esa es la respuesta ahorita la pruebo

Cita:
Empezado por guillotmarc Ver Mensaje
Hola.

Para conocer el valor actual de un generador, puedes usar la función gen_id con un incremento de 0.

Ejplo.

select gen_id(gen_clientes, 0) from rdb$database

NOTA: Utilizo rdb$database porqué sé que un select de esa tabla siempre va a devolver un único registro.

Saludos.


gracias voy a probar
__________________
Gracias

Luis Venegas
[email protected]
Responder Con Cita
  #7  
Antiguo 09-01-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por JAI_ME Ver Mensaje
gracias casimiro, todo lo hago desde delphi.
Das la información con cuentagotas

Desde delphi, sí, vale, pero ?cómo?.

El método propuesto por el compañero guillotmarc te devuelve, evidentemente, el último valor generado, pero si estás en un entorno multiusuario entonces puede no valerte si otro usuario ha pedido un nuevo número.
Responder Con Cita
  #8  
Antiguo 09-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Si trabajas con Firebird 2.1 o posterior puedes utlizar la clausula RETURNING.

Código SQL [-]
Insert into mi_tabla (nombre, apellido) values (:new_nombre, :new_apellido) returning id

No es recomendable que tú asignes el valor del campo ID, o de cualquier otro campo que obtiene su valor del próximo estado del generador. Para asignar los valores en este tipo de campos, es mejor dejar el código de asignación en un stored procedure -ejecutado en un AFTER INSERT-. A cómo tú lo has dicho, nunca sabes si un usuario va a ingresar un registro al mismo tiempo que lo haga otro usuario.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web

Última edición por Chris fecha: 09-01-2011 a las 23:16:28.
Responder Con Cita
  #9  
Antiguo 10-01-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Cita:
Empezado por Chris Ver Mensaje
Si trabajas con Firebird 2.1 o posterior puedes utlizar la clausula RETURNING.

Código SQL [-]
Insert into mi_tabla (nombre, apellido) values (:new_nombre, :new_apellido) returning id
Tengo una pregunta. ¿Cómo haces para leer o recuperar el valor devuelto por esa instrucción desde Delphi? Porque en una ocasión en DelphiAccess salió el tema y algunos intentaron darle rosca al asunto y no han podido acceder a ese valor. Según parece no hay todavía soporte en los drivers para Firebird sobre esto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 10-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
No estoy muy seguro, pero creo que con los componentes que soporten Firebird 2.1 llamas al procedimiento Open, en lugar de llamar al ExecSQL como lo harías normalmente. Desconozco si esta funcionalidad es soportada por los componentes que no han sido desarrollados teniendo en cuanta las mejoras en la versión 2.1 de firebird.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #11  
Antiguo 10-01-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Así parece ser Cris. Debería emplearse componentes o drivers que trabajen con las nuevas características de Firebird... Yo uso D6 y FB 1.5 por lo que no se mucho, pero otras personas que trabajan con Firebird 2.0 y 2.1 y cuentan con versiones modernas de Delphi no pueden leer el RETURNING con los componentes estándares.

Desconozco si Zeos ya soporta esto, creo yo que ni siquiera el nuevo Driver para DBX disponible en Delphi 2010 y XE Enterprise tiene soporte para esto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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
validar tedit, que no ingrese '.' gonza_619 Varios 2 12-11-2010 00:38:27
ABM,como validar que no se ingrese un codigo existente a mi BD juliana_r Conexión con bases de datos 10 10-06-2010 17:09:24
generador novaten Conexión con bases de datos 1 09-04-2005 21:29:44
enmascarar un tedit cuando se ingrese La clave de acceso andresenlared Varios 4 08-01-2004 17:45:27
Ver un generador Rabata Conexión con bases de datos 4 17-09-2003 15:31:01


La franja horaria es GMT +2. Ahora son las 04:29:14.


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