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 04-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Bueno, usando tu Query hice esto en el procedimiento.

Código SQL [-]
begin
  /* Procedure Text */
  FOR SELECT max(seccion) FROM SECCIONES
     WHERE RECTORIA = :c_rectoria and DIVISION = :c_division and DEPARTAMENTO = :c_depto
     INTO :c_seccion DO
  begin
    suspend;
  end
end
Efectivamente me regresa el último dato.

Ahora solo es ver de que manera lo coloco en el campo de mi forma con el siguiente valor.

Muchas gracias.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 04-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Solo para complementar este hilo les dejo el complemento de código que me funcionó como queria.

Al seleccionar el departamento, paso los parametros al SP, calculo el siguiente valor y le doy el formato deseado '000'.

Código Delphi [-]
procedure TFEstructura.DBLookupComboBox6CloseUp(Sender: TObject);
var
  Seccion : string;
  SeccionInt: integer;
begin
  with DMEstructura do begin
     IBSPSecciones.Prepare;
     IBSPSecciones.ParamByName('C_RECTORIA').Value :=  IBRectorias.FieldByName('RECTORIA').Value;
     IBSPSecciones.ParamByName('C_DIVISION').Value := IBDivisiones.FieldByName('DIVISION').Value;
     IBSPSecciones.ParamByName('C_DEPTO').Value := IBDeptos.FieldByName('DEPARTAMENTO').Value;
     IBSPSecciones.ExecProc;
     //Valido si se encontró algún dato en caso contrario inicializo en cero.
     if IBSPSecciones.Params[0].Value <> null then 
        Seccion := IBSPSecciones.Params[0].Value
     else Seccion := '0';
     IBSPSecciones.UnPrepare;
     SeccionInt := StrtoInt(Seccion)+1;
     //Asigno el formato 00x a partir del valor entero.
     IBSecciones.FieldByName('SECCION').Value := Format('%.*d',[3,SeccionInt]);
  end;
  DBMemo4.SetFocus;
end;

No se si lo que hago esta bien o sea lo correcto, pero he visto en varios hilos que es bueno que quien haga el trabajo sea la base de datos, bueno, para eso me imagino existen los SP.

Espero que a alguien le sirva.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 05-07-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 22
Ivanzinho Va por buen camino
Si lo quieres hacer todo dentro de un procedimiento prueba lo siguiente :
Código SQL [-]
begin
  /* Procedure Text */
  //Obtenemos el campo sección como un entero
  FOR SELECT Cast(max(seccion) as integer) FROM SECCIONES
     WHERE RECTORIA = :c_rectoria and DIVISION = :c_division and DEPARTAMENTO = :c_depto
     INTO :c_seccionint DO
  begin
    //Si es nulo lo inicializamos a 0
    if (c_seccionint is null) then
      c_seccion = 0;
    
    //Aumentamos el contador
    c_seccionint = c_seccionint + 1;

    //Pasamos el campo a VarChar(3)
    c_seccion = Cast(c_seccionint as VarChar(3))

    //Comprobamos que el campo tenga siempre tres caracteres,
    //esto lo pongo porque creo que quieres que el campo tenga
    //el formato 001 y no 1. Si te vale la forma 1 olvidate del while.
    while length(c_seccion) < 3 do
       c_seccion = '0' || c_seccion;

    //Para finalizar con el campo c_seccion ejecutas la acción que
    //desees, un insert, update, ...
   
  end
end

Espero que te sirva

Un saúdo.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 05-07-2007 a las 09:17:38.
Responder Con Cita
  #4  
Antiguo 05-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Muchas gracias Ivanzinho, lo voy a probar y comento los resultados.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
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
LLaves foraneas... Luis Castillo SQL 2 13-11-2005 18:45:34
Problema de llaves primarias y foráneas!! romansiux Varios 2 10-04-2005 16:20:57
Llaves Foraneas RainFall MySQL 1 26-07-2004 04:19:28
Llaves foraneas en BDD distintas StartKill Firebird e Interbase 7 31-01-2004 01:14:01
Borrar una tabla que tiene llaves foraneas afarenas Firebird e Interbase 2 10-10-2003 22:00:15


La franja horaria es GMT +2. Ahora son las 08:48: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