Grabar registros masivos con SQLTP

06/08/2005 - 04:35 por Mauricio Cruz | Informe spam
Hola Foro,
Tengo un sistema de inventarios con visual fox 9 y sql server 2000

Tengo una vista para la tabla de cabecera del documento, movimiento de
productos, y el catalogo de productos donde llevo el control de los
stocks, el stock lo llevo en el catalogo de productos para poder mostrar
lo mas rapido el stock actual de cada producto en el momento q estoy
haciendo un egreso o ingreso.

Bien:
Desde visual fox, cree dos vistas remotas para las dos primeras tablas,
cuando grabo los movimientos tengo que actualizar las existencias de cada
producto:

*
select movientos
nConexion=slqconnect("conexion")
sqlexecute(nConexion,"begin")
scan
nCantidad=cantidad*tipmov
sqlexecute(nConexion,"update productos set stock=stock+(?nCantidad)")
endscan
sqlexecute(nConexion,"commit trans")
*

Todo esto esta probado y reprobado, funciona perfecto
Hay forma de hacer con SQLTP este proceso pero con una solo envio, y no de
uno en uno como en este ejemplo, pues mi sistema trabaja en red y cuando
tengo unos 200 y 300 movimientos de productos al grabar se siente
considerablemente el rendimiento, pues demora en grabar, sobre todo desde
los terminales que estan conectados por una red WAN

Muchas Gracias por su cololaboracion

Mauricio Cruz

Mauricio Cruz
Solinfotech
Guayaquil-Ecuador


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway

Preguntas similare

Leer las respuestas

#1 Rafael Cano
07/08/2005 - 19:27 | Informe spam
Mauricio Cruz escribió:
Hola Foro,
Tengo un sistema de inventarios con visual fox 9 y sql server 2000

Tengo una vista para la tabla de cabecera del documento, movimiento de
productos, y el catalogo de productos donde llevo el control de los
stocks, el stock lo llevo en el catalogo de productos para poder mostrar
lo mas rapido el stock actual de cada producto en el momento q estoy
haciendo un egreso o ingreso.

Bien:
Desde visual fox, cree dos vistas remotas para las dos primeras tablas,
cuando grabo los movimientos tengo que actualizar las existencias de cada
producto:

*
select movientos
nConexion=slqconnect("conexion")
sqlexecute(nConexion,"begin")
scan
nCantidad=cantidad*tipmov
sqlexecute(nConexion,"update productos set stock=stock+(?nCantidad)")
endscan
sqlexecute(nConexion,"commit trans")
*

Todo esto esta probado y reprobado, funciona perfecto
Hay forma de hacer con SQLTP este proceso pero con una solo envio, y no de
uno en uno como en este ejemplo, pues mi sistema trabaja en red y cuando
tengo unos 200 y 300 movimientos de productos al grabar se siente
considerablemente el rendimiento, pues demora en grabar, sobre todo desde
los terminales que estan conectados por una red WAN

Muchas Gracias por su cololaboracion

Mauricio Cruz

Mauricio Cruz
Solinfotech
Guayaquil-Ecuador


PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway


Lo único que se me ocurre es que a la orden update le pongas la claúsula
WHERE con el nombre el id de clave primaria para que el update vaya
directamente al registro, y no tarde. Te recomendaría que el cursor de
trabajo usases un campo estado que te digiese que el registro ha sido
modificado, y así no tener que hacer una orden SQL por cada registro
aunque este no se haya modificado.

SELECT Movimientos
nConexion = SlqConnect("conexion")
SqlExecute(nConexion,"begin")
SCAN ALL FOR Movimientos.Modificado
nCantidad = cantidad * tipmov
Id = Movimientos.ClavePpal && Campo que forma la clave primaria.
sqlexecute(nConexion,"UPDATE productos SET stock = stock + ?nCantidad
WHERE Productos.ClavePPal = ?id")
ENDSCAN
SqlExecute(nConexion,"commit trans")


Salu2 Rafael Cano

Jaén - España
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida