Toggle Theme Editor
Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Charcoal

  1. ¡Bienvenido!
    Foro del PC es una comunidad sin fines de lucro dedicada a ayudar, informar y aclarar dudas sobre todos los temas relacionados con la computación.
    Para hacer uso de todas las funciones de nuestra comunidad y aprender más sobre computadoras, celulares y más, no dudes en registrarte, es gratis y puedes hacerlo aquí.

llenar un array con un campo de firebird?

Tema en 'Pascal, Delphi' comenzado por GiVaN, 12 de Octubre de 2010.

  1. GiVaN

    GiVaN Gran Forista

    Hola Les escribo para ver si pueden ayudarme..

    Les cuento estoy haciendo una aplicacion con una base de datos firebird la cual tiene una tabla llamada servicios su estructura es la siguiente:

    [SERVICIOS]

    ID INTEGER NOT NULL,
    SERVICIO CHAR(30) ,
    SERVICIO_MENSUAL NUMERIC(12, 2),
    FVSERVICIO DATE);

    Esta el campo SERVICIO_MENSUAL EL CUAL CONTENDRA UN MONTO

    ID SERVICIO SERVICIO_MENSUAL FVSERVICIO
    ------- ------------ ----------------------- --------------
    100 TELEFONO 20,000 22/10/2010
    101 CELULAR 15,000 30/10/2010
    102 LUZ 20,000 25/10/2010
    103 CABLE 17,000 18/10/2010

    tengo un form con varias etiquetas asi:

    Telefono: Label1
    Celular: Label2
    Luz: Label3
    Cable: Label4

    use este codigo en el primer label:

    Código:
    Label1.Caption:=DTM.UTable1.Fields.FieldByName('SERVICIO_MENSUAL').Value;
    y en el form me aparecio asi :

    Telefono: 20,000 excelente!!!, dije.... pero luego me di cuenta que el me mostraria solo un campo yo necesito que me muestre todos los valores al mismo tiempo :OO:

    necesito poner otras etiquetas que contengan los montos del campo SERVICIO_MENSUAL

    osea asi:

    Telefono: 20,000
    Celular: 15,000
    Luz: 20,000
    Cable: 17,000

    pense en un array pero no se como hacerlo en Delphi

    Llenar un Array con los Valores de SERVICIO_MENSUAL Algo asi:

    SERVICIO[0] = 20,000
    SERVICIO[1] = 15,000
    SERVICIO[2] = 20,000
    SERVICIO[3] = 17,000

    LABEL1.CAPTION:=SERVICIO[0]
    LABEL2.CAPTION:=SERVICIO[1]
    LABEL3.CAPTION:=SERVICIO[2]
    LABEL4.CAPTION:=SERVICIO[3]

    Al menos asi pienso yo que podria hacerlo; pero he buscado en google y no hay ejemplos de arrays y bases de datos firebird en Delphi.

    Espero haberlo explicado bien :eek:kas:
  2. Jorge.A.V.M.

    Jorge.A.V.M. Fundador Miembro del Equipo

  3. coldrazor

    coldrazor Gran Forista

    Tal como dice jorge lo mejor es un for, o quizá un while, realizan funciones bastante parecidas, tal vez con un poco más de explicación te podemos ayudar mejor hay cosas que no entendí muy bien...

    Estas diciendo que todos esos datos están en la misma tabla y el mismo campo?
    El comportamiento de esos 4 registros se sigue cumpliendo en el mismo formato hacia abajo, es decir teléfono-celular-luz-cable -- teléfono-celular-luz-cable?

    Otra cosa, exactamente como las tienes que traer? de 4 en cuatro valores supongo? que método usas para que se ejecute la funcion?

    Porque se hace algo complicado, no se como funcionara el firebird con estas basesitas, o no se si es parte de un trabajo que te han dejado esa tarea, pero lo mejor seria usar 4 tablas con los valores por separado. Así se facilita en extremo el orden y el código queda hecho un amor.
  4. GiVaN

    GiVaN Gran Forista

    Creo que podria hacer una sola tabla con esta estructura:

    SERVICIO TELEFONO

    MENSUAL TELEFONO

    FECHA TELEFONO

    SERVICIO CELULAR

    MENSUAL CELULAR

    FECHA CELULAR

    SERVICIO AGUA

    MENSUAL AGUA

    FECHA AGUA

    SERVICIO CABLE

    MENSUAL CABLE

    FECHA CABLE

    Que Hacer Cuatro Tablas Por Separado!!!!
  5. GiVaN

    GiVaN Gran Forista

    Pues Hice Una Prueba Con Un Archivo INI y Funciono!!!!

    Archivo INI

    Llamado Servicios.ini

    /-Inicio de Servicios.ini

    [TELEFONO] <-Este es el Nombre de La Seccion
    NOMBRE=TELEFONO+INTERNET
    MENSUAL=58000 <- Este es el Monto Mostrado
    VENCIMIENTO=22/10/2010

    [CELULAR]
    NOMBRE=TELEFONO CELULAR
    MENSUAL=5000
    VENCIMIENTO=30/10/2010

    [AGUA]
    NOMBRE=SERVICIO DE AGUA
    MENSUAL=10000
    VENCIMIENTO=25/10/2010

    [CABLE]
    NOMBRE=SERVICIO DE CABLE
    MENSUAL=17000
    VENCIMIENTO=15/10/2010

    /-Fin del Archivo Servicios.ini

    Les Doy Los Detalles... del Codigo

    Código:
    unit Mostrar;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls,IniFiles;
    
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        LblTelefono: TLabel;
        LblCelular: TLabel;
        LblAgua: TLabel;
        LblCable: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        Label8: TLabel;
        Button1: TButton;
        Label13: TLabel;
        Label14: TLabel;
        Label15: TLabel;
        Label9: TLabel;
        LblTotal: TLabel;
        procedure FormShow(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    CLOSE;
    end;
    
    procedure TForm1.FormShow(Sender: TObject);
    var
    //Aqui Se Definen Las Variables
    //
    MiFichero :TIniFile;
    Internet,Celular,Agua,Cable,Total : Integer;
    begin
    //Carga el Archivo Ini donde se Encuentre el Ejecutable
    MiFichero := TIniFile.Create(ExtractFileDir(ParamStr(0))+'\'+'Servicios.ini');
    //Aqui Se le Asigan el Valor a Las Variables
    //
    Internet:= MiFichero.ReadInteger('Telefono','Mensual',0);
    Celular:= MiFichero.ReadInteger('Celular','Mensual',0);
    Agua:= MiFichero.ReadInteger('Agua','Mensual',0);
    Cable:= MiFichero.ReadInteger('Cable','Mensual',0);
    //Se Hace La Suma de los Montos
    //
    Total:=Internet+Celular+Agua+Cable;
    //Aqui Se Le Da formato de Moneda y se Muestra en La etiqueta
    //
    LblTelefono.Caption:=FloattoStrF(Internet,ffCurrency,8,2);
    LblCelular.Caption:=FloattoStrF(Celular,ffCurrency,8,2);
    LblAgua.Caption:= FloatToStrF(Agua,ffCurrency,8,2);
    LblCable.Caption:=FloatToStrF(Cable,ffCurrency,8,2);
    LblTotal.Caption:=FloatToStrF(Total,ffCurrency,8,2);
    end;
    end.
    
    Despues Tratare de Hacer lo mismo mediante una Tabla Firebird, aunque por el momento con el INI me funciono!!! les Dejo una Captura de Este Codigo Corriendo

    Por Cierto esta Sentencia

    ExtractFileDir(ParamStr(0))+'\'+'Servicios.ini');

    Me sirve Tambien Para Cuandro Creo La base de Datos Embebida de Firebird por lo que Mi Aplicacion es Totalmente Portable :) Solo cambio el Servicios.ini por DataBaseFirebird.FBD Listo ya Puedo Usar mi Aplicacion hasta en la Memoria USB :eek:kas:


    [archivo adjunto borrado por antigüedad]
  6. coldrazor

    coldrazor Gran Forista

    Era algo demasiado sencillo, creo que me excedi en preguntas xD

Comparte esta página