Ver Mensaje Individual
  #19  
Antiguo 24-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elistraus,

Cita:
Empezado por elistraus
...Como que falla el Eof...hay manera de debuggear...


Revisa este código:
Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
    Table : TClientDataset;
    i : Integer;
 
 begin
 
    Table := TClientDataset.Create(Application);
    Table.FieldDefs.Add('Nombre', ftString, 50, False);
    Table.FieldDefs.Add('Clave', ftString, 50, False);
    Table.FieldDefs.Add('Activo', ftString, 2, False);
    Table.FieldDefs.Add('BD', ftString, 20, False);
    Table.CreateDataset;
    Table.Open;
 
    for i := 0 to 2 do
    begin
 
       ZConnection1.HostName := ADatabases[i];
       ZConnection1.Port := 6306;
       ZConnection1.Database := 'mibd';
       ZConnection1.User := 'user';
       ZConnection1.Password := 'pass';
       ZConnection1.Protocol := 'mysql-5';
 
       ZQuery1.Connection := ZConnection1;
       with ZQuery1 do
       begin
 
          Close;
          SQL.Clear;
          SQL.Text := 'Select Nombre, Clave, Activo From Tabla';
          Open;
 
          while not Eof do
          begin
             Table.Append;
             Table.FieldByName('Nombre').AsInteger := ZQuery1.FieldByName('Nombre').Value;
             Table.FieldByName('Clave').AsString := ZQuery1.FieldByName('Clave').Value;
             Table.FieldByName('Activo').AsDateTime := ZQuery1.FieldByName('Activo').Value;
             Table.FieldByName('BD').AsDateTime := ADatabases[i];
             Table.Post;
             Next;
          end
 
       end;
 
       ZConnection1.Disconnect;
 
    end;
 
    DataSource1.DataSet := Table;
 
    DBGrid1.DataSource := DataSource1;
 
    for i := 0 to Table.Fields.Count - 1 do
       DBGrid1.Columns.Items[i].Width := Table.Fields[i].DisplayWidth + 100;
 
 end;
Pregunto : ¿Ves el ámbito de la sentencia with ZQuery1 do?, es decir : ¿Ves la cobertura del begin-end de dicha sentencia?, compárala con el código del Msg #18, ¿ves la relación con el I/O error?.

Te comento:

1- Usa adecuadamente la identación (Espacios y línea en blanco), esto aumenta notablemente la legibilidad del código.

2- La simplicidad es fundamental en programación.

3- Lee este documento : Debugging Delphi Programs - Marco Cantu

Para finalizar:
Cita:
Empezado por Tim Peters en El Zen de Python

- Bello es mejor que feo.
- Explícito es mejor que implícito.

- Simple es mejor que complejo.

- Complejo es mejor que complicado.

- Plano es mejor que anidado.

- Disperso es mejor que denso.

- La legibilidad cuenta.

- Los casos especiales no son tan especiales como para quebrantar las reglas.

- Aunque lo práctico gana a la pureza.

- Los errores nunca deberían dejarse pasar silenciosamente.

- A menos que hayan sido silenciados explícitamente.

- Frente a la ambigüedad, rechaza la tentación de adivinar.

- Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.

- Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.

- Ahora es mejor que nunca.

- Aunque nunca es a menudo mejor que ya mismo.

- Si la implementación es difícil de explicar, es una mala idea.

- Si la implementación es fácil de explicar, puede que sea una buena idea.

- Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!


Tomado de : Python
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 24-09-2014 a las 10:31:31.
Responder Con Cita