Ayuda con Excel y SQL Server

01/08/2003 - 20:23 por Miguel Cazares | Informe spam
Muy buenas tengan todos ustedes..

Tengo una consulta que hacer para haber si alguien me puede ayudar.

Tengo una macro que por medio del codigo me traigo el nombre de un empleado,
pero quisiera hacer por medio del numero tecleado en una celda. como se
podria hacer eso.

tengo este codigo

cnx.ConnectionString = "driver={SQL Server};" & _
"server=servidor;uid=sa;pwd=sa;database=nomina"
cnx.CommandTimeout = 30
cnx.Open
Set rst = New ADODB.Recordset
strsql = "Select * from t0016 where Mb_Epr_cod='PRO' and emp_nie“2"
rst.CursorType = adOpenDynamic
rst.Open strsql, cnx, , , adCmdText
Do While Not rst.EOF
Worksheets("Hoja1").Range("C2") = rst!Emp_patern
Worksheets("Hoja1").Range("C3") = rst!emp_matern
rst.MoveNext
Loop
rst.Close
cnx.Close

pero aqui es todo rigido, quisiera hacer por tipo de empresa y el numero de
empleado, dependiendo de valor de la celda X que contenga la empresa y la
celda Y que contenga el empleado. y con eso traerme sus nombre etc etc.

Como seria?

Gracias por su Ayuda

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
01/08/2003 - 22:11 | Informe spam
Puedes modificar la línea que asigna la instrucción SQL, algo como:

strsql = "Select * from t0016 where Mb_Epr_cod='" & Worksheets("HojaDondeEstáX").CeldaX &"' and emp_nie=" & Worksheets("HojaDondeEstáY").CeldaY

La pregunta es: ¿cuándo habría que extraer el registro de la base de datos SQL?. Tienes varias opciones, pero en principio parece que lo lógico sería que dicha extracción se produjera al modificar alguna de las dos celdas, o ambas. Pero sin saber mejor lo que necesitas no puedo decirte mucho más.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Miguel Cazares" escribió en el mensaje news:%
Muy buenas tengan todos ustedes..

Tengo una consulta que hacer para haber si alguien me puede ayudar.

Tengo una macro que por medio del codigo me traigo el nombre de un empleado,
pero quisiera hacer por medio del numero tecleado en una celda. como se
podria hacer eso.

tengo este codigo

cnx.ConnectionString = "driver={SQL Server};" & _
"server=servidor;uid=sa;pwd=sa;database=nomina"
cnx.CommandTimeout = 30
cnx.Open
Set rst = New ADODB.Recordset
strsql = "Select * from t0016 where Mb_Epr_cod='PRO' and emp_nie“2"
rst.CursorType = adOpenDynamic
rst.Open strsql, cnx, , , adCmdText
Do While Not rst.EOF
Worksheets("Hoja1").Range("C2") = rst!Emp_patern
Worksheets("Hoja1").Range("C3") = rst!emp_matern
rst.MoveNext
Loop
rst.Close
cnx.Close

pero aqui es todo rigido, quisiera hacer por tipo de empresa y el numero de
empleado, dependiendo de valor de la celda X que contenga la empresa y la
celda Y que contenga el empleado. y con eso traerme sus nombre etc etc.

Como seria?

Gracias por su Ayuda


Respuesta Responder a este mensaje
#2 Miguel Cazares
02/08/2003 - 04:16 | Informe spam
Fernando..

Ya pude hacer traer los datos de la tabla de SQL, pero resulta que me
calcula todos los empleados de la hoja y se tarda un rato en cargarlo, como
seria que nomas una celda? o nomas donde quiera, con un F2 por ejemplo


"Fernando Arroyo" escribió en el mensaje
news:
Puedes modificar la línea que asigna la instrucción SQL, algo como:

strsql = "Select * from t0016 where Mb_Epr_cod='" &
Worksheets("HojaDondeEstáX").CeldaX &"' and emp_nie=" &
Worksheets("HojaDondeEstáY").CeldaY

La pregunta es: ¿cuándo habría que extraer el registro de la base de datos
SQL?. Tienes varias opciones, pero en principio parece que lo lógico sería
que dicha extracción se produjera al modificar alguna de las dos celdas, o
ambas. Pero sin saber mejor lo que necesitas no puedo decirte mucho más.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Miguel Cazares" escribió en el mensaje
news:%
Muy buenas tengan todos ustedes..

Tengo una consulta que hacer para haber si alguien me puede ayudar.

Tengo una macro que por medio del codigo me traigo el nombre de un


empleado,
pero quisiera hacer por medio del numero tecleado en una celda. como se
podria hacer eso.

tengo este codigo

cnx.ConnectionString = "driver={SQL Server};" & _
"server=servidor;uid=sa;pwd=sa;database=nomina"
cnx.CommandTimeout = 30
cnx.Open
Set rst = New ADODB.Recordset
strsql = "Select * from t0016 where Mb_Epr_cod='PRO' and emp_nie“2"
rst.CursorType = adOpenDynamic
rst.Open strsql, cnx, , , adCmdText
Do While Not rst.EOF
Worksheets("Hoja1").Range("C2") = rst!Emp_patern
Worksheets("Hoja1").Range("C3") = rst!emp_matern
rst.MoveNext
Loop
rst.Close
cnx.Close

pero aqui es todo rigido, quisiera hacer por tipo de empresa y el numero


de
empleado, dependiendo de valor de la celda X que contenga la empresa y la
celda Y que contenga el empleado. y con eso traerme sus nombre etc etc.

Como seria?

Gracias por su Ayuda


Respuesta Responder a este mensaje
#3 Fernando Arroyo
02/08/2003 - 11:47 | Informe spam
Para que sólo te traiga los datos de un empleado tendrás que añadirle campos a la claúsula WHERE. Yo pensaba que Mb_Epr_cod era la empresa y emp_nie algún tipo de código para el empleado, pero está claro que no es así. Si la tabla SQL tiene algún código para los empleados, puedes usar ese campo, algo como:

Select * from t0016 where Mb_Epr_cod='" & Worksheets("HojaDondeEstáX").CeldaX &"' and emp_nie=" & Worksheets("HojaDondeEstáY").CeldaY & "codigo_empleado='" & Worksheets("HojaDondeEstáY).CeldaY & '"

Un saludo.


Fernando Arroyo
MS MVP - Excel



"Miguel Cazares" escribió en el mensaje news:
Fernando..

Ya pude hacer traer los datos de la tabla de SQL, pero resulta que me
calcula todos los empleados de la hoja y se tarda un rato en cargarlo, como
seria que nomas una celda? o nomas donde quiera, con un F2 por ejemplo


"Fernando Arroyo" escribió en el mensaje
news:
Puedes modificar la línea que asigna la instrucción SQL, algo como:

strsql = "Select * from t0016 where Mb_Epr_cod='" &
Worksheets("HojaDondeEstáX").CeldaX &"' and emp_nie=" &
Worksheets("HojaDondeEstáY").CeldaY

La pregunta es: ¿cuándo habría que extraer el registro de la base de datos
SQL?. Tienes varias opciones, pero en principio parece que lo lógico sería
que dicha extracción se produjera al modificar alguna de las dos celdas, o
ambas. Pero sin saber mejor lo que necesitas no puedo decirte mucho más.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Miguel Cazares" escribió en el mensaje
news:%
> Muy buenas tengan todos ustedes..
>
> Tengo una consulta que hacer para haber si alguien me puede ayudar.
>
> Tengo una macro que por medio del codigo me traigo el nombre de un
empleado,
> pero quisiera hacer por medio del numero tecleado en una celda. como se
> podria hacer eso.
>
> tengo este codigo
>
> cnx.ConnectionString = "driver={SQL Server};" & _
> "server=servidor;uid=sa;pwd=sa;database=nomina"
> cnx.CommandTimeout = 30
> cnx.Open
> Set rst = New ADODB.Recordset
> strsql = "Select * from t0016 where Mb_Epr_cod='PRO' and emp_nie“2"
> rst.CursorType = adOpenDynamic
> rst.Open strsql, cnx, , , adCmdText
> Do While Not rst.EOF
> Worksheets("Hoja1").Range("C2") = rst!Emp_patern
> Worksheets("Hoja1").Range("C3") = rst!emp_matern
> rst.MoveNext
> Loop
> rst.Close
> cnx.Close
>
> pero aqui es todo rigido, quisiera hacer por tipo de empresa y el numero
de
> empleado, dependiendo de valor de la celda X que contenga la empresa y la
> celda Y que contenga el empleado. y con eso traerme sus nombre etc etc.
>
> Como seria?
>
> Gracias por su Ayuda
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida