Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Como realizar proceso automaticamente

Buenas tardes a todos.

Como siempre D-6 y FB 1.5, de momento no cambio.

Recientemente he añadido a mi tabla un campo que es un código de barra y necesitaria saber como puedo hacer para realizar el código del siguiente procedure de manera que me recalcule la primera vez que entro en el programa los códigos que estan vacios, esto quiero hacerlo de forma transparente al usuario para que este no se estrese, jejeje.

Código Delphi [-]
 
procedure TF_Rebut.JvDBDateEdit1Exit(Sender: TObject);
var Temp,Anyo,Rebut,Arbitre,Codi_B: String;
a,m,d: Word;
begin
        DecodeDate(F_ModulDades.RebutDATA.Value, a,m,d);
        Anyo:= IntToStr(a);
        Temp:='0000';
        Delete(Temp,1,Length(IntToStr(F_ModulDades.RebutID_REBUT.Value)));
        Rebut:=Concat(Temp+IntToStr(F_ModulDades.RebutID_REBUT.Value));
        Temp:='00';
        Delete(Temp,1,Length(IntToStr(F_ModulDades.RebutID_USUARI.Value)));
        Arbitre:=Concat(Temp+IntToStr(F_ModulDades.RebutID_USUARI.Value));
        Codi_B:=(Anyo+Rebut+Arbitre+'000');
        CodiCorrecte(Codi_B);
        F_ModulDades.RebutCODI_BARRES.Value:=Codi_B;
end;

Este código se realiza correctamente en los nuevos registros, pero no se como realizar un bucle que busque los que estan vacios y lo rellene.

Para actualizar tablas a la base de datos desde delphi uso un IBScript, no se si será algo parecido.

Si alguien me puede echar un cable pues como siempre enormemente agradecido.

Saludos

Josep
Responder Con Cita
  #2  
Antiguo 28-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Por qué no haces un programita aparte que te rellene todos los registros existentes?

// Saludos
Responder Con Cita
  #3  
Antiguo 28-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Si, es lo que necesitaría hacer pero no se como.

Un IBScript con un update ?

Gracias

Josep
Responder Con Cita
  #4  
Antiguo 28-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No uso firebird, pero no creo que sea algo especial de este gestor. Yo lo que haría es usar un query para obtener todos los registros con ese campo vacío, algo como

Código SQL [-]
select * from tabla where codigo_barras = ''

o

Código SQL [-]
select * from tabla where codigo_barras is null

según corresponda.

Entonces, la actualización la haces sobre ese query, recorriendo todos sus registros en un ciclo.

// Saludos
Responder Con Cita
  #5  
Antiguo 28-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Román.

El problema que tengo es como paso todo lo que hace el procedure que puse en el primer post en una consulta update, aquí es donde estoy encallado.

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 28-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Josep.

Lo que no me termina de quedar claro es como deseas que se arme la cadena que se almacena en Codi_B.

¿ Podrías poner una muestra de como queres componerla ?

Como por ejemplo:
Código:
fecha    | ID_Rebut | ID_Usuari
---------+----------+-----------
20120828 | 00001    | 001
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 28-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jafera Ver Mensaje
Gracias Román.

El problema que tengo es como paso todo lo que hace el procedure que puse en el primer post en una consulta update, aquí es donde estoy encallado.

Saludos

Josep
Creo que no nos estamos entendiendo. En tu rutina, después de cálculos que haces, terminas asignando el valor final al campo de tu base:

Código Delphi [-]
F_ModulDades.RebutCODI_BARRES.Value:=Codi_B;

O sea que, imagino, Rebut es un dataset conectado a tu tabla. Bueno, lo que yo digo es que uses un query, digamos QueryRebut con una consulta como la que te puse y hagas:

Código Delphi [-]
while not QueryRebut.Eof do
begin
  {
    Aquí los cálculos
  }
  QueryRebut['CODI_BARRES'].Value:=Codi_B;
  QueryRebut.Next;
end;

// Saludos
Responder Con Cita
  #8  
Antiguo 28-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias ecfisa

El codigo se compone con el año de la fecha (cuatro cifras), el id del recibo (cuatro cifras) y el id del usuario (dos cifras) más tres ceros es decir:

2012 0001 01 000

luego con la funcion codigocorrecto sustituyo el ultimo cero por el valor de control correcto.

Saludos

Josep
Responder Con Cita
  #9  
Antiguo 28-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Román.

Si te he entendido, lo que no se es como hacer los calculos en el bucle para poder obtener Codi_B.

Creo que con esta aclaración que me has pasado voy a probar mañana si lo consigo.

Josep
Responder Con Cita
  #10  
Antiguo 29-08-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Solucionado.

Código Delphi [-]
 
procedure TF_Inici.Codi_B;
var Temp,Anyo,Rebut,Arbitre,Codi_B: String;
 a,m,d: Word;
begin
        Codis_B.Close;
        Codis_B.Open;
        F_ModulDades.Rebut.Close;
        F_ModulDades.Rebut.Open;
        while not Codis_B.Eof do
        begin
                F_ModulDades.Rebut.Locate('ID_REBUT', Codis_BID_REBUT.Value,[]);
                F_ModulDades.Rebut.Edit;
                DecodeDate(Codis_BDATA.Value, a,m,d);
                Anyo:= IntToStr(a);
                Temp:='0000';
                Delete(Temp,1,Length(IntToStr(Codis_BID_REBUT.Value)));
                Rebut:=Concat(Temp+IntToStr(Codis_BID_REBUT.Value));
                Temp:='00';
                Delete(Temp,1,Length(IntToStr(Codis_BID_USUARI.Value)));
                Arbitre:=Concat(Temp+IntToStr(Codis_BID_USUARI.Value));
                Codi_B:=(Anyo+Rebut+Arbitre+'000');
                F_Rebut.CodiCorrecte(Codi_B);
                F_ModulDades.RebutCODI_BARRES.Value:=Codi_B;
                F_ModulDades.Rebut.Post;
                Codis_B.Next;
        end;
end;

He creado esta funcion en el Form Inicio para que la consluta Codis_B busque los codigos vacios y con el eof -> Next lo recorro rellenando los valores que faltan.

Funciona de maravilla

Gracias a todos por vuestroa ayuda, a veces no veo más allá de mi nariz y veía como hacerlo pero no encontraba la manera de aplicarlo, jejeje...

Josep
Responder Con Cita
Respuesta



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
Como enviar un email automaticamente con PHP JoAnCa PHP 3 09-03-2010 22:06:34
Como ajustar automaticamente largo reporte quickreport zoide Impresión 4 30-11-2009 19:54:39
Como quemar un CD automáticamente con Builder? JuanErasmo C++ Builder 6 10-01-2006 17:39:54
ToolButon con PopUp asociado como desplegar automaticamente FNADALO OOP 4 08-08-2004 09:24:22
Cómo subir información a una bd en internet automáticamente osvrom Internet 4 20-03-2004 00:21:57


La franja horaria es GMT +2. Ahora son las 10:48:12.


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