Gambas WebForm Tutoriales


Ir a la página 1, 2  Siguiente

Objetivo: 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.

Perfil MP  
Objetivo: Re: Gambas WebForm Tutoriales
Gracias Alessandri.

A ver si puedo contrastarla un poco con Java para ver diferencias en ciertos temas.

Saludos

Objetivo: 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

Perfil MP  
Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: 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.

Public Function Conectar() As Boolean ….


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.


objeto-conn-queda-en-null

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: 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.

web-text-box-tiene-el-dato-en-el-bavegador-pero-no-en-el-servidor

Perfil MP  
Objetivo: Re: Gambas WebForm Tutoriales
omoreno escribió: [Ver mensaje]
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.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.2478s (PHP: -27% SQL: 127%)
Consultas SQL: 28 - Debug off - GZIP Activado