Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 16-10-2008
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Poder: 20
JosepGA Va por buen camino
tercera parte:

Código Delphi [-]
procedure TFormRptConsultaMantenimientos.tCalculoFormulasSumatorio( sender: TObject; Var Value: String );
begin
  If ListaFormatoCampos.Strings[ ( Sender As TppVariable ).Tag ] <> '' Then
    Value := FormatFloat( ListaFormatoCampos.Strings[ ( Sender As TppVariable ).Tag ],
                                               StrToFloat( ListaTotalesSumados.Strings[ ( Sender As TppVariable ).Tag ] ) )
  Else
    Value := ListaTotalesSumados.Strings[ ( Sender As TppVariable ).Tag ];
end;

procedure TFormRptConsultaMantenimientos.tFormateadoCampo( sender: TObject; Var Value: String );
Var
  Valor : String;
  ValoresFormato : String;
  PosicionComa : LongInt;
  ValorFinal : String;
  EncontradoComa : Boolean;
  PosicionValor : LongInt;
  i : LongInt;
begin
  Valor := Value; //( Sender As TppDBText ).DataPipeline.FieldByName( ( Sender As TppDBText ).DataField ).AsString;
  ValoresFormato := ListaValoresSustituir.Strings[ ( Sender As TppDBText ).Tag ];

  If ( ValoresFormato <> '' ) Then
    Begin
      ValorFinal := Value;
      EncontradoComa := FALSE;
      PosicionValor := Pos( Valor, ValoresFormato );
      If PosicionValor <> 0 Then
        For i := PosicionValor To Length( ValoresFormato ) Do
          If ( Copy( ValoresFormato, i, 1 ) = ']' ) Then
            Break
          Else If ( Copy( ValoresFormato, i, 1 ) <> ',' ) And EncontradoComa Then
            ValorFinal := ValorFinal + Copy( ValoresFormato, i, 1 )
          Else If ( Copy( ValoresFormato, i, 1 ) = ',' ) Then
            Begin
              EncontradoComa := TRUE;
              ValorFinal := '';
            End;

      Value := Trim( ValorFinal );
    End;
  {Else
    Value := Valor;}
end;

function TFormRptConsultaMantenimientos.CalcularExpresion( Expresion : String ) : String;
var
  i, j : LongInt;
  Posicion : LongInt;
  Operandos : String;
  CampoTabla : String;
  Variable : Char;
  ExpresionObtenida : String;
  SubExpresion : String;
  SubValor : String;
  Caracter : String;
begin
  Try
    Expresion := Trim( Expresion );
    i := 1;
    Calculadora.Expression := '';
    Variable := 'A';
    ExpresionObtenida := '';
    While i <= Length( Expresion ) Do
      Begin
        Expresion := Trim( Expresion );
        If ( Pos( '[', Expresion ) <> 0 ) Then
          Begin
            Posicion := Pos( '[', Expresion ) - 1;
            Operandos := Trim( Copy( Expresion, i , Posicion ) );
            Delete( Expresion, i, Posicion );
            If ( Operandos <> '' ) Then
              Begin
                SubExpresion := '';
                SubValor := '';
                j := 0;
                While j < Length( Operandos ) Do
                  Begin
                    Inc( j );

                    Caracter := Copy( Operandos, j, 1 );
                    If ( Caracter <> ' ' ) Then
                      If ( ( Caracter >= '0' ) And ( Caracter <= '9' ) ) Or
                        ( Caracter = '.' ) Then
                        SubValor := SubValor + Caracter
                      Else
                        Begin
                          If ( SubValor <> '' ) Then
                            Begin
                              Calculadora.SetVariable( Variable, StrToFloat( SubValor ) );
                              SubExpresion := SubExpresion + '(' + Variable + ')';

                              Variable := Chr( Ord( Variable ) + 1 );

                              SubValor := '';
                            End;

                          SubExpresion := SubExpresion + Caracter;
                        End;
                  End;

                If ( SubValor <> '' ) Then
                  Begin
                    Calculadora.SetVariable( Variable, StrToFloat( SubValor ) );
                    SubExpresion := SubExpresion + '(' + Variable + ')';

                    Variable := Chr( Ord( Variable ) + 1 );

                    SubValor := '';
                  End;

                ExpresionObtenida := ExpresionObtenida + SubExpresion;
              End;
            i := 1;
            Expresion := Trim( Expresion );

            If ( Copy( Expresion, i, 1 ) = '[' ) Then
              Begin
                Posicion := Pos( ']', Expresion );
                CampoTabla := Trim( Copy( Expresion, i+1 , Posicion-2 ) );
                Delete( Expresion, i, Posicion );
                i := 0;
                Calculadora.SetVariable( Variable, tTablaConsulta.FieldByName( CampoTabla ).AsFloat );
                ExpresionObtenida := ExpresionObtenida + '(' + Variable + ')';

                Variable := Chr( Ord( Variable ) + 1 );
              End
          End
        Else
          Begin
            If ( Expresion <> '' ) Then
              Begin
                SubExpresion := '';
                SubValor := '';
                j := 0;
                While j < Length( Expresion ) Do
                  Begin
                    Inc( j );

                    Caracter := Copy( Expresion, j, 1 );
                    If ( Caracter <> ' ' ) Then
                      If ( ( Caracter >= '0' ) And ( Caracter <= '9' ) ) Or
                        ( Caracter = '.' ) Then
                        SubValor := SubValor + Caracter
                      Else
                        Begin
                          If ( SubValor <> '' ) Then
                            Begin
                              Calculadora.SetVariable( Variable, StrToFloat( SubValor ) );
                              SubExpresion := SubExpresion + '(' + Variable + ')';

                              Variable := Chr( Ord( Variable ) + 1 );

                              SubValor := '';
                            End;

                          SubExpresion := SubExpresion + Caracter;
                        End;
                  End;

                If ( SubValor <> '' ) Then
                  Begin
                    Calculadora.SetVariable( Variable, StrToFloat( SubValor ) );
                    SubExpresion := SubExpresion + '(' + Variable + ')';

                    Variable := Chr( Ord( Variable ) + 1 );

                    SubValor := '';
                  End;

                ExpresionObtenida := ExpresionObtenida + SubExpresion;
                Expresion := '';
              End;

            i := 0;
          End;

        Inc( i );
      End;

    Calculadora.Expression := ExpresionObtenida;
    Result := FloatToStr( Calculadora.Value );
  Except
    Result := '0';
  End;
end;

procedure TFormRptConsultaMantenimientos.ppVariable2GetText(
  Sender: TObject; var Text: String);
begin
  Text := NombreEmpresaCtb;
end;

procedure TFormRptConsultaMantenimientos.tBuscarDatoCampoRelacionado(Sender: TObject; var Text: String);
Var
  PosicionArray : LongInt;
  TablaRelacionada : String;
  IndiceRango : String;
  CamposMaestro : String;
  CamposRelacionado : String;
  CampoDevolver : String;
  PosicionPuntoComa : LongInt;
  CampoRangoMaestro : String;
  CampoRangoRelacionado : String;
begin
  PosicionArray := ( Sender As TppDBText ).Tag;

  CamposMaestro := ListaTablasRelacionadasCamposMaestro[ PosicionArray ];
  CamposRelacionado := ListaTablasRelacionadasCamposRelacionado[ PosicionArray ];

  CampoDevolver := ListaTablasRelacionadasCampoDevolver[ PosicionArray ];

  Text := '';
  Try
    ListaTablasRelacionadas[ PosicionArray ].SetRangeStart;
    While Length( CamposRelacionado ) > 0 Do
      Begin
        PosicionPuntoComa := Pos( ';', CamposMaestro );
        If PosicionPuntoComa = 0 Then
          PosicionPuntoComa := Length( CamposMaestro ) + 1;
        CampoRangoMaestro := Trim( Copy( CamposMaestro, 1, PosicionPuntoComa - 1 ) );
        Delete( CamposMaestro, 1, PosicionPuntoComa );

        PosicionPuntoComa := Pos( ';', CamposRelacionado );
        If PosicionPuntoComa = 0 Then
          PosicionPuntoComa := Length( CamposRelacionado ) + 1;
        CampoRangoRelacionado := Trim( Copy( CamposRelacionado, 1, PosicionPuntoComa - 1 ) );
        Delete( CamposRelacionado, 1, PosicionPuntoComa );

        If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftString Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsString :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsString
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftInteger Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsInteger :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsInteger
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftSmallInt Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsInteger :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsInteger
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftFloat Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsFloat :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsFloat
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftDateTime Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftDate Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftTime Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime;
      End;

    CamposMaestro := ListaTablasRelacionadasCamposMaestro[ PosicionArray ];
    CamposRelacionado := ListaTablasRelacionadasCamposRelacionado[ PosicionArray ];

    ListaTablasRelacionadas[ PosicionArray ].SetRangeEnd;
    While Length( CamposRelacionado ) > 0 Do
      Begin
        PosicionPuntoComa := Pos( ';', CamposMaestro );
        If PosicionPuntoComa = 0 Then
          PosicionPuntoComa := Length( CamposMaestro ) + 1;
        CampoRangoMaestro := Trim( Copy( CamposMaestro, 1, PosicionPuntoComa - 1 ) );
        Delete( CamposMaestro, 1, PosicionPuntoComa );

        PosicionPuntoComa := Pos( ';', CamposRelacionado );
        If PosicionPuntoComa = 0 Then
          PosicionPuntoComa := Length( CamposRelacionado ) + 1;
        CampoRangoRelacionado := Trim( Copy( CamposRelacionado, 1, PosicionPuntoComa - 1 ) );
        Delete( CamposRelacionado, 1, PosicionPuntoComa );

        If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftString Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsString :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsString
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftInteger Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsInteger :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsInteger
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftSmallInt Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsInteger :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsInteger
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftFloat Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsFloat :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsFloat
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftDateTime Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftDate Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime
        Else If tTablaConsulta.FieldByName( CampoRangoMaestro ).DataType = ftTime Then
          ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoRangoRelacionado ).AsDateTime :=
            tTablaConsulta.FieldByName( CampoRangoMaestro ).AsDateTime;
      End;

    ListaTablasRelacionadas[ PosicionArray ].ApplyRange;
    If ( ListaTablasRelacionadas[ PosicionArray ].RecordCount <> 0 ) Then
      If ListaFormatoCampos.Strings[ PosicionArray ] <> '' Then
        Text := FormatFloat( ListaFormatoCampos.Strings[ PosicionArray ],
                              ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoDevolver ).AsFloat )
      Else
        Text := ListaTablasRelacionadas[ PosicionArray ].FieldByName( CampoDevolver ).AsString;
  Finally
  End;
end;
Responder Con Cita
 


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
Report Builder yokey Impresión 3 10-06-2008 14:34:50
Report Builder 7 dmagui OOP 0 15-05-2007 01:53:06
Cabiar orientacion del informe en fast report fabitheking Impresión 2 25-01-2006 20:42:02
Report Builder 7.0 MarioATamborini Impresión 2 01-04-2004 00:58:40
report builder jsanchez Impresión 0 27-05-2003 01:08:47


La franja horaria es GMT +2. Ahora son las 22:44:04.


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