jackrobot   04-06-2023, 23:25
#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)
tincho   05-06-2023, 10:09
#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.

Código:
If $Conn Then
    $result = $Conn.Exec("select * from clientes") 'para tenertodos los registros en el hresul
    If $result.Available Then
      FMain.vlbid.value = $result["id"]
'...
      Return 'True 'ok, ha sido posible mostrar datos
    Endif
  Endif

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

Código:
FMain.vlbid.value = $result["id"]
      FMain.txtnom.text = $result["nom"]
      FMain.txtced.text = $result["ced"]
      FMain.txtcorr.text = $result["Corr"]
      FMain.txtcel.text = $result["cel"]
      FMain.txtdir1.text = $result["dir1"]
      FMain.txtdir2.text = $result["dir2"]
      FMain.chk1.value = $result["contr"]
      FMain.chk2.value = $result["vip"]

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

1 Saludo.
Shordi   05-06-2023, 10:21
#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: 4)

No podemos regresar
tincho   05-06-2023, 11:09
#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.
Shordi   05-06-2023, 13:33
#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
jackrobot   06-06-2023, 15:56
#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
Shordi   06-06-2023, 17:31
#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
Shell   08-06-2023, 11:27
#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

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.