Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-12-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Llenar horarios en combobox

Hola amigos...

Continuando con un proyecto q hace poco inicie. Delphi6-Firebird 2.0

Tengo el siguiente problema al llenar un combobox con datos de una tabla (horario). Explico:

La tabla "horario" la lleno desde delphi usando un formulario, un procedimiento almacenado y con el siguiente código:

Código Delphi [-]
procedure TfrmFechaCritica.btnEjecutarClick(Sender: TObject);
begin
   if Application.MessageBox('Estas seguro de ejectuar el proceso','Pregunta',mb_OkCancel+mb_IconQuestion)=idOk then
   begin
       try
           spCrearFechasCriticas.Close;
           spCrearFechasCriticas.ParamByName('i_hora_ini').AsTime:=StrToTime(cbxHoraIni.Items[cbxHoraIni.ItemIndex]);
           spCrearFechasCriticas.ParamByName('i_hora_fin').AsTime:=StrToTime(cbxHoraFin.Items[cbxHoraFin.ItemIndex]);
           spCrearFechasCriticas.ParamByName('i_Maximo_pedidos').AsInteger:=StrToInt(mskMaxPedidos.Text);
           spCrearFechasCriticas.ExecProc;
           ModuloBD.trsDatos.Commit;
           Application.MessageBox('Procesado terminado satisfactoriamente','Aviso',mb_ok+mb_IconInformation);
       except
              on E:Exception do
              begin
                 ShowMessage(E.Message);
              end;
       end;
   end;
   LimpiarPantalla();
end;

Codigo SQL del SP:
Código SQL [-]
CREATE PROCEDURE SP_CREAR_FECHAS_CRITICAS (
    nmes numeric(2,0),
    ndia numeric(2,0),
    thora_ini time,
    thora_fin time,
    nmax_pedidos numeric(2,0),
    nintervalo numeric(2,0))
as
declare variable vregistros numeric(3,0);
begin
     select count(*)
     from FECHA_CRITICA a
     where a.mes=:nmes
       and a.dia=:ndia
     into :vregistros;
     if (:vregistros is null) then
     begin
        execute procedure sp_insertar_fechas :nmes,:ndia,:thora_ini,:thora_fin,:nmax_pedidos,:nintervalo;
     end Else
     begin
         delete
         from fecha_critica b
         where b.mes=:nmes
           and b.dia=:ndia;
         execute procedure sp_insertar_fechas :nmes,:ndia,:thora_ini,:thora_fin,:nmax_pedidos,:nintervalo;
     end
end

Como podrán observar tengo un procedimiento almacenado q es llamado desde SP_CREAR_FECHAS_CRITICAS, se los agrego:
Código SQL [-]
CREATE PROCEDURE SP_INSERTAR_FECHAS (
    i_hora_ini time,
    i_hora_fin time,
    i_maximo_pedidos numeric(2,0))
as
declare variable v_tot_horas numeric(2,0);
declare variable v_num numeric(2,0);
declare variable v_next_hora time;
declare variable v_hora_ini time;
declare variable v_num2 numeric(2,0);
begin
    delete
    from HORARIO;
    v_tot_horas=(:i_hora_fin-:i_hora_ini)/(60*60);
    v_next_hora=:i_hora_ini;
    v_num=1;
    While (v_num <= v_tot_horas) do
    begin
       v_num2=1;
       While (v_num2<=:i_maximo_pedidos) do
       begin
          insert into horario(HORA) values (:v_next_hora);
          v_next_hora=v_next_hora+(3600/:i_maximo_pedidos);
          v_num2=:v_num2+1;
       end
       v_num=:v_num+1;
    end
end

Bien...como que mucho "circo" para lo que sigue: El problema que tengo, es al momento de llenar un Combobox con los horarios generados de la tabla "horario".....sobre todo cuando llega al horario 13:00:00, en el combobox se registra 01:00:00 y cuando grabo el dato a la tabla de pedidos, se graba 01:00:00 am !!!....NO ES POSIBLE a la 1 de la madrugada entregar un pedido !!!.

Bueno el caso es que como le hago para q se registre 13:00:00 en el combobox??...

Porqué lleno el combo así y no uso otro componente como el DBLookUpComboBox, para enlazar el DataSet a este ultimo??, lo que pasa es que necesito excluir el o los horarios ya registrados del dia que se harán (fecha_entrega) entregas:

El siguiente código hace lo q menciono en el párrafo anterior: (lo tengo en un componente TIBQuery)
Código SQL [-]
select a.hora
from horario a
where a.hora not in (select CAST(b.fecha_hora_entrega as TIME)
                     from pedido b
                     where CAST(b.fecha_hora_entrega as DATE) = :fecha  )

Gracias por su tiempo y comentarios.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #2  
Antiguo 22-12-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Aparte de todo, qué hace ese commit ahí?


Cita:
spCrearFechasCriticas.Close;
spCrearFechasCriticas.ParamByName('i_hora_ini').AsTime:=StrToTime(cbxHoraIni.Items[cbxHoraIni.ItemIndex]);
spCrearFechasCriticas.ParamByName('i_hora_fin').AsTime:=StrToTime(cbxHoraFin.Items[cbxHoraFin.ItemIndex]);
spCrearFechasCriticas.ParamByName('i_Maximo_pedidos').AsInteger:=StrToInt(mskMaxPedidos.Text);
spCrearFechasCriticas.ExecProc;
ModuloBD.trsDatos.Commit; // ¿ Qué hace esto aquí ? :/
Application.MessageBox('Procesado terminado satisfactoriamente','Aviso',mb_ok+mb_IconInformation);
Responder Con Cita
  #3  
Antiguo 22-12-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Aparte de todo, qué hace ese commit ahí?
Si verdad....jajaja...eso de andar enfocado en otras cosas...en esa parte del código tenia otra cosa que no me estaba funcionando y opté por hacerlo con un procedimiento almacenado y no borre esa linea...

Gracias por la observación.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
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
Llenar Combobox agustin173 Varios 10 27-09-2010 20:20:55
Llenar un combobox Er0s Tablas planas 8 26-04-2010 22:29:51
Llenar un ComboBox jlcorona Varios 1 16-05-2008 10:28:23
llenar un combobox fabian20s Conexión con bases de datos 13 30-11-2007 18:54:56
Llenar un ComboBox en delphi 7 arespremium Internet 14 05-08-2007 01:59:16


La franja horaria es GMT +2. Ahora son las 05:17:00.


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