Query-ADO-SQL-EXCEL

27/07/2006 - 18:54 por JC. | Informe spam
Tengo una tabla en un banco SQL Server y una consulta a dicha tabla con
Microsoft Query.
Necesito sumar el campo “Valor” de la tabla dependiendo si el campo “TIPO”
es 1(uno) o 0(cero) pero si es 0(cero) necesito convertir el valor del campo
a negativo antes de sumarlo.
Para esto utilizo la instrucción UNION ALL. Primero traigo los valores
positivos y después con el UNION ALL los negativos para posteriormente
sumarlos en Excel.
El punto es: 1- No existe en Microsoft Query (es decir en la instrucción
SQL) la opción para cambiar el valor del campo a negativo antes de sumarlo
(algo así como incluir un CASE) y así no tener que utilizar la instrucción
UNION ALL la cual me trae algunos problemas de forma (perdida de nombre de
campos).
2- Existe la posibilidad de ejecutar una instrucción TRANSACT-SQL desde MS
QUERY????
3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS
QUERY???
4- Si las tres anteriores son negativas la única Opción es ADO???

Preguntas similare

Leer las respuestas

#1 incanato
27/07/2006 - 22:25 | Informe spam
Hola amigos, como estan , hablando de excel ,les envio una consulta,
actualmente yo acceso a informacion de un archivo de excel, que esta
cerrado, desde otro que esta abierto en red mediante:
cnnExcel.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=D:\Mis
documentos\archivo.xls;" & _
"FirstRowHasNames=0;"

Set SQL.ActiveConnection = cnnExcel

este archivo esta cerrado
desde otro archivo en red(jalador.xls), yo jalo la informacion que hay
en D:\Mis documentos\archivo.xls de otra maquina
el problema es que en archivo.xls, tengo una tabla de excel de 64
columnas, y lo curioso es que he probado jalar datos, y solo me jala
hasta la columna 15!!, la 16,17,18, me sale error en odbc, o bien no me
sale nada, pero lo mas curioso es que he ido probando, y me jala las
columnas 42,44,48,50,51,52,53,54,56,57,59,60 y 62, nada mas, las demas
columnas me sale error
No entiendo!!!


Tengo una tabla en un banco SQL Server y una consulta a dicha tabla con
Microsoft Query.
Necesito sumar el campo "Valor" de la tabla dependiendo si el campo "TIPO"
es 1(uno) o 0(cero) pero si es 0(cero) necesito convertir el valor del campo
a negativo antes de sumarlo.
Para esto utilizo la instrucción UNION ALL. Primero traigo los valores
positivos y después con el UNION ALL los negativos para posteriormente
sumarlos en Excel.
El punto es: 1- No existe en Microsoft Query (es decir en la instrucción
SQL) la opción para cambiar el valor del campo a negativo antes de sumarlo
(algo así como incluir un CASE) y así no tener que utilizar la instrucción
UNION ALL la cual me trae algunos problemas de forma (perdida de nombre de
campos).
2- Existe la posibilidad de ejecutar una instrucción TRANSACT-SQL desde MS
QUERY????
3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS
QUERY???
4- Si las tres anteriores son negativas la única Opción es ADO???
Respuesta Responder a este mensaje
#2 Gustav Holst
28/07/2006 - 18:16 | Informe spam
Hola!

A ver si te soy de ayuda. A mi me da que te toma la primera fila como
cabecera, aunque hayas puesto el parámetro "FirstRowHasNames=0", y estoy
adivinando puede que tengas esas columnas conflictivas sin ningún dato
en la primera fila.
¿Has probado a poner una primera fila con nombres para las columnas?



incanato escribió:
Hola amigos, como estan , hablando de excel ,les envio una consulta,
actualmente yo acceso a informacion de un archivo de excel, que esta
cerrado, desde otro que esta abierto en red mediante:
cnnExcel.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=D:\Mis
documentos\archivo.xls;" & _
"FirstRowHasNames=0;"

Set SQL.ActiveConnection = cnnExcel

este archivo esta cerrado
desde otro archivo en red(jalador.xls), yo jalo la informacion que hay
en D:\Mis documentos\archivo.xls de otra maquina
el problema es que en archivo.xls, tengo una tabla de excel de 64
columnas, y lo curioso es que he probado jalar datos, y solo me jala
hasta la columna 15!!, la 16,17,18, me sale error en odbc, o bien no me
sale nada, pero lo mas curioso es que he ido probando, y me jala las
columnas 42,44,48,50,51,52,53,54,56,57,59,60 y 62, nada mas, las demas
columnas me sale error
No entiendo!!!


Tengo una tabla en un banco SQL Server y una consulta a dicha tabla con
Microsoft Query.
Necesito sumar el campo "Valor" de la tabla dependiendo si el campo "TIPO"
es 1(uno) o 0(cero) pero si es 0(cero) necesito convertir el valor del campo
a negativo antes de sumarlo.
Para esto utilizo la instrucción UNION ALL. Primero traigo los valores
positivos y después con el UNION ALL los negativos para posteriormente
sumarlos en Excel.
El punto es: 1- No existe en Microsoft Query (es decir en la instrucción
SQL) la opción para cambiar el valor del campo a negativo antes de sumarlo
(algo así como incluir un CASE) y así no tener que utilizar la instrucción
UNION ALL la cual me trae algunos problemas de forma (perdida de nombre de
campos).
2- Existe la posibilidad de ejecutar una instrucción TRANSACT-SQL desde MS
QUERY????
3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS
QUERY???
4- Si las tres anteriores son negativas la única Opción es ADO???



Respuesta Responder a este mensaje
#3 Héctor Miguel
28/07/2006 - 20:30 | Informe spam
hola, JC !

1) [creo que] seria mas... 'ilustrativo', si expones como ha quedado la cadena de texto con la instruccion sql en ms-query -?-

2) de la exposicion que haces [se entiende que], en la BD tienes...
a) un campo [valores] con numeros 'repersentados' -todos- como positivos
b) un campo [tipo] que, cuando es 0 [cero] el numero [del campo 'valor'] debe ser convertido a negativo

3) [en excel] es sumamente sencillo realizar este tipo de conversiones [p.e.]
a) 'tomas' el valor positivo 'convertido' a negativo y...
b) lo multiplicas por la unidad-negativa 'elevada' a la potencia 'tipo' [0 /1] ejemplo:
= -Valor * -1 ^ Tipo o...
= -Valor * ( -1 ^ Tipo )
c) la diferencia entre una 'forma' y otra, pudiera 'radicar' en que [para excel] el orden/precedente de los operadores es +/- logico
potencia/raiz se resuelven antes que multiplicacion/division... y estas a su vez, antes que suma/resta
[es probable que las operaciones en otras aplicaciones requieran parentesis para didentificar operaciones de 'nivel superior'] -?-

4) si puedes modificar/agregar/icluir/... este tipo de instrucciones en la sentencia sql que estas utilizando... ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... una tabla en... SQL Server y una consulta... con Microsoft Query.
... sumar el campo "Valor"... dependiendo si el campo "TIPO" es 1 (uno) o 0 (cero)
... si es 0 (cero)... convertir el valor del campo a negativo antes de sumarlo
... traigo los... positivos y... con el UNION ALL los negativos para posteriormente sumarlos en Excel.
El punto es:
1- No existe en Microsoft Query (...en la instruccion SQL) la opcion para cambiar el valor del campo a negativo antes de sumarlo
(algo asi como incluir un CASE) y asi no tener que utilizar la instruccion UNION ALL
la cual me trae algunos problemas de forma (perdida de nombre de campos).
2- Existe la posibilidad de ejecutar una instruccion TRANSACT-SQL desde MS QUERY????
3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS QUERY???
4- Si las tres anteriores son negativas la unica Opcion es ADO???
Respuesta Responder a este mensaje
#4 JC.
29/07/2006 - 02:31 | Informe spam
Hola Hector!

Tendria como hacer esta funcion de exponencial en MS query???. Lo intente
pero no pude, me da error.
Ese es el problema, porque no se cambiar el valor del campo "Valor" antes de
sumarlo. Por esta razon tengo que utilizar el UNION ALL -- Primer select los
positivos cuando campo "Tipo" es 1 y el segundo Select los convierto a
negativo cuando Tipo es 0. Asi me "llevo" los valores a Excel y los sumo en
una tabla dinamica.
Pero quiero realizar la suma de los valores en el QUERY antes de traerme los
datos a Excel, pues me ahorro muchos inconvenientes posteriores.

JC.




"Héctor Miguel" wrote:

hola, JC !

1) [creo que] seria mas... 'ilustrativo', si expones como ha quedado la cadena de texto con la instruccion sql en ms-query -?-

2) de la exposicion que haces [se entiende que], en la BD tienes...
a) un campo [valores] con numeros 'repersentados' -todos- como positivos
b) un campo [tipo] que, cuando es 0 [cero] el numero [del campo 'valor'] debe ser convertido a negativo

3) [en excel] es sumamente sencillo realizar este tipo de conversiones [p.e.]
a) 'tomas' el valor positivo 'convertido' a negativo y...
b) lo multiplicas por la unidad-negativa 'elevada' a la potencia 'tipo' [0 /1] ejemplo:
= -Valor * -1 ^ Tipo o...
= -Valor * ( -1 ^ Tipo )
c) la diferencia entre una 'forma' y otra, pudiera 'radicar' en que [para excel] el orden/precedente de los operadores es +/- logico
potencia/raiz se resuelven antes que multiplicacion/division... y estas a su vez, antes que suma/resta
[es probable que las operaciones en otras aplicaciones requieran parentesis para didentificar operaciones de 'nivel superior'] -?-

4) si puedes modificar/agregar/icluir/... este tipo de instrucciones en la sentencia sql que estas utilizando... ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... una tabla en... SQL Server y una consulta... con Microsoft Query.
> ... sumar el campo "Valor"... dependiendo si el campo "TIPO" es 1 (uno) o 0 (cero)
> ... si es 0 (cero)... convertir el valor del campo a negativo antes de sumarlo
> ... traigo los... positivos y... con el UNION ALL los negativos para posteriormente sumarlos en Excel.
> El punto es:
> 1- No existe en Microsoft Query (...en la instruccion SQL) la opcion para cambiar el valor del campo a negativo antes de sumarlo
> (algo asi como incluir un CASE) y asi no tener que utilizar la instruccion UNION ALL
> la cual me trae algunos problemas de forma (perdida de nombre de campos).
> 2- Existe la posibilidad de ejecutar una instruccion TRANSACT-SQL desde MS QUERY????
> 3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS QUERY???
> 4- Si las tres anteriores son negativas la unica Opcion es ADO???



Respuesta Responder a este mensaje
#5 Héctor Miguel
29/07/2006 - 05:51 | Informe spam
hola, JC !

Tendria como hacer esta funcion de exponencial en MS query???. Lo intente pero no pude, me da error.
Ese es el problema, porque no se cambiar el valor del campo "Valor" antes de sumarlo.
Por esta razon tengo que utilizar el UNION ALL -- Primer select los positivos cuando campo "Tipo" es 1
y el segundo Select los convierto a negativo cuando Tipo es 0. Asi me "llevo" los valores a Excel
y los sumo en una tabla dinamica.
Pero quiero realizar la suma de los valores en el QUERY antes de traerme los datos a Excel
pues me ahorro muchos inconvenientes posteriores.



1) puedes utilizar -al menos- dos formas para 'convertir' [como si utilizars filtros] algunos valores a negativos segun 'condiciones'

a) podrias 'editar' la cadena con la sentencia SQL que genera la consulta a tu base de datos [p.e.]
agregando la condicion dentro de la clausula SELECT +/- como sigue:
-> suponiendo que en la cadena sql [que no te has animado a exponer] contiene algo +/- como lo siguiente:
SELECT <.etc.> Nombre_de_tu_tabla.Valores <.etc.>
-> podrias 'complementarla' con algo +/- como lo siguiente:
SELECT <.etc.> Nombre_de_tu_tabla.Valores * Iif(Nombre_de_tu_tabla.Tipo=0,-1,1) <.etc.>

b) podrias utilizar una columna adyacente al rango 'devuelto' por ms-query con una formula que 'convierta' a negativos los 'convertibles'
[+/- como la sugerencia del mensaje anterior]
{+} -> copias/arrastras/... dicha formula al resto de las filas en el rango de la extraccion
{+} -> haces un click-secundario sobre alguna celda 'dentro' del rango de extraccion
{+} -> seleccionad [del menu contextual] la opcion de: -> 'propiedades del rango de datos'
{+} -> marcas/habilitas/... la ultima opcion en el dialogo: -> autorellenar formulas en columnas adyacentes'
-> la siguiente vez que actualices la consulta, dicha columna [y su formula] se ajustara el rango devuelto por la consulta ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ las consultas anteriores __
1) [creo que] seria mas... 'ilustrativo', si expones como ha quedado la cadena de texto con la instruccion sql en ms-query -?-

2) de la exposicion que haces [se entiende que], en la BD tienes...
a) un campo [valores] con numeros 'repersentados' -todos- como positivos
b) un campo [tipo] que, cuando es 0 [cero] el numero [del campo 'valor'] debe ser convertido a negativo

3) [en excel] es sumamente sencillo realizar este tipo de conversiones [p.e.]
a) 'tomas' el valor positivo 'convertido' a negativo y...
b) lo multiplicas por la unidad-negativa 'elevada' a la potencia 'tipo' [0 /1] ejemplo:
= -Valor * -1 ^ Tipo o...
= -Valor * ( -1 ^ Tipo )
c) la diferencia entre una 'forma' y otra, pudiera 'radicar' en que [para excel] el orden/precedente de los operadores es +/- logico
potencia/raiz se resuelven antes que multiplicacion/division... y estas a su vez, antes que suma/resta
[es probable que las operaciones en otras aplicaciones requieran parentesis para didentificar operaciones de 'nivel superior'] -?-

4) si puedes modificar/agregar/icluir/... este tipo de instrucciones en la sentencia sql que estas utilizando... ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... una tabla en... SQL Server y una consulta... con Microsoft Query.
> ... sumar el campo "Valor"... dependiendo si el campo "TIPO" es 1 (uno) o 0 (cero)
> ... si es 0 (cero)... convertir el valor del campo a negativo antes de sumarlo
> ... traigo los... positivos y... con el UNION ALL los negativos para posteriormente sumarlos en Excel.
> El punto es:
> 1- No existe en Microsoft Query (...en la instruccion SQL) la opcion para cambiar el valor del campo a negativo antes de sumarlo
> (algo asi como incluir un CASE) y asi no tener que utilizar la instruccion UNION ALL
> la cual me trae algunos problemas de forma (perdida de nombre de campos).
> 2- Existe la posibilidad de ejecutar una instruccion TRANSACT-SQL desde MS QUERY????
> 3- Puedo ejecutar un Procedimiento almacenado en el SQL Server desde MS QUERY???
> 4- Si las tres anteriores son negativas la unica Opcion es ADO???
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida