Ver Mensaje Individual
  #27 (permalink)  
Antiguo 04/08/2005, 10:43
Avatar de u_goldman
u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Si te entendi correctamente:

1. Tu cliente te da un txt que debes vaciar en la tabla factura
2. Tu tienes una tabla con articulos
3. Los datos que te da el cliente tiene un cierto ID por articulo
4. La datos que tienes en tu tabla articulos tienen otro ID, aun si son el mismo articulo
5. Solo coincide la descripcion(aunque muy bien pudiera no coincidir)
6. Necesitas actualizar la tabla factura con el ID interno de tu aplicacion, pues tienes otros procesos.
7. Para identificar tus articulos utilizas el campo descripcion que en una tabla es un nvarchar de 50 y en la otra un nvarchar de 60
8. Para ello tomas toods los articulos de la tabla articulos y haces un loop preguntando por cada registro que la descripcion coincida con la descripcion de la tabla factura.
9. Si coincide, actualizas el campo ¿¿articulo?? en tu tabla factura con lo que traiga tu campo ¿¿clave?? en la tabla articulos
10. ¿Ninguno de los campos estan indexados?

Si todo es correcto, la solucion tiene que ser facil, primeramente, como te dije desde los primeros posts, necesitaras indexar tus tablas, o asignarle los indices correctos, veo que la tabla factura tiene un campo llave id, que seguramente es un entero secuencial que no utilizas para nada.

Lo siguiente, es que a la tabla articulos le asignes un campo llave que tendra que ser si o si el campo clave, ademas tienes que agregar a la tabla articulos el id externo de ese articulo, como te dije, la comparacion por descripcion es demasiado suceptible de error y poco eficiente.

Finalmente la logica sera la misma, tendras que traer todos los articulos de la tabla articulos, metelos en un arreglo con GetRows como te lo di ayer, recorre ese arreglo y busca el campo interno, y actualizas un campo mas que asignaras a la tabla facturas para tus procesos internos, el cual contendra el valor del ID interno.

Con esto tu proceso se tiene que hacer muchisimo mas ligero.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway