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

#6 incanato
31/07/2006 - 16:46 | Informe spam
HOla gustav holst, hice lo que me sugeriste, pero lamentablemente sale
igual error, te mando aqui el codigo completo:
(en un archivo excel " Jalador.xls")
Dim cnnExcel As New ADODB.Connection
Dim SQL As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim A As String
Dim B As Integer
B = ActiveCell.Row
Dim C As String
cnnExcel.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=D:\Mis
documentos\CONTROL.xls;" & _
"FirstRowHasNames=0;"

Set SQL.ActiveConnection = cnnExcel


A = "'" & Range("B3").Value & Range("C3").Value & "'"
C = "Select cliente from tabla WHERE Codigo="
C = C & A

SQL.CommandText = C
rs.Open SQL
On Error Resume Next
Workbooks("Libro4.XLS").Sheets("Hoja1").Range("d4").Value rs.Fields(0).Value
'Workbooks("Libro4.XLS").Sheets("Hoja1").Range("e4").Value rs.Fields(1).Value


If Err.Number = 3021 Then
Workbooks("Libro4.XLS").Sheets("Hoja1").Range("d4").Value rs.Fields(0).Value
' Workbooks("Libro4.XLS").Sheets("Hoja1").Range("e4").Value rs.Fields(1).Value


End If


rs.Close



cnnExcel.Close

End Sub

Mi archivo control tiene 64 columnas, en la parte del codigo de: Select
cliente, supuestamente "cliente" es el nombre del campo que
supuestamente el excel escoge como los datos en la primera fila, el
error esta en que Select "campo", supuestamente el codigo me debe jalar
cuando escribo cualquiera de los 64 campos de mi tabla excel, pero el
codigo me jala datos solamente de las primeras 15 columnas, y de ahi,
me jala, por saltos (42,44,48,50,51,52,53,54,56,57,59,60 y 62,),
pareceria que el excel, tiene limitaciones para jalar datos de una base
de datos en excel, sera asi??, a proposito ese codigo para desbloquear
celdas es fantastico!!
Saludos
Gustav Holst wrote:
Mostrar la cita
#7 JC.
01/08/2006 - 16:33 | Informe spam
Hola Hector!

Te envio mi Query(la cual es muy sencilla) porque me da error cuando realizo
lo que me dices.

SELECT Substring(cuenta,1,4), Tabla3.cuenta, Tabla3.tit_cta,
(Tabla1.Valor*Tabla2.tasa) * Iif (Tabla1.Tipo=0,1,-1)
FROM Tabla1, Tabla2, Tabla3
WHERE …

Me da el error de que existe una sintaxis incorrecta cerca del '=' y que la
sentencia no pudo ser preparada.

JC

"Héctor Miguel" wrote:

Mostrar la cita
#8 Gustav Holst
03/08/2006 - 18:42 | Informe spam
Pues no sé, aunque no domino mucho el VB no veo problemas en tu código,
excepto el "FirstRowHasNames" que lo podría a 1 para indicarle que la
primera fila es 1 cabecera.


incanato escribió:
Mostrar la cita
Ads by Google
Search Busqueda sugerida