Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Ayuda con carga de datos a FMain Sqlite3 Gambas 3.18 programa de trabajo
#1

Hola Tongue espero estén todos bien Sleepy Sleepy no soy muy bueno programando Undecided. He retomado el tema por la necesidad de hacer un programa que me agende personas  pero tengo un problema con la carga de datos un objeto nulo y no se que hacer, no se donde corregir. Alguien puede ayudarme y revisar el código de mi programa? se los agradecería, lo adjunto por cualquier cosa cualquier consejo sera muy agradecido. No logro entender que pasa, uso diferentes métodos para cargar datos y agregar  usuarios pero no se que pasa... me desconcierta, no se que pasa... Gracias de antemano.


Archivos adjuntos
.zip Pinto_Express.zip Tamaño: 25.06 KB  Descargas: 5
    ¡Gracias!
#2

Hola.
Mire un poco tu programa y te comento algunas cosas que vi que tal vez te sirvan.
Si ejecutas algo como esto $myconetion.Exec("Select * from mytable") y se lo asignas aun result, puede suceder el caso que el result sea nulo (tu pregunta en el post) suele ser algo común cuando la table no tiene registros.
Para solucionar esta situación puedes tomar varios caminos, un es que la base ya tengo al menos un registro (no es lo que recomiendo) otro método consiste en usar varios IF  para ver si existe la conexión y si el result es distinto de null (esto ultimo ya lo haces).

Para trabajar con una base de datos hay que establecer la conexion antes de nada, si te fijas en tu código intentas obtener un result de una conexión nula, eso no puede ser.

GAMBAS
  1. If $Conn Then
  2.     $result = $Conn.Exec("select * from clientes") 'para tenertodos los registros en el hresul
  3.     If $result.Available Then
  4.       FMain.vlbid.value = $result["id"]
  5. '...
  6.       Return 'True 'ok, ha sido posible mostrar datos
  7.     Endif



Luego el método mr() yo lo haría así:

GAMBAS
  1. FMain.vlbid.value = $result["id"]
  2.       FMain.txtnom.text = $result["nom"]
  3.       FMain.txtced.text = $result["ced"]
  4.       FMain.txtcorr.text = $result["Corr"]
  5.       FMain.txtcel.text = $result["cel"]
  6.       FMain.txtdir1.text = $result["dir1"]
  7.       FMain.txtdir2.text = $result["dir2"]
  8.       FMain.chk1.value = $result["contr"]
  9.       FMain.chk2.value = $result["vip"]



Luego al guardar no sucede nada, el método esta comentado

1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • jackrobot
    ¡Gracias!
#3

Bienvenido.
Una cosa sobre tu código: No tiene sentido sacar las operaciones sobre un formulario fuera del código del mismo formulario. Es decir, todo lo relativo a FMain, debe ir dentro del propio fMain. Tu código será más claro, te ahorrarás teclear mucho y es más coherente.

Dicho esto: Un result obtenido vía Exec(Select...) (o usando el método Find del objecto connection) es de sólo lectura. Si quieres añadir o Editar registros debes usar el método Create o Edit respectivamente.

Echa un vistazo al código del formulario FMain del proyecto que te adjunto. (No lo he probado, puede contener errores)


Saludos.


Archivos adjuntos
.gz Pinto_Express-0.0.2.tar.gz Tamaño: 14.48 KB  Descargas: 3

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • jackrobot
    ¡Gracias!
#4

(05-06-2023, 10:21)Shordi escribió:  Dicho esto: Un result obtenido vía Exec(Select...) (o usando el método Find del objecto connection) es de sólo lectura.

Eso no es del todo correcto, porque puedes usar .Exec("insert into....) y eso escribe un registro, o .Exec("update....) etc. Es decir, que se puede escribir con Exec

1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • jackrobot
    ¡Gracias!
#5

Las sentencias "Insert into" y "update" no devuelven un result operativo, sólo actúan contra la base de datos y, sí, un result obtenido con un "Select" es de solo lectura.

Lo que digo es del todo correcto... sólo que hay muchas maneras de pelar un gato, como se suele decir. Big Grin Big Grin Big Grin

Saludos

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • jackrobot
    ¡Gracias!
#6

Wao Blush  gente estoy abrumado no pensé que me contestarían tan pronto y tantos, y sus consejos si son importantes para mi voy a revisar y a mejorar mi código ...saben, no se cual  método para agregar editar eliminar registros usar, me cuesta cargar los datos en un formulario, termine viendo varios manuales y todos recomiendan métodos distintos y me perdí en un mar de formas de hacer un sistema agregar editar borrar ..... como estoy aprendiendo uso Sqlite3 y el gestor de bases de datos de gambas, siento que es poderoso y una herramienta menospreciada... si notan  Idea  hay una conexión a la base de datos llamada BDPE y tiene 2 registros yo los agregue manualmente el insert esta comentado  porque al ejecutarlo parece funcionar porque no da error pero al revisar la base de datos en el poderoso gestor de bases de datos de gambas no se refleja el registro nuevo.  Huh .. revisare el código estoy seguro que no enloquesí... Sleepy y seguiré batallando pero les agradezco 2 consejos, que opinan del gestor de bases de datos de bambas ? esta bien si lo uso ? y 2  que método de agregar editar borrar debo usar estoy confundido en yutup todos dicen que su método es el mejor y aquí estoy, soy el resultado de yutup, estoy muy confundido..que código debo usar ? uso fragmentos de todos y nada me funciona es abrumador estar confundido... estudie VB0.6 a los 15 y ahora en el futuro me encontré Gambas3 Big Grin   y aquí estoy, retomando 

diablos que novato soy, espero haberme explicado saludos gente estoy muy agradecido porque me contestaron. revisare todas sus observaciones  e iré subiendo el código
Saludos bendiciones
    ¡Gracias!
#7

Cita:esta bien si lo uso ? y 2  que método de agregar editar borrar debo usar estoy confundido en yutup todos dicen que su método es el mejor y aquí estoy, soy el resultado de yutup, estoy muy confundido..que código debo usar ? uso fragmentos de todos y nada me funciona es abrumador estar confundido... estudie VB0.6 a los 15 y ahora en el futuro me encontré Gambas3 Big Grin   y aquí estoy, retomando 
Mira el ejemplo que te subí en mi primera respuesta y verás un método válido.

Saludos

No podemos regresar
[-] Los siguientes 1 usuarios dice gracias a Shordi por este post:
  • jackrobot
    ¡Gracias!
#8

El procedimiento "mr" del modulo no se llama por ahora desde ningún lado, ¿ no ?.
Parece que no está entero. Es simple curiosidad. ¿ Y ese nombre ?. Rolleyes

Es que me lié, ya que estaba buscando ese nombre de procedimiento por el proyecto y solo se mostraba una vez.
Y pensé que estaba haciendo algo mal, pero no. La búsqueda simple permite mostrar la coincidencia en todos los
lugares del proyecto que se usa.

No he bajado el primer proyecto, si el modificado o añadido. Probaré a bajarme el código original y ver los cambios para seguirlo mejor.

Saludos

"Pero no toques, por qué tocas? - Amador"
[-] Los siguientes 1 usuarios dice gracias a Shell por este post:
  • jackrobot
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)