Respuestas de foro creadas
-
AutorEntradas
-
Eduardo TrasviñaParticipante
Muchas gracias Alfredo.
Saludos!!
Eduardo TrasviñaParticipanteBien! Alfredo, se que encontraran una solucion practica a este tema.
Saludos!
Eduardo TrasviñaParticipanteBuen día.
Tengo el mismo comportamiento que reporto Xevi, esta es i definicion del listview.
y el html da esto.
Ya revise y confirme que tengo la version 1.3.5 de Nefele.
Eduardo TrasviñaParticipanteYa probe la configuracion de bancos.dbf, todo bien, ya funciono!!
Orale, ya revise en el wiki y esta documentado, se me paso 🙁
Muchas gracias Pedro.
Saludos!
Eduardo TrasviñaParticipanteLo hice asi como me lo indicaste.
y me arroja esto:
Pense que por alguna razon el archivo se corrompio, entonces lo copie de nuevo desde el zip de nefele samples 1-0-1-4 y obtuve el mismo resultado.
Por otro lado me puse a probar la conexion con MariaDB, lo hice con un proyecto mio, no tuve problemas, todo funciono bien, solo un par de comentarios.
1.- Deliberadamente cometi un error en el cSelect de una consulta, al ejecutarla no obtuve informacion (obvio) y el cgi siguio corriendo, me di cuenta mediante la consola de nefele que el cgi arrojo el siguiente mensaje.
Creo que debemos tener alguna manera de consultar los errores al ejecutar la conexcion, existe alguna funcion o metodo para obtenerlos ?
2.- Cuando corregi mi cSelect ya obtuve una respuesta, la envie a la consola de nefele, pero me aparecen varios renglones en blanco, en la reunion de hoy comentaron que hay que convertir (hash creo) a formato de array, tienen alguna funcion en nefele para esto ? en caso de no tenerlo podrias darme una sugerencia o ejemplo de como recuperar la informacion ?
De antameno gracias por sus respuestas.
Saludos!
Eduardo TrasviñaParticipanteGracias Pedro, el archivo bancos.db esta en c:\apache24\cgi-bin que es donde esta el cgi de samples, va en otro lado ?
Saludos!
Eduardo TrasviñaParticipanteGracias Alfredo, Pedro, todo solucionado.
Creo que estaba cometiendo errores básicos, hay veces que se cierran las ideas jeje.
Saludos!
Eduardo TrasviñaParticipanteHola.
Ejecute el Néfele Wizard como lo indicaste y funciono correctamente, gracias Alfredo.
Saludos!
Eduardo TrasviñaParticipanteGracias por tu pronta respuesta Alfredo.
Baje de nuevo el proyecto y ahora me da estos errores:
Saludos!!
Eduardo TrasviñaParticipanteListo! ya envie el documento en formato doc, se que con su aportación este documento se enriquecerá para el beneficio de todos en el foro.
Gracias por su tiempo.
Saludos Cordiales.
Eduardo TrasviñaParticipanteExcelente! Alfredo.
Buena noticia, estuve fuera del aire de Nefele unos dias por compromisos con otros proyectos, desde ayer regrese de lleno a Nefele.
Creo que como todos, espero atento la proxima reunion y/o liberacion de una nueva version de Nefele.
Como siempre, agradezco las respuestas y el tiempo que se toman para atender las peticiones.
Saludos!!
Eduardo TrasviñaParticipanteSi, claro, te anticipo que mis pantallas son muy basicas, no tengo grandes conocimientos en html, css, js, ajax.
Te cuento que tanto me gusto como hicieron y funciona Nefele que estoy haciendo un proyecto piloto sobre algo real tal vez ya un poco grande, es mas que un "hola mundo" jeje, pero de momento el paciente esta en quirofano no muy presentable todavia.
Voy a preparar alguna imagenes para compartir, con mucho gusto.
Aprovecho para comentar que el espacio que abrieron en este foro para los ejemplos esta buenisimo!!, los felicito.
Saludos!!
Eduardo TrasviñaParticipanteAunado al cambio que me señalaste le quite la propiedad :cAjaxBevel := "nflcargo" que tenia declarado en el ListView y asi ya funciono, solucionado Alfredo, mil gracias.
Saludos!!
Eduardo TrasviñaParticipanteGracias por tu rapida respuesta Alfredo.
Mi proyecto esta un poco grande, tiene dependencias de varias funciones que hacen llamadas a la base de datos (MariaDB), para hacerlo mas practico hice un pequeño proyecto, que solo tuviera la prueba de la descarga de PDF, en esta prueba mando llamar al evento de generacion y descarga de pdf desde diferentes eventos.
1.- llamada desde un ;:cOnClickEdit de un elemento de listview, NO funciono, observando con el inspector (F12) del navegador veo esto
2.- llamada desde un :cOnClick de un button, SI funciono, lo crea y lo descarga.
Comparto el codigo del proyecto de prueba, este es el MainPage.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177#include "Xailer.ch"#include "Nefele.ch"//------------------------------------------------------------------------------//Función principal de la app WebPROCEDURE MainPage()LOCAL adatos:={}, alineaAAdd(adatos,{"Juan lopez" , "Rio Fuerte" , "345" , "Caborca" , "6688231245"})AAdd(adatos,{"Salvador Perez" , "Av. insurgentes" , "4112", "Ciudad de Mexico", "5514359845"})AAdd(adatos,{"Francisco Apodaca", "Blvd. Antonio Rosales" , "33" , "Cd. Obregon" , "6482402519"})AAdd(adatos,{"Arturo Artola" , "Blvd. Francisco Madero", "555" , "Guadalajara" , "3332854604"})// Comenzamos instanciando la Página Web que queremos crearWith Object TWebPage():New():lValign := .f.:lContainer := .f.:lAlerts := .f.WITH object WPanel():New(:WO):cTitle := "Clientes":aWidth[ _grande ] := 10:aOffset[ _grande ] := 1:oStyle:cPadding := 0:oStyle:cBorder_radius := "10px"WITH OBJECT WForm():New( :WO ):cId := "forma_clientes":cFunction := "#alert('Saliendo')"WITH OBJECT WBevel():New(:WO):cId := "bevel_uno":nStyle := xc_RowWITH OBJECT WListView():New(:WO):cId := "lista_clientes":cType := xc_Popout:lTitleItem := .t.:nItemInPage := 8:cAjaxBevel := "nflcargo"for each alinea IN adatosWITH OBJECT :AddItem() AS wItemListView:cId := alinea:__enumindex:cIcon := "person":cTitle := alinea[1]:nRowId := alinea[1]:cIconEdit := "edit":lEdit := .t.:cOnClickEdit := "envia_pdf":aText := {"Calle: "+alinea[2], "Numero: "+alinea[3], "Ciudad: "+alinea[4], "Telefono: "+alinea[5]}END WITH // ITEM DE LISTVIEWNEXT:Create()END WITH:Create()END WITHWITH OBJECT WBevel():New(:WO):cId := "bevel_dos":nStyle := xc_RowWITH object WEdit():New( :WO ):cId := "cliente":cHint := ".":cTitle := "cliente":nLength := 4:Create()END WITHWITH object WEdit():New( :WO ):cId := "nombre":cHint := ".":cTitle := "Nombre":nLength := 50:Create()END WITH:Create()END WITHWITH object WButton():New(:WO):cText := "es el submit":cIcon := "addbox":lLarge := .T.:lSubmit := .T.:nFix := "100%":cOnClick := "envia_pdf":Create()ENDWITH object WButton():New(:WO):cText := "Genera PDF":cIcon := "pdf":lLarge := .T.:nFix := "100%":cOnClick := "envia_pdf":Create()END:Create()END WITH // Form:Create()END WITH // Listview principaloCgi:SendPage( :Create() ) // Se crea el HTML final y se envía al navegador saliendo del ejecutable CGIEnd WithRETURN//------------------------------------------------------------------------------CLASS TFastReport FROM XFastReportPROPERTY cDllPath INIT Application:cDirectory // Se debe especificar el Path de la DLLPROPERTY cResIco INIT "aaSistema" // Se especifica Icono para que FastReport No lo busque por default en Application:oMainForm:oIcon porque truenaEND CLASS//------------------------------------------------------------------------------FUNCTION envia_pdf()LOCAL oFr, cpaso, cfile, cerroresoCGI:console("En prueba_impresion, antes de iniciar objeto fr")cfile := "orale.pdf" // Se almacena el nombre del archivo en variable, porque si se manda directamente No lo crea: SetProperty("PDFExport", "FileName", ::oDataSet:FilePDF)WITH OBJECT oFr := TFastReport():New():lAbortOnErrors := .t.:cResIco := "nefele":lDelFRVars := .T.:Create():oEngineOptions:lSilentMode := .t. // EVITA QUE: Si hay errores FR intenta presentarlos en pantalla y ocasiona que se congele el CGI (mejor se consulten los errores con :cLastError):cFileName := "primero.fr3":AddVariable("nombre", "prueba de campo nombre"):AddVariable("segundo", "segunda linea"):PrepareReport():SetProperty( "PDFExport", "ShowDialog", .F. ):SetProperty( "PDFExport", "FileName", cfile ):SetProperty( "PDFExport", "Compressed", .T. ):SetProperty( "PDFExport", "EmbeddedFonts", .T. ) // En TRUE aumenta mucho el tamaño del PDF:SetProperty( "PDFExport", "PrintOptimized",.T. ) // En TRUE aumenta mucho el tamaño del PDF:SetProperty( "PDFExport", "Subject", "Pruebas Lalo" ):DoExport( "PDFExport" )cerrores := aJoin(:GetErrors):End()END WITHIF Empty(cerrores)oCGI:console(Application:cDirectory)oCGI:SendFile(Application:cDirectory, cfile)ELSEoCGI:console(cerrores)oCGI:SendPage( cerrores)ENDIFoCGI:console("En prueba_impresion, ya enviada la exportacion")RETURN (nil)//------------------------------------------------------------------------------Este es el Main.
1234567891011121314151617181920212223242526272829#include "Xailer.ch"#include "Nefele.ch"//------------------------------------------------------------------------------//Arranque y parametrización del CGI. Cada vez que se llama al CGI entra por aquíPROCEDURE CGI_Init()// Instanciamos el Objeto TCGI que se encargara de procesar la llamada recibida desde el navegador y// que nos ha suministrado Apache al llamar al ejecutableoCgi := TCgi():New()// Ejecutamos el objectooCgi:Run()RETURN//------------------------------------------------------------------------------// El RUN anterior entra por aquí y llama al Method correspondienteClass TCgi FROM XCgi// Este es nuestro Router para evitar inyección de código malicioso y aportar la máxima seguridad.// Solo se permite la llamada a los Method de oCgi aquí nombrados que a su vez llaman a Procedure, Function o Method'sMETHOD MainFunction() Inline MainPage()METHOD envia_pdf() Inline envia_pdf()END CLASS//------------------------------------------------------------------------------Aprovechando el espacio, si pudieran orientarme en como hacer que lo abra en el mismo navegador chrome, que no lo descargue.
gracias por su tiempo y las atenciones.
- Esta respuesta fue modificada 4 años, 1 mes por Alfredo Sanz.
Eduardo TrasviñaParticipanteListo! Gracias Alfredo, funciona a la perfeccion, ya lo probe en mi proyecto real y anda de maravilla!.
Ahora a dar unos toques de color y otras menudencias, pero eso ya esta de mi lado, algo tengo que hacer yo jeje.
Como siempre, las respuestas precisas y cordiales, no cambien equipo Nefele. 🙂
Saludos!!
Eduardo TrasviñaParticipanteHola equipo nefele.
He probado mi proyecto inicial con el servidor Apache sin problema, solo tuve que configurar Apache en otro puerto ya que tenia instalado IIS en mi equipo utilizando el puerto 80, mi duda es si para probar con IIS tengo que cambiar algo en el proyecto o en alguna configuracion especial para cgi en IIS ?
De antemano gracias por su tiempo.
Saludos!
Eduardo TrasviñaParticipanteMuchas gracias por el material, he avanzado algo lento pero convencido del valor que tiene Nefele, afortunadamente nuestro amigo Israel Solis me tiro cable y he podido hacer algo, espero la siguiente entrega que tengan bien a publicar.
Saludos Cordiales.
Eduardo TrasviñaParticipanteHola Alfredo, Ramon, soy nuevo en este foro, estoy interesado en esta herramienta, si es posible me gustaria asistir a la reunion sobre nefele programada al parecer para este 20 de agosto, soy de Mexico.
-
AutorEntradas