Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   range check error (https://www.clubdelphi.com/foros/showthread.php?t=49237)

thelibmx 16-10-2007 20:51:34

range check error
 
hola amigos, me he encontrado con este problemita, busque en los foros un poco y creo que no encontre mucho al respecto, este codigo que utilizo lo saque de aqui del foro y funciona bien, pero me he encontrado con una sorpresa ahora, estoy llenando un combobox en tiempo de ejecucion, en otras pantallas que tengo en el mismo programa si funciona pero en una que tengo no, me manda un mensaje de range check error, lo que yo quiero hacer es sacar diferentes años que se encuentran almacenados en una tabla, y que me los muestre en un combobox, para posteriormente hacer un filtro por esos años encontrados, aqui esta el codigo que utilizo

Código Delphi [-]
procedure TFormquincena.Button3Click(Sender: TObject);
var
Count1,pos: Cardinal;
text: string;
begin
 
    Pos := ComBoxselectoranio.SelStart;
    ComBoxselectoranio.Items.Clear;
    Text := ComBoxselectoranio.Text;
 
fs.Query_catalogo_quincenasmod.Close;
fs.Query_catalogo_quincenasmod.SQL.Clear;
fs.Query_catalogo_quincenasmod.SQL.Add('select DISTINCT anio from catalogo_quincenas');
fs.Query_catalogo_quincenasmod.ExecSQL;
fs.Query_catalogo_quincenasmod.Open;
 
 Count1:=fs.Query_catalogo_quincenasmod.RecordCount;
  showmessage(inttostr(count1));

    if Count1 > 0 then
     begin
      repeat Dec(Count1);
       ComBoxselectoranio.Items.Add(fs.Query_catalogo_quincenasmod.FieldByName 'anio').AsString);
       formconecciones.Queryregistrovaca.Next;
      until Count1 = 0;
      ComBoxselectoranio.ItemIndex := 0;
      ComBoxselectoranio.SelStart := Pos;
      ComBoxselectoranio.SelLength := 255;
    end;

end;

el error me lo manda en esta linea
Código Delphi [-]
 Count1:=formconecciones.Query_catalogo_quincenasmod.RecordCount;
range check error,
algo fuera de rango pero no identifico el error podrian ayudarme o darme una pista, si necesitan mas informacion pueden preguntar, les agradesco su ayuda :D

jhonny 16-10-2007 22:09:24

Bueno, parece que RecordCount tiene por defecto el valor -1 y un tipo Cardinal va desde 0 hasta 4294967295 por lo que -1 no estaria dentro de dicho rango ;). Una solución sería declarar Count1 como Integer, pero creo que el problema debe ser resuelto mas a fondo ya que ese RecordCount te debe estar devolviendo -1 y quiza no sea lo que esperas.

thelibmx 16-10-2007 23:35:23

en efecto si devuelve -1, no se por que, algun problema en la consulta de esas inexplicables paranormales de otro mundo, probablemente es de la ciencia paranormal de la informatica, en fin lo cambie a integer el cardinal y la la linea quedo asi
Código Delphi [-]
Count1:=fs.Query_catalogo_quincenasmod.RowsAffected;

asi hace lo que quiero, aunque no se cuales sean los probables efectos secundarios, pero hasta ahorita todo bien. gracias por la ayuda y hay que dejar bien en claro que:
Código SQL [-]
el mensaje de error que manda es por que en efecto regresaba de valor -1
bueno quiero suponer que fue eso... gracias jhonny

jhonny 16-10-2007 23:55:46

No quieras suponer que es eso, ya es seguro que a sido eso, debido a que -1 no esta dentro del rango de los Cardinales, hay que anotar que el RecordCount no funciona con todos los hijos del TDataSet, quizá esa sea la razón por la que te devuelve siempre -1 ;).


La franja horaria es GMT +2. Ahora son las 16:05:29.

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