Visual Basic - en tiempo de ejecucion una consulta sql en excell

Life is soft - evento anual de software empresarial
 
Vista:

en tiempo de ejecucion una consulta sql en excell

Publicado por paulina solsal (9 intervenciones) el 31/10/2005 22:21:47
Es decir, si yo creo en tiempo de ejecucion una sentencia SQL(usando por ejemplo un datacombo o listbox), y que el resultado me lo de en excell ( pero no se como). El esquema de la consulta debe estar predefinido.
les agradeceria muchisisisisiisisisimo su ayuda!!!!.
AH por supuesto estoy usando el visual basic
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:en tiempo de ejecucion una consulta sql en exce

Publicado por Arnaldo (53 intervenciones) el 01/11/2005 01:31:03
Hola, te mando un ejemplo de una consulta que terminas de definir por seleccion de un combo y un ListBox.
En el ComboBox se encuentran los nombres de los directores (Supongamos que no existen nombres repetidos de directores). En el list Box, una lista de Maestros sin Apellidos repetidos (aunque puede existir en mi base de datos).
Cuando uno selecciona a un Director y a Un Maestro de la Lista
Me envia a Excel la informacion del Maestro o los Maestros que tiene igual apellido y pertenecen a un director determinado.
'---------------------------------------------------------------------------------------------------------
Private Sub Command1_Click ()

Cn as New ADODB.connection
Rs as New ADODB.Recordset
Dim SQL as String

SQL = "SELECT Docentes.Nombre, Docentes.Apellido, Docentes.Telefono, Docentes.Direccion, Directores.Director " _
& "FROM Docentes INNER JOIN Directores ON Docentes.FK = Directores.PK "
& "WHERE Apellido = ' " & List1.Text & " ' ) " _
& "AND Director = ' " & combo2.text & " ' ) " _
& "ORDER BY Docentes.Apellido; "

Cn.Open "DSN=Nomb_Archivo.mdb"
Rs.CursorType = adOpenStatic
Rs.LockType = adLockBatchOptimistic
Rs.Open SQL, cn, , adLockBatchOptimistic

IF Rs.EOF = False Then
DetectExcel

'Supongamos que tenes una plantilla diceñada y queres que los datos se
'carguen en ella.

Set mixl = GetObject("c:\NombArchivo_Excel.xls")
mixl.Application.Visible = True
mixl.Parent.Windows(1).Visible = True
Set wkbobj = GetObject("C:\NombArchivo_Excel.xls")

Rs.MoveFirst
Dim Kp as integer
Kp = 2
With wkbobj.Worksheets(2) 'Conexion con la Tabla Excel Tabla 2
WHILE Rs.EOF=False
.Range("A" & kP).Value = Rs.Fields(0).Value 'Celda Nombre
.Range("B" & kP).Value = Rs.Fields(1).Value 'Celda Apellido
.Range("C" & kP).Value = Rs.Fields(3).Value 'Celda Telefono
.Range("D" & kP).Value = Rs.Fields(0).Value 'Celda Direccion
Rs.moveNext
Kp = Kp +1
WEND
Set mixl = Nothing
Rs.close
Set Rs=Nothing
End If
END SUB
'------------------------------------------------------------------------------------------------------
Sub DetectExcel()
' El procedimiento detecta que Excel está en ejecución y lo registra.
Const WM_USER = 1024
Dim hWnd As Long
' Si se está ejecutando Excel, esta llamada a la API devuelve el controlador.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 quiere decir que Excel no se está ejecutando .
Exit Sub
Else
' Excel se está ejecutando, por lo que se utiliza la función SendMessage de la API
' para introducirlo en la tabla Running Object.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub

'-------------------------------------------------------------------------------------------------------
'Modulo podes agregar uno y lo copias tal cual.
' Declara las rutinas API necesarias:

Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long _
, ByVal wParam As Long _
, ByVal lParam As Long) As Long

Public intRows 'Numero de filas para el grafico
'----------------------------------------------------------------------------------------------------

El libro de excel cuenta con tres hojas y nosotros enviamos la informacion a la hoja numero 2.
Bueno Espero que el ejemplo te sea de ayuda.

Arnaldo.

A.A.V
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