SQL - Cursores? o se podra de otra manera?

   
Vista:

Cursores? o se podra de otra manera?

Publicado por Efren Garcia (21 intervenciones) el 14/03/2008 23:25:29
Hola Foro, les explico mi problema a ver si alguien tiene una mejor solucion: Tengo lo siguiente
* SQL Server 2000
* C# ASP.net

Importo un archivo de excel a SQL y tengo que validarlo, el archivo importado contiene lo siguiente:

EMPID Account Expense EXP_DESC
105 70370 15,000 CONECTOR P/MANGUERA DE TEFLON C/MALLA PROTECTORA
104 70371 16,000 KIT ORING GRAHAM #300231
105 70372 10,000 GRIND LEAD SET FP-1722 SET/2 EACH

Ahora necesito validar que el archivo que se esta importando este correcto. Esto es que el ID del empleado columna (EMPID) concuerde con el numero de CTA columna (ACCOUNT). Para ello tengo una tabla donde tengo relacionadas las cuentas a los empleados de la siguente manera:

EMPID ACCOUNT DESCRIPTION
103 70349 TAXES- STATE & LOCAL
103 70312 MAINTENANCE SUPPLIES -BLDG
104 70312 MAINTENANCE SUPPLIES -BLDG
1810 70312 MAINTENANCE SUPPLIES -BLDG
100 70242 MAINTENANCE - EQUIPMENT ( Ptakick )
104 70314 MAINTENANCE SUPPLIES - TOOLING

Como lo harian ustedes?
Yo lo hice con cursores y si funciona pero he leido que no es lo mas optimo en programacion SQL ya que consume muchos recursos. Alguna idea?

Notas:
* Los empleados pueden tener mas de una cuenta
* Una cuenta puede tener mas de un empleado

En si solo quiero poner una lista con el numero de empleado y si esta correcta la validacion algo como esto

EMPID Account STATUS
105 70370 OK
104 70371 OK
105 70372 ERROR EN CASO DE QUE LA CUENTA NO FUERA DE ESE EMPLEADO.

GRACIAS DE ANTEMANO...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cursores? o se podra de otra manera?

Publicado por Isaias (5073 intervenciones) el 19/03/2008 01:50:06
No comentas nada sobre cual es proceso de "subir" dicha informacion, pero supongo que primero la "subes" en una tabla de "paso", para despues validar que existan en tu tabla de la lista de empleados.

(si ambas columnas son de tipo char)

SELECT * FROM #tabla_paso where (EMPID+Account) IN (SELECT (EMPID+Account) FROM TuListaEmpleados)

De no ser char, realiza la conversion con CONVERT

Nota: IN = Los que existen, NOT IN = los que no existen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cursores? o se podra de otra manera?

Publicado por Efren Garcia (21 intervenciones) el 19/03/2008 18:09:34
Isaias muchas gracias, me sirvio bastante tu ejemplo :) y por lo que preguntaste de como lo subo tengo una rutina en C# que hace la exportacion del archivo de excel a una tabla temporal la cual despues de validarla la borro.

Gracias por tu ayuda..

Efren
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cursores? o se podra de otra manera?

Publicado por Isaias (5073 intervenciones) el 19/03/2008 20:21:32
De ahi mi pregunta, SQL SERVER, no requiere de "terceros" para la IMPORTACION/EXPORTACION, cuenta con su propio servicio DTS (Data Trasnformation Services).

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar