Cita:
Empezado por ecfisa
Revisa que tu consulta SQL esté arrojando al menos un resultado. De no ser así, el combo estará vacío y de allí el error "índice fuera del límite".
|
El query sí devuelve un resultado; de hecho ha de devolver sólo un resultado. Es que además el problema no es ese. El combo se carga con seis elementos en el OnCretae del formulario y los valores son fijos mientras se ejecuta y cuando empiezo a recorrer el bucle, con el primer valor (
nItem = 0) se ejecuta bien y como el resultado de la consulta es diferente del object pasa al segundo (nItem = 1), y es en ese momento cuando salta el error: al comparar el valor de la consulta con el object, es como si tratara de ir un índice más allá de lo que corresponde
He probado otra cosa:
Código:
for (int nItem = 0; nItem < Combo->Items->Count; nItem ++)
{
Valor = (long)(TObject*)Combo->Items->Objects[nItem];
if (Valor == Query->FieldByName("Situacion")->AsInteger)
{
Combo->ItemIndex = nItem;
break;
}
}
y me da el mismo error. Sin embargo, si recorro el combo con este código:
Código:
AnsiString Cadena;
long Valor;
for (int i = 0; i < Combo->Items->Count; i++)
{
Cadena = Combo->Items->Strings[i];
Valor = (long)(TObject*)Combo->Items->Objects[i];
ShowMessage("Cadena:" + Cadena + "\nValor: " + IntToStr(Valor));
}
Me muestra los seis valores que tiene cargados el elemento.