Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Definir un TQRChart en tiempo de ejecución (2) (https://www.clubdelphi.com/foros/showthread.php?t=94396)

Angel.Matilla 22-01-2020 19:38:39

Definir un TQRChart en tiempo de ejecución (2)
 
Sigo con mis batallas con este componente. En un informe diseñado con QR tengo un TQRChart que uso en dos o tres sitios distintos de la aplicación. Me funciona bien en todos ellos menos en uno. A ver si soy capaz de explicarme.

1. Donde funciona bien
A partir de esta tabla, tal cual:


Con este código:
Código:

fMenu->Auxiliar->Close();
fMenu->Auxiliar->SQL->Text = "SELECT * FROM " + cTabTemp + " WHERE Orden > 0 AND Votos1 > 0";
fMenu->Auxiliar->Open();

fIndBln->QRDBChart1->LeftAxis->Title->Caption = "Votos";
fIndBln->Series1->DataSource          = fMenu->Auxiliar;
fIndBln->Series1->Title                = HeaderControl7->Sections->Items[1]->Text;
fIndBln->Series1->Marks->ArrowLength  = 0;
fIndBln->Series1->Marks->Style        = smsValue;
fIndBln->Series1->SeriesColor          = clRed;
fIndBln->Series1->XLabelsSource        = "SIGLA";
fIndBln->Series1->BarStyle            = bsRectGradient;
fIndBln->Series1->YValues->ValueSource = "VOTOS1";

fIndBln->Series2->DataSource          = fMenu->Auxiliar;
fIndBln->Series2->Title                = HeaderControl7->Sections->Items[2]->Text;
fIndBln->Series2->Marks->ArrowLength  = 0;
fIndBln->Series2->Marks->Style        = smsValue;
fIndBln->Series2->SeriesColor          = clGreen;
fIndBln->Series2->BarStyle            = bsRectGradient;
fIndBln->Series2->YValues->ValueSource = "VOTOS2";

Obtengo este gráfico:


2. Donde no funciona
Con esta tabla:


Y con este código:
Código:

fIndBln->QRDBChart1->RemoveAllSeries();
fIndBln->QRDBChart1->LeftAxis->Title->Caption      = "Votos";
fIndBln->QRDBChart1->LeftAxis->Title->Font->Style  = TFontStyles() << fsBold;

for (nItem = 2; nItem < fMenu->Auxiliar->FieldDefs->Count; nItem ++)
{
    fIndBln->QRDBChart1->AddSeries(&TLineSeries(fIndBln->QRDBChart1));
    fIndBln->QRDBChart1->Series[fIndBln->QRDBChart1->SeriesCount() - 1]->DataSource          = fMenu->Auxiliar;
    fIndBln->QRDBChart1->Series[fIndBln->QRDBChart1->SeriesCount() - 1]->SeriesColor          = clYellow;
    fIndBln->QRDBChart1->Series[fIndBln->QRDBChart1->SeriesCount() - 1]->XLabelsSource        = "NOMBRE";
    fIndBln->QRDBChart1->Series[fIndBln->QRDBChart1->SeriesCount() - 1]->YValues->ValueSource = fMenu->tTemp->FieldDefs->Items[nItem]->Name;
}

(La tabla del gráfico inmediato superior es esa fMenu->Auxiliar; realmente es un query)

Sólo obtengo esto:


He probado a "forzar" con sólo dos de las columnas de datos (PORCC y PORCD) y copiando literalmente el código del principio, cambiando en el mismo donde VOTOS1 y VOTOS2 por esas dos columnas y SIGLA por NOMBRE, pero da lo mismo. Y ya estoy harto de darle vueltas al molino porque llevo una semana con este tema y no soy capaz de resoverlo.

He de decir con el resultado del query, si hago la definición en tiempo de diseño sale el gráfico perfecto:


Pero si trato de trasladar esa definición al código, ¡falla estrepitosamente!


La franja horaria es GMT +2. Ahora son las 16:44: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