Spanish Uso de base de datos con B4XTable

angel_

Well-Known Member
Licensed User
Longtime User
Estoy pensando en crear un pequeño programa en B4J en el que conecte a una base de datos alojada en un servidor, los usuarios consultarían la base de datos a través de un B4XTable de la aplicación B4J y aquí podrían modificar los registros de la base de datos, posiblemente haga un login que en función del usuario tenga acceso a determinados campos. La pregunta es para estas funciones ¿me serviría una base de datos SQLite (otra opción quizás)? ¿es viable ocultar/mostrar campos de B4XTable? alguna idea de como conectar B4XTable con la base de datos.
 

josejad

Expert
Licensed User
Longtime User
Hola Ángel:

Supongo que este ejemplo ya lo habrás visto.

Como indica Erel al principio
B4XTable.SetData expects a List where each entry in the list is an array of objects with the data of a single row.

The data can come from any source you like.

O sea, que puedes conectarte a la base de datos que quieras, y luego conviertes la entrada al formato que necesita la B4XTable para rellenar la tabla (una lista, en este caso).
La mejor forma sería traer los datos con jRDC2, luego la B4XTable a nivel interno lo que tiene es una sqlite, así que cuando cambies algún dato, sólo tendrás luego que enviar la consulta de vuelta con jRDC2 al servidor.

¿es viable ocultar/mostrar campos de B4XTable?
Sí, mira este ejemplo
 

angel_

Well-Known Member
Licensed User
Longtime User
La base de datos estará en un servidor local, necesito jRDC2?, como debería distribuir la aplicación en este caso? otra duda es que sucede si quiero añadir campos a la base de datos una vez creada ¿debo crear una nueva y volcar toda la información de una a otra base de datos?
 

josejad

Expert
Licensed User
Longtime User
Hola Ángel:
La base de datos estará en un servidor local, necesito jRDC2?

Sí, es la forma de acceder a la BBDD, independientemente de donde esté, local o en remoto. Ya sabes que tienes otros métodos, pero... Erel recomienda este.
No sé exactamente a qué te refieres con un servidor local. ¿Te refieres que será una intranet y los usuario accederán a través de la red local en vez de por internet? En cualquier caso, la respuesta sigue siendo "sí".

como debería distribuir la aplicación en este caso?
Tienes que correr tu servidor jRDC2 en un servidor (puede ser perfectamente el mismo en el que tienes alojada la base de datos) y abrir los puertos en el router (si van a acceder desde internet), o simplemente que tu aplicación apunte al ordenador donde está el servidor jRDC2 (en la variable rdclink, pondrías la ip del servidor).

otra duda es que sucede si quiero añadir campos a la base de datos una vez creada ¿debo crear una nueva y volcar toda la información de una a otra base de datos?
No hay problema, los añades, modificas tu config.properties en el servidor jRDC2 para que traiga los nuevos datos (en el caso de que hagas "SELECT * " pues no tendrías que hacer nada, ahora la consulta traería los nuevos datos también) y en tu app tendrás que mostrar los nuevos campos y ya está.

saludos,
 

angel_

Well-Known Member
Licensed User
Longtime User
Muchas gracias, lo voy viendo seguramente tendré alguna duda más
 

josejad

Expert
Licensed User
Longtime User
seguramente tendré alguna duda más
Aquí estaremos. A ver si me da tiempo de echarle un rato al ejemplo aquel que tenía de login con jRDC2 y eso, y lo hago con una B4XTable además de con el xCLV.
 

juangtju

Member
El Ejemplo de Jose Aguilar , yo Tengo Una Version Con El B4xtable, como contenedor de mis consultas a la base de datos, sin embargo para la aplicacion que estaba haciendo lo descarte y utilice directamente las consultas que se transforman en mapas y estas llenan en tiempo de ejecucion la informacion que se ve en el clv, sigo usando una b4xtable pero solo para mostrar una tabla con la informacion de la lista de clientes en mi sistema que lo trae desde la base de datos y al seleccionar alguno de la lista ya sea el nombre o el codigo de cliente , este me hace una busqueda con un SELECT basado en ese cliente para mostrarme los registros correspondientes a ese cliente, si lo consigo lo pondre por aca
 

juangtju

Member
puedo compartir el ejemplo para que tenga a la mano lo que es la interfaz de login, con lista de usuarios, utilizar roles , borrar usuarios , cambiar roles , ademas el sistema sin tener usuario en la bd, tiene uno maestro, en este caso lo hice con una clave dinamica, seria asi: las letras ISHOSU + El dia de hoy, es decir ISHOSU26 y mañana seria otro dia, de esta manera es mas dificil que decifren la contraseña
 

juangtju

Member
lo que me lio en su momento con el b4xtable es precisamente eso, que esa libreria utiliza un index con un sqlite , es decir lo que te traes de la base de datos y ves dentro de este contenedor puedes modificarlo pero eso no significa que cambia en la bd ya que esa vista es LOCAL, para eso debes hacer un llamado a la bd cada vez que modifiques un valor en dicho campo de la b4xtable y hacer un refrescado de la informacion que se ve en pantalla ,es por eso que me decidi por usar mejor el clv .
 
Top