|
Página 1 de 2
|
Gambas WebForm Tutoriales
Autor |
Mensaje |
alessandri
Técnico Programador
Registrado: Abril 2010
Mensajes: 151
Edad: 42
|
Gambas WebForm Tutoriales
Hola amigos, aquí les presento una serie de viedeoturoriales
tratando de resumir algunos puntos presentados en mi libro.
Presentacion GB WebForm
Diseño de formularios
Primera aplicación
Solucionar Vulnerabilidades
Variables
Mensaje de Confirmación
Hojas de estilo CSS
Seguridad y Cookies
Mysql. Insert, Update, Delete, Select
Espero les sea útil.
Saludos, y que dios nos ayude a conservar la buena saludo, y que sane los que la han perdido.
|
#1 Sabado, 04 Abril 2020, 18:32 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Gambas WebForm Tutoriales
Gracias Alessandri.
A ver si puedo contrastarla un poco con Java para ver diferencias en ciertos temas.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Sabado, 04 Abril 2020, 23:19 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Gambas WebForm Tutoriales
Java no tiene nada que ver con la programación web, en principio. No confundir con Javascript y resto de frameworks basados en éste.
Los pilares de la programación web son HTML, CSS y Javascript del lado del cliente. En el servidor, cualquier lenguaje CGI es válido para comunicarse con el programa cliente y poder realizar operaciones de todo tipo, consultas a BD, cálculos, etc.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Domingo, 05 Abril 2020, 00:09 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Gambas WebForm Tutoriales
Jesús:
Citar:
Java no tiene nada que ver con la programación web, en principio. No confundir con Javascript y resto de frameworks basados en éste.
Java no es Javascript y viceversa.
En cuestión del CGI. Lo primero que leí, es que el servlet Java es más rápido.
"..Los Servlets Java presentan una serie de ventajas sobre los CGI, el método tradicional de desarrollo de aplicaciones web. Éstos son más portables, más potentes, mucho más eficientes, más fáciles de usar, más escalables, etc. "
Una referencia:
http://profesores.elo.utfsm.cl/~agv...la/pagina1.html
Pero claro estábamos hablando del año 2004 si vas a la página principal.
La idea de "contrastar" con Java es encontrar métodos comunes que se usa en gambas ( seguro que de una forma más fácil ).
Al igual que podemos decir la palabra "constructor" en poo y como se hace en distintos lenguajes.
Mi intención es comparar métodos que son iguales en distintos lenguajes.
¿ Entonces no viste nada del Java EE ?..Mmmm..ok, voy a crear un post y allí subo un vídeo.
En cambio el vídeo que voy a mostraros es del 2017
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Domingo, 05 Abril 2020, 14:27 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Gambas WebForm Tutoriales
Hola Alessandri.
Antes de nada, gracias por compartir estos videos.
Los he visto todos y he descargado el ejemplo que dejaste, el cual estoy estudiando.
En mi opinión, y siempre desde el punto de vista de WebForms, solo son interesantes los siguientes:
Presentacion GB WebForm
Diseño de formularios
Primera aplicación
Solucionar Vulnerabilidades
Variables
Mensaje de Confirmación
Hojas de estilo CSS
Seguridad y Cookies
Mysql. Insert, Update, Delete, Select
El resto podrían aplicarse al aprendizaje de gambas en general, seguramente para los que son noveles en este "mundo" de programar.
Bien, dicho esto ahora algunas preguntas.
¿Como se hace para "abrir" un webform desde un módulo de inicio?
En el ejemplo que subiste la tabla no es un control WebTable sino un WebHtml ¿A que se debe?
Saludos.
|
#5 Domingo, 05 Abril 2020, 15:17 |
|
|
omoreno
Usuario
Registrado: May 2020
Mensajes: 8
Edad: 52
|
Re: Gambas WebForm Tutoriales
Saludos.
Por ahora me parece que es verdaderamente rápido crear aplicaciones web con esta herramienta.
Estoy practicando en gambas 3.14 con: webform, webtable y mariadb.
Por lo que he leído, las webtables solo son para mostrar datos, se recomienda crear una tabla temporal en el servidor de base de datos para mantener los datos que se muestran en la webtable.
Basado en lo anterior, tengo una variable publica en un modulo:
Ademas de su respectiva Function con los atributos de conexión.
En un webform por medio de un webbutton llamo a la función que carga la webtable y funciona perfecto, luego en el evento _Select() de la webtable llamo a una consulta según el numero de registro, pero resulta que la variable conn ahora esta en Null, sospecho que todo los eventos reinician las variables locales y globales.
Como ya saben las en la base de datos las tablas temporales se borran al finalizar la session que la ha creado, entonces la pregunta es:
¿Existe alguna forma de mantener la conexión activa la base de datos, para que no se me borre la tabla temporal?
Esto es para evitar tener que cargar tablas en cada evento, en cada pantalla y en cada proceso…
Gracias por la ayuda que puedan brindarme.
|
#6 Viernes, 22 May 2020, 20:18 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Gambas WebForm Tutoriales
No tengo ninguna experiencia sobre estos tipos de código pero estoy al 90% de seguridad de que es imposible, estamos hablando de un hilo web y te aseguro que no es posible, en todo caso podrías crear cookies y guardar lo necesario para cuando accede un usuario, recuerde lo necesario para entrar con mas velocidad.
Como no se de este tipo de código no se si te ha servido de algo, pero bueno, te lo he dicho con la mejor intensión si no te sirvió o crees que no sirve para nada pues coméntame.
Saludos.
|
#7 Viernes, 22 May 2020, 20:33 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Gambas WebForm Tutoriales
Hola y bienvenido, omoreno
Tiene pinta de que la tabla temporal que creas en mariadb desaparece quizá porque la sesión caduca. Sólo por curiosidad, ¿has tratado de hacer el mismo ejemplo pero usando una tabla permanente? Si con tablas permanentes funciona siempre, eso corroboraría mi apreciación. Debe haber algún parámetro en la configuración de sesiones o tablas temporales que limita su tiempo de actividad.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#8 Sabado, 23 May 2020, 11:40 |
|
|
omoreno
Usuario
Registrado: May 2020
Mensajes: 8
Edad: 52
|
Re: Gambas WebForm Tutoriales
Gracias gambafeliz y jguardon por sus respuestas.
gambafeliz:
Probé el uso de sessiones, ciertamente me funciono tomar la columna de PK cedula y la converti en session["TCli-N"] y luego en el evento _Select() de la WebTable utilice el indice que me da la propiedad WebTable_Clientes.Current concatenado a "TCli-" y asi forme la key para obtener el valor de la variable de session y realizar procesos con el objeto WebTextBox.Text:
WebTxt_Cedula.Text = session["TCli-0"] ...
WebTxt_Cedula.Text = session["TCli-1"] ...
WebTxt_Cedula.Text = session["TCli-2"] ...
Pero el problema que tuve es que cuando deseaba eliminar todas esas variables de session, nunca me funcionaron ninguno de estos códigos:
Session.Modified = True
Session.Keys.Clear()
Session.Keys.Delete(0)
Session.Keys.Extract(1)
Me preocupa llenar el servidor con N cantidad de variables de session en cada uso de webtables y cada pantalla que la utilice
Bueno deje ese modelo para verificarlo después.
jguardon:
Con las tablas temporales es exactamente como comentas las mismas son eliminadas por que la conexión se cierra una vez que finaliza el proceso que invoca a la función Conectar().
Con las tablas permanentes, pues he tenido que realizar el llamado a la función Conectar() cada vez que requiera los datos, ya que cada vez que termina la Sub o Function, la variable de conexión queda en NULL.
Me mantuve con el 10% de esperanza que me había dejado gambafeliz referente a que si se pueda crear una variable de conexión activa, o con el comentario de jguardon de que algo este mal configurado y provoca que el tiempo de actividad este limitado, lo que tal vez hace que la variable de conexión se muera (NULL)....
No se si deba continuar en este mismo hilo de comentario, pero por el momento deje pendiente el uso de tablas temporales y el uso de sessiones para obtener los datos del webtable.
Me decidí a utilizar la función EXEC que puede ejecutar JavaScript, con la cual si puede obtener los datos de la WebTable, pero también tengo un consulta:
En un archivo de modulo llamado Mod_Webtable, codifique esta subrutina:
'Para extraer el valor de una celda de un WebTable y cargalo a un WebTextBox
Public Sub CellValueToTextBox(WebFormX As WebForm, WebTableX As WebTable, ColSel As Integer, WebControlX As WebTextBox)
'
Dim IdWebTableX As String = WebTableX.Name
Dim IdWebControlX As String = WebControlX.Name
'
Dim RowSel As Integer = WebTableX.Current
Dim TotCol As Integer
'
If WebTableX.ShowCheck Then
TotCol = 1 + WebTableX.Columns.Count 'Columna con el radiobox + total de columnas con data
Else
TotCol = WebTableX.Columns.Count 'Total de columnas con data
Endif
Dim PosCell As Integer = ColSel + RowSel * TotCol 'Posicion de la celda a seleccionar.
'
Dim Xjavascript As String
Xjavascript = "var idWebTableX = '" & IdWebTableX & "';" &
"var poscell = " & PosCell & ";" &
"var idWebControlX = '" & IdWebControlX & "'; " &
"var table = document.getElementById(idWebTableX), cells = table.getElementsByTagName('td');" &
"var dato = cells[poscell].innerHTML;" &
"document.getElementById(idWebControlX + ':entry').value = dato;" &
"gw.update(idWebControlX,'text', dato);"
WebFormX.Exec(Xjavascript)
'
End
Luego en el evento Select() del Webtable, codifique estas lineas:
Public Sub WebTable_Clientes_Select()
'
If WebTable_Clientes.Current = -1 Then
WebTxt_Cedula.Text = ""
Return
Endif
'
Mod_WebTable.CellValueToTextBox(Me, WebTable_Clientes, 1, WebTxt_Cedula)
Mod_WebTable.CellValueToTextBox(Me, WebTable_Clientes, 2, WebTxt_Nombre)
Mod_WebTable.CellValueToTextBox(Me, WebTable_Clientes, 3, WebTxt_Dir)
Mod_WebTable.CellValueToTextBox(Me, WebTable_Clientes, 4, WebTxt_Tel)
'
Catch
Message.Error(Error.Code & "<br>" & Error.Text, "OK")
'
End
Con esto se puede trabajar bien, pero por curiosidad cambie el código del evento _Select() para que solo asignara el dato de la columnas cédula y el resto los buscara en la base de datos (tabla clientes) y mi sorpresa fue que el WebTextBox recibe el datos con el javascript en el navegador, pero en el servidor la propiedad WebTextBox.Text esta vacía….
Public Sub WebTable_Clientes_Select()
'
If WebTable_Clientes.Current = -1 Then
WebTxt_Cedula.Text = ""
Return
Endif
'
'
Mod_WebTable.CellValueToTextBox(Me, WebTable_Clientes, 1, WebTxt_Cedula)
'
'
If Mod_Conn.Conectar() Then
Dim XRes As Result
XRes = Mod_Conn.conn.Find("clientes", "WHERE cedula_cli = &1", WebTxt_Cedula.Text) '<--- sale vacío
If XRes.Available Then
'
XRes.MoveFirst
WebTxt_Nombre.Text = XRes["nombre_cli"]
WebTxt_Dir.Text = XRes["direccion_cli"]
WebTxt_Tel.Text = XRes["telefono_cli"]
WebCmb_Sexo.Index = XRes["sexo_cli"]
'
Activa_Editar()
Activa_Campos(True)
WebTxt_Nombre.SetFocus()
'
Else
'
Activa_Campos(False)
Message.Info("La cedula:<h2><pre>" & WebTxt_Cedula.Text & "</pre></h2>No existe ", "OK")
'
Endif
Endif
'
Catch
Message.Error(Error.Code & "<br>" & Error.Text, "OK")
'
End
¿Por que la función gw.update(id, propiedad, valor ) ; no actualiza el objeto en el servidor o me falta algo?
Que le falta a esto:
gw.update(idWebControlX,'text', dato);
Gracias por la ayuda que puedan brindarme.
|
#9 Domingo, 24 May 2020, 00:10 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Gambas WebForm Tutoriales
Gracias gambafeliz y jguardon por sus respuestas.
gambafeliz:
Probé el uso de sessiones, ciertamente me funciono tomar la columna de PK cedula y la converti en session["TCli-N"] y luego en el evento _Select() de la WebTable utilice el indice que me da la propiedad WebTable_Clientes.Current concatenado a "TCli-" y asi forme la key para obtener el valor de la variable de session y realizar procesos con el objeto WebTextBox.Text:
WebTxt_Cedula.Text = session["TCli-0"] ...
WebTxt_Cedula.Text = session["TCli-1"] ...
WebTxt_Cedula.Text = session["TCli-2"] ...
Pero el problema que tuve es que cuando deseaba eliminar todas esas variables de session, nunca me funcionaron ninguno de estos códigos:
Session.Modified = True
Session.Keys.Clear()
Session.Keys.Delete(0)
Session.Keys.Extract(1)
Me preocupa llenar el servidor con N cantidad de variables de session en cada uso de webtables y cada pantalla que la utilice
Hooola omoreno, mira yo voy a mi bola y no te he hecho mucho caso, no te rias, es que me abstraigo y suelo ir a mi bola, otros dirian que estoy medio chiflao.
Yo he probado las sesiones y si, si funcionan e incluso bien. ¿Sabias que en un campo de una sesión puedes guardar información en JSON?
Esto te da ilimitadas posibilidades como guardar bases de datos, actualizaciones, Grabaciones, objetos e incluso código muy complejo.
Ya te lo he contado ahora aplica con máxima imaginación por tu parte.
Saludos, joven.
|
#10 Domingo, 24 May 2020, 12:40 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|