![]() |
Lentisima la conexion con DB2 del AS400
Estoy intentando acceder a las tablas del AS400, con las instruccion tipica' While Not EOF Do ', y tarda mas de 30 seg. en responder y con las instrucciones GotoKey y GotoNearest no lo he podido conseguir.
¿ Alguien conoce alguna manera mas rapida de acceso ?, y respecto al GotoKey y GotoNearest empleo la misma forma que uso con Paradox, ¿ por que no funciona ?. Gracias |
Qué componentes utilizas (BDE u otros)? Que tipo de conexión (ODBC, acceso nativo,.....)?
Yo utilizo un acceso nativo (ClientObject 400) via los componentes del BDE y, el Table.Eof o FindKey o Locate o SetRange,....... los utilizo sin problemas |
Ante todo gracias por tu ayuda.
Ultilizo componentes BDE y la conexion ODBC, ( desconozco los accesos nativos ), y como te he comentado el Table.eof tarda muchisimo, el resto quizas sea de que no los empleo con la adecuada correccion, pues, las tablas a las que intento acceder tienen varios indices y yo solo busco a traves de uno de ellos; quizas este sea el motivo de que no aparecen el resultado adecuado. Un saludo |
Pero que es lo que te tarda, la verificación de Eof o el recorrido por la tabla (el Next)?
Es decir while not Tabla.Eof do es esto lo que te tarda y por cada registro? sólo al final cuando realmente se cumple la condición? o bien al hacer Tabla.Next; dentro del bucle? También podrías mirar la capacidad del As400. Si está demasiado lleno (del 80%-85% en adelante), esto podría provocar lentitud en el sistema. |
Estas son las instrucciones, tardan en encontrar la informacion.
With Table2 DO Begin First; While Not EOF Do Begin If Table2CODART.Value = Edit1.Text Then Begin Edit2.Text:=Table2CODART.Value; Edit3.Text:=Table2DESART.Value; end; Next; Y este grupo de instrucciones no me localizan el reg. adecuado, sale otro que no tiene nada que ver con lo que busco. ( La tabla tiene 2 indices y yo solo busco a traves de uno ). Table2.Active:=True; Table2.SetKey; Table2.FieldByName('CODART').AsString:=copy(Edit1.text,1,length(Edit1.text)); Edit2.text:=Table2.FieldByName('CODART').AsString; Table2.GotoKey; end; Perdona por las molestias, un saludo |
Con lo que respecta al bucle, parece todo correcto, prueba a mirar lo de la capacidad que te comentaba anteriormente
Lo del SetKey, prueba a cambiarlo por un FindKey (nunca he utilizado el SetKey, pero con FindKey no he tenido ningún problema) Código:
Table2.Open; |
La franja horaria es GMT +2. Ahora son las 02:01:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi