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.