PDA

Ver la Versión Completa : Refrescar datos luego de un SP_insert


FlacoNet
12-01-2005, 21:22:52
hola a todos...
les presento el caso a continuacion
estoy trabajando con ADO y ODBC con postgres...
y estoy intentanto poner TODA la logica de datos y restriccion en el servidor por medio de funciones de postgres (procedimientos almanecedos)..
Es decir...tengo ...

* sp_select_provincias
* sp_insert_provincias
* sp_delete_provincias
* sp_update_provincias

para cada tabla y grilla de datos...La custion es que estoy utilizando (corrijanme si estoy equivocado) el componente TADOQUERY para ejecutar los procedimientos de select y los TADOStoredProc para los insert, delete y update.
A los ABM los hago cargando valores sobre la grilla y antes del POST (BEFOREPOST) tomo los valores del TADOQUERY que esta en modo [dsinsert,dsedit] , ejecuto el correspondiente procedimiento sobre la base de datos y ABORTO por que el POST me daria error. Una vez hecho esto se ingresa el valor a la base de datos perfectamente.. :D
:confused: :confused: :confused: El problema es que si bien tengo el valor en la base de datos, en la grilla no lo tengo y no me queda otra que hacer un refresh de toda la tabla siendo miles de registros y se hace lento....
Hay alguna forma de consultar solo por el que se acaba de ingresar??? de manera de no traer los miles de registros de nuevo??? A este problema lo tiene muy bien solucionado fibplus...con su sentencia REFRESHSQL..donde incluye en su consulta la clausula WHERE con el codigo de la fila recien ingresada.

Muchas gracias y espero que alguien me de una mano----

:cool:

marcoszorrilla
12-01-2005, 21:31:31
En los ADO tienes Requery, lo que no sé porque nunca se me ha ocurrido hacer la prueba es si se trae otra vez todos los registros o símplemente actualiza la consulta, pruébalo y nos cuentas si te sirve.

Un Saludo.

FlacoNet
13-01-2005, 01:26:47
En los ADO tienes Requery, lo que no sé porque nunca se me ha ocurrido hacer la prueba es si se trae otra vez todos los registros o símplemente actualiza la consulta, pruébalo y nos cuentas si te sirve.

Un Saludo.

la defincion del metodo acepta un param de tipo TExecuteOptions, como sigue:

procedure Requery(Options: TExecuteOptions = []);
type
TExecuteOption = (eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking, eoExecuteNoRecords);
TExecuteOptions = set of TExecuteOption;


para ser sincero y leido y no entiendo para que sirven dicho parametro..no le encuentro utilizadad...ademas..solo funciona el valor eoAsyncFetch por que el resto me da error,....
Ah...al parecer me consulta TODOS los registros por que tiene cierta demora....y al ser una TADOQUERY me posisiona el puntero del conjunto de datos al principio...Me gustaria que lo posicione en el recien creado o ingresado luego del requery pero no funciona...lei en la VCL que hay veces que lo que quiero hacer no es posible ...Se me acurrio hacer un LOCATE o SEEK del codigo del articulo para posicionar el cursor pero la verdad que se que es una ANIMALADA...

se te ocurre algo para posicionar el cursor en el ultimo activo???

Mil gracias y por favor no dejen morir el tema..