FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
exportar de un ADOQuery a Excel
Hola comunidad.
Necesito exportar de un ADOQuery a Excell realice una busqueda en google y encontre un tema en el archivo del foro donde previamente se trato copie el codigo cambie lo que indica el ejemplo para que se adecue a mi codigo y me devuelve este error, la verdad no tengo idea de la razon. Si alguien lo ha echo antes y puede indicarme seria genial Código:
//declaracion de variables Variant XL,v0,v1,v2,v3; //abres excel XL=Variant::CreateObject("excel.application"); //la abres con la ventana visivle o si tiene false la ventana es invisible XL.OlePropertySet("Visible", true); //abre el archivo C:\\mi_archivo.xls, se puede "SaveAs" en lugar de "Open" para crear en lugar de abrir XL.OlePropertyGet("Workbooks").OleProcedure("Open", "C:\\mi_archivo.xls"); //abres la hoja1 en este caso llamada reporte v0=XL.OlePropertyGet("Sheets", "Reporte"); v1=v0.OlePropertyGet("Cells"); //aqui pones el nombre de las columnas que vas usar de la BD String columnas[6]={"ueb", "expediente", "fecha_pago", "orden", "convenio", "salario_total"}; //qq es un query ya con una consulta hecha ADOQuery1->First(); for (int i = 1; i <= ADOQuery1->RecordCount; i++) { for (int ii = 0; ii < 6; ii++) { //se va escribiendo dato por dato v1.OlePropertyGet("Cells", i+4, ii+1).OlePropertySet("Value", ADOQuery1->FieldByName(columnas[ii])->AsString); } ADOQuery1->Next(); } XL.OlePropertySet("DisplayAlerts", false); XL.OleProcedure("Save"); XL=Unassigned; Código:
--------------------------- Debugger Exception Notification --------------------------- Project VB.exe raised exception class EOleSysError with message 'Tipo de variable incorrecto'. Process stopped. Use Step or Run to continue. --------------------------- OK Help ---------------------------
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#2
|
||||
|
||||
Hay otra opción por si la quieres probar, que a mi me resulta más sencilla. Se trata de conectar a Excel usando un ADOTable. De esa forma lees de un sitio y vas insertando en el otro (lees en el ADOQuery e insertas en el ADOTable).
Aquí puedes ver cómo "montar" la conexión hacia el EXCEL.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
he probado y me conecto bien, pero todavia no logro completar el SQL del ADOQuery y con el ADOTable no me deja agregar en TableName si me puedes poner un ejemplo seria de gran ayuda !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#4
|
||||
|
||||
El Tablename si no recuerdo mal, era el nombre de la hoja.
Si haces una búsqueda en los foros por "ADO* Excel" sin comillas salen bastantes temas al respecto. Incluso en el FTP tienes varios ejemplos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
no me deja me devuelve un error esta ves en el FROM parece de la sentencia SQL. Con el ADOQuery consulto bien pero no me deja guardar usando el DBNavigator me dice:
Código:
--------------------------- Debugger Exception Notification --------------------------- Project Project1.exe raised exception class EOleException with message '[Microsoft][Controlador ODBC Excel] La operación debe usar una consulta actualizable'. Process stopped. Use Step or Run to continue. --------------------------- OK Help ---------------------------
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#6
|
||||
|
||||
¿Puedes poner la consulta que utilizas para cargar datos y para guardarlos?
Piensa que si realizas una consulta que involucra varias tablas, luego no puedes editar esos datos directamente (consulta no actualizable) porque no sabría qué datos meter en cada tabla.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
||||
|
||||
Saludos
El problema de la consulta no actualizable es que me faltaba un parámetro en la conexión ADO, y parece ser un problema bastante global hehehehe. Asi quedo la cadena conexión: Código:
Provider=MSDASQL.1;Persist Security Info=False;Mode=ReadWrite;Extended Properties="DBQ=C:\mi_archivo.xls;Driver={Microsoft Excel Driver (*.xls)};DriverId=790;MaxBufferSize=2048;PageTimeout=5;ReadOnly=0;" Código:
/* http://www.clubdelphi.com/foros/showthread.php?t=10866 */ Variant Excel,Libro,Hoja,Celda; Excel = CreateOleObject("Excel.Application"); Excel.OlePropertySet("Visible", true); Libro=Excel.OlePropertyGet("Workbooks"); Libro.OleProcedure("Add"); Hoja=Libro.OlePropertyGet("Item",1); Libro=Hoja.OlePropertyGet("Worksheets"); Libro.OlePropertyGet("Item",1).OlePropertySet("Name","Pago periodo "); //Libro.OlePropertyGet("Item",2).OlePropertySet("Name","The red book-keeping "); for (int j=1;j<3;j++) { Hoja=Libro.OlePropertyGet("Item",j); for (int i=1;i<11;i++) { Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,1).OlePropertySet("Value",i); Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,2).OlePropertySet("Value",i*5); Celda=Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",i,2); Celda.OlePropertyGet("Font").OlePropertySet("Color",clBlue); Celda.OlePropertyGet("Font").OlePropertySet("Bold",true); Celda.OlePropertyGet("Interior").OlePropertySet("ColorIndex",9-3*j); } Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",11,1).OlePropertySet("Value","=SUM(A1:A10)"); Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",11,2).OlePropertySet("Value","=SUM(B1:B10)"); } Excel.OlePropertySet("DisplayAlerts",false); //suppress the warning dialog on closing the server Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","test.xls"); Excel=Unassigned; Código:
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM [reporte$];"); ADOQuery1->Open(); Código:
ADOConnection1->Connected = true; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("INSERT INTO [reporte$] (nombre, apellidos, edad) VALUES ('"+Edit1->Text+"', '"+Edit2->Text+"', '"+Edit3->Text+"')"); ADOQuery1->ExecSQL(); ADOConnection1->Connected = false; ADOConnection1->Connected = true; ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("SELECT * FROM [reporte$];"); ADOQuery1->Open(); Espero que le sirva de ayuda a los próximos que lo intenten de todas formas pueden encontrar informacion de ayuda en el soporte que da microsoft y los ejemplos que pone para Visual Basic Cómo usar ADO con datos de Excel desde Visual Basic o desde VBA Cómo transferir datos desde un origen de datos ADO a Excel con ADO Cómo transferir datos de un objeto Recordset de ADO a Excel con automatización ExcelADO muestra cómo usar ADO para leer y escribir datos en libros de Excel
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ Última edición por lmpadron fecha: 26-09-2012 a las 16:20:31. |
#8
|
||||
|
||||
Ahora me queda un solo problema en el código que escribí, en el proyecto nuevo que cree funciona de lo mejor, pero cuando lo agrego al que estoy desarrollando de hace ya algún tiempo me devuelve un error
Código:
Variant Excel,Libro,Hoja,Celda; Excel = CreateOleObject("Excel.Application"); Excel.OlePropertySet("Visible", true); Libro=Excel.OlePropertyGet("Workbooks"); ............ este código esta en el post anterior Código:
[C++ Error] Unit7.cpp(665): E2268 Call to undefined function 'CreateOleObject' Código:
#pragma link "Excel_2K_SRVR"
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#9
|
||||
|
||||
Solucionado !!! solo necesitaba agregar la cabecera
Código:
#include <ComObj.hpp>
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
#10
|
|||
|
|||
Saludos Impadron
Puedes poner el codigo final de como te quedo tu codigo de exportar de un ADOQuery a Excel , serviria de mucha ayuda. Saludos |
#11
|
||||
|
||||
Cita:
Fue el que puse donde explique que se podía hacer a través del OleCreateObject creando una hoja de excel y después anexándole los valores como hace el del ejemplo o a traves del ADO. De paso cree otro post con otra pregunta pero relacionado con el código del CreateObject() ya que tengo problemas al pasar los valores desde variables. Saludos
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código. Cuando miras fijamente al abismo, este te devuelve la mirada oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_ oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_ oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_ oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_ oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_ ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_ ________________________________________________________________________________ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Exportar Excel a PDF | BuenaOnda | Varios | 1 | 18-02-2011 10:51:17 |
Exportar a Excel | jocey | Servers | 3 | 28-10-2008 22:33:28 |
Exportar a Excel | jocey | Varios | 3 | 06-11-2007 16:15:23 |
Exportar a Excel | Danielle | Impresión | 0 | 16-06-2006 18:04:55 |
Exportar a Excel | pruz | Varios | 8 | 01-07-2004 15:47:37 |
|