Buenas. Tengo un query que me da esta salida:
y a partir del mismo trato de montar un TDBChart. Para ello, en tiempo de ejecución, hago las asignaciones pertinentes:
Código:
Chart2->RemoveAllSeries();
Chart2->Chart3DPercent = 5;
Chart2->BottomAxis->Title->Caption = "Año";
Chart2->BottomAxis->Title->Font->Style = TFontStyles() << fsBold;
Chart2->BottomAxis->Labels = fMenu->Query->FieldByName("Fecha")->AsInteger;
Chart2->LeftAxis->Title->Caption = "Votos";
Chart2->LeftAxis->Title->Font->Style = TFontStyles() << fsBold;
for (nItem = 2; nItem < fMenu->Query->FieldDefs->Count; nItem ++)
{
fMenu->Auxiliar->Close();
fMenu->Auxiliar->ParamByName("Codigo")->AsInteger = StrToInt(StringReplace(fMenu->Query->FieldDefs->Items[nItem]->Name, "VOTOS", "", oReplace));
fMenu->Auxiliar->Open();
pItem = Evolucion->Items->Add();
pItem->Caption = fMenu->Auxiliar->FieldByName("Sigla")->AsString;
if ((cColor = (TColor)fMenu->Auxiliar->FieldByName("Color")->AsInteger) == 0)
while (cColor > 0)
{
cColor = (TColor)RGB(random(255), random(255), random(255));
if (slColor->IndexOf(cColor) == -1)
break;
}
slColor->Add(cColor);
Chart2->AddSeries(&TLineSeries(Chart2));
Chart2->Series[Chart2->SeriesCount() - 1]->DataSource = fMenu->Query;
Chart2->Series[Chart2->SeriesCount() - 1]->SeriesColor = cColor;
Chart2->Series[Chart2->SeriesCount() - 1]->Title = pItem->Caption;
Chart2->Series[Chart2->SeriesCount() - 1]->XLabelsSource = "Fecha";
Chart2->Series[Chart2->SeriesCount() - 1]->XValues->ValueSource = "Codigo";
Chart2->Series[Chart2->SeriesCount() - 1]->YValues->ValueSource = fMenu->Query->FieldDefs->Items[nItem]->Name;
}
El problema viene precisamente en la definición de
XValues->ValueSource. Si lo dejo omo está, con
Código, al gráfica obtenida es esta:
Y al verdad no me parece una presentación muy elegante. Y si en vez de Código pongo el campo
Contador o
Fecha, el resultado es este:
Como veis sale vacío y no acabo de entender las razones para que haga esto. Como se ve en la leyenda de la gráfica en ambos casos está la misma información.