Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Exportando a Excel con DBGridExcelExport (https://www.clubdelphi.com/foros/showthread.php?t=52960)

BlueSteel 05-02-2008 23:13:22

Exportando a Excel con DBGridExcelExport
 
Hola Amigos

Tanto tiempo...entre vacaciones y tanto trabajo atrasado.. no había tenido tiempo de ingresar a postear....

ahora tengo un tiempito y bueno... me apareció un problemilla....estoy exportando a Excel con el componente DBGridExcelExport de la JV... y tengo unas consultas...

Tengo un DBGrid que posee un campo que tiene valor 0, 1, 2, 3 y 4... y quiero que aparesca CONTADO, CRT - 15 DIAS, CRT - 30 DIAS, CRT - 45 DIAS Y CRT - 60 DIAS respectivamente...

eso lo hice en el Query.. en el OnGetText con el sgte codigo
Código Delphi [-]
procedure TDatos.IBQ_ExportarFac_Forma_PagoGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
    Case IBQ_ExportarFac_Forma_Pago.AsInteger of
         0 : Text := 'CONTADO';
         1 : Text := 'CRT - 15 DIAS';
         2 : Text := 'CRT - 30 DIAS';
         3 : Text := 'CRT - 45 DIAS';
         4 : Text := 'CRT - 60 DIAS';
    End;
end;

y me funcion super bien... en el DBGrid me muestra el resultado sin problemas

para exportar a Excel utilizo el sgte proceso

Código Delphi [-]
     SaveDialog.Title := 'Exportar a Microsoft Excel...';
     SaveDialog.Filter := 'Microsoft Excel 97-2003 [*.xls]|*.xls|Microsoft Excel 2007 [*.xlsx]|*.xlsx|Todos los Archivos [*.*]|*.*';
     SaveDialog.FilterIndex := 1;
     SaveDialog.DefaultExt := '*.xls';
     if SaveDialog.Execute Then
        begin
        DBGridExcelExport.FileName := SaveDialog.FileName;
        DBGridExcelExport.Grid := Ventas_Mes;
        DBGridExcelExport.ExportGrid;
    end;

el problema es que en vez de mostrar la columna con los datos CONTADO, CRT - 15 DIAS, CRT - 30 DIAS, CRT - 45 DIAS Y CRT - 60 DIAS, me los muestra con 0, 1 , 2 y 3...

ahh.. se me olvidaba.. lo mismo pasa con otra columna que por defecto tiene E o N, y realizo el proceso para que diga EMITIDA o NULA

Código Delphi [-]
procedure TDatos.IBStringField2GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
     If IBQ_Exportar['Fac_Estado'] = 'E' Then Text:= 'EMITIDA' ELSE Text:= 'NULA';
end;
que podrá ser ?... el DBGrid lo muestra bien.. el Excel no...?

gendelphi 06-02-2008 01:38:07

Hola, nunca he utilizado ese componente, pero lo mas seguro es que sea porque la exportación a Excel se basa en el DataSet. Yo mejor te sugiero que lo hagas a nivel del Query, por ejemplo puedes hacer una consulta de la siguiente forma:

Código SQL [-]
SELECT numero,
  CASE
    WHEN numero = 1 THEN 'UNO'
    WHEN numero = 2 THEN 'DOS'
    WHEN numero = 2 THEN 'TRES'
    ELSE 'OTRO'
  END nombrenumero
FROM mitabla

BlueSteel 07-02-2008 15:10:14

Hola gendelphi

Intenté hacer lo que dices, pero no me funciona.. me da error, ni siquiera en el editor de consulta del Interbase me funca...

Código SQL [-]
SELECT "Fac_Forma_Pago",
    CASE
    WHEN "Fac_Forma_Pago" = 0 THEN "CONTADO"
    WHEN "Fac_Forma_Pago" = 1 THEN "CRT - 15 DIAS"
    WHEN "Fac_Forma_Pago" = 2 THEN "CRT - 30 DIAS"
    WHEN "Fac_Forma_Pago" = 3 THEN "CRT - 45 DIAS"
    ELSE "CRT - 60 DIAS"
    END "Fac_Forma_Pago"
FROM "Factura"

Lo realicé así, pero no me funciona...

gendelphi 07-02-2008 16:22:16

Quizás no observastes bien el ejemplo que te puse, en él los valores deben de ir entre comillas simples, ya que se tratan de constantes, y las comillas dobles son para identificadores, en éste caso campos de la tabla.

Código SQL [-]
SELECT "Fac_Forma_Pago",
    CASE
    WHEN "Fac_Forma_Pago" = 0 THEN 'CONTADO'
    WHEN "Fac_Forma_Pago" = 1 THEN 'CRT - 15 DIAS'
    WHEN "Fac_Forma_Pago" = 2 THEN 'CRT - 30 DIAS'
    WHEN "Fac_Forma_Pago" = 3 THEN 'CRT - 45 DIAS'
    ELSE 'CRT - 60 DIAS'
    END "Fac_Forma_Pago"
FROM "Factura"

BlueSteel 07-02-2008 17:24:52

Gracias...

Si me había fijado ese detalle
Cita:

en él los valores deben de ir entre comillas simples
pero resulta que mi configuración del Interbase 6 no me acepta las comillas simples... tambien intente con " ' " CONTADO " ' ".... Pero no me funca...

Gracias...:p:D

gendelphi 07-02-2008 18:11:30

Entonces es por la versión que estas utilizando, yo utilizo Firebird 2, y recuerdo que en Firebird 1.5 también funciona.


La franja horaria es GMT +2. Ahora son las 22:21:49.

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