Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente
 
Consultas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Consultas 
 
Hola buenos dias compañeros programadores espero que bien y solucionando problemas asi como muchos de nosotros ayudando tambien.

El tema que les quiero plantear es sobre las consultas en Sqlite, bueno quiero comentarles que quiero hacer una consulta pero por Texboxt, Por ejemplo que al colocar el Codigo (1) En una Textbox se visualize en las demas Textbox los datos completos de un usuario, lo he hecho por tableview, pero por este medio no he podido muchas espero prontas respuestas gracias.
 




===================
CONTROL SYSTEMS-((CELIS))
 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Agenda de direcciones
estudia este código, te puede ser util.
 



 
ivanovichenco - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Hola compañero gracias por tu ayuda mira lo que pasa es lo siguiente tengo una consulta con el siguiente codigo en modo texboxt:

PRIVATE asiscon AS Connection
PRIVATE asisresul AS Result
PUBLIC SUB Form_Open()
IF coneccion.conectarbase() THEN RETURN
ValueBox4.Value = Format(Now(), "dd/mm/yy")
ValueBox4.Value = Now()
ValueBox1.Value = Format(Now(), "hh:mm:ss")
ValueBox1.Value = Now()
ValueBox3.Value = Format(Now(), "hh:mm:ss")
ValueBox3.Value = Now()
Message.Info("BIENVENIDO Ó BIENVENIDA AL REGISTRO DE ASESORES")
Message.Info("POR FAVOR RECUERDE ACTUALIZAR CONSTATEMENTE SEA NECESARIO EL FORMULARIO DE ASESORES PARA ACTUALIZAR FECHAS Y HORAS")
Message.Info("POR FAVOR AGREGUE UN NÚMERO SECUENCIAL COMO IDENTIFICADOR PARA PODER GUARDAR LA ASISTENCIA CON ÉXITO")
Message.Info("TODOS LOS CAMPOS ESTAN DESHABILITADOS")
TextBox1.Enabled = FALSE
TextBox2.Enabled = FALSE
TextBox3.Enabled = FALSE
TextBox4.Enabled = FALSE
TextBox5.Enabled = FALSE
ComboBox1.Enabled = FALSE
ComboBox2.Enabled = FALSE
ValueBox2.Enabled = FALSE
TextBox6.Enabled = FALSE
asiscon = NEW Connection
asiscon.Type = "sqlite"
asiscon.Host = "/home/jousseph/DESARROLLO-JOU/GAMBAS/control_asistencia"
asiscon.Name = "asistencia_asesores"
TRY asiscon.Open()
IF ERROR THEN
Message.Error("ERROR AL CONECTAR BASE DE DATOS DEBE SER EL CODIGO MAL COMPILADO.")
asiscon = NULL
ELSE
asisresul = asiscon.Exec("Select * from asesores")
IF asisresul.Available THEN MostrarCampos

END IF
END

PUBLIC SUB MostrarCampos()
TextBox6.Text = asisresul["codigo"]
TextBox1.text = asisresul["cedula"]
TextBox2.text = asisresul["nombres"]
TextBox3.text = asisresul["apellidos"]
TextBox4.text = asisresul["direccion"]
TextBox5.text = asisresul["telefono"]
ComboBox1.text = asisresul["sexo"]
ComboBox2.Text = asisresul["programa"]
ValueBox2.Value = asisresul["fecha_ingreso"]

Me muestra todo lo que tengo guardado en mi base de datos a las texboxt, pero dentro del mismo formulario quiero crear una miniconsulta osea que por ejemplo introduzca un codigo especifico me busque a ese usuario y me muestre solo a el en esas texboxt tambien no a todos como al principio nose si me explique bien. pienso que en el button_click de consulta es asi:

PUBLIC SUB Button3_Click()
asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores")
IF asisresul.Available THEN MostrarCampos()
IF TextBox8.Text = ""
Message.Info("DEBE LLENAR EL CAMPO REQUERIDO ")
   ELSE
       IF TextBox8.Text = asisresul!codigo THEN
MostrarCampos()
TextBox6.Text = asisresul["codigo"]
TextBox1.text = asisresul["cedula"]
TextBox2.text = asisresul["nombres"]
TextBox3.text = asisresul["apellidos"]
TextBox4.text = asisresul["direccion"]
TextBox5.text = asisresul["telefono"]
ComboBox1.text = asisresul["sexo"]
ComboBox2.Text = asisresul["programa"]
ValueBox2.Value = asisresul["fecha_ingreso"]
ENDIF
ENDIF

END

Pero no funciona y nisiquiera me lanza un error es como si el boton no hiciera ninguna operacion? porque sera?
 




===================
CONTROL SYSTEMS-((CELIS))
 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Veo tu código muy confuso y con errores de concepto graves. Permíteme una puñado de consejos, que no dan la solución exacta a lo que quieres, pero que si los sigues te ayudarán a encontrar dicha solución de forma sencilla.
Por ejemplo:


PRIVATE asiscon AS Connection
PRIVATE asisresul AS Result
PUBLIC SUB Form_Open()
IF coneccion.conectarbase() THEN RETURN   'Aquí te conectas a la base de datos (supongo) Si no es así, esta línea sobra
ValueBox4.Value = Format(Now(), "dd/mm/yy") 'das valor al control...
ValueBox4.Value = Now()                                 'y se lo vuelves a dar otra vez. Te sobra la línea de arriba
ValueBox1.Value = Format(Now(), "hh:mm:ss") 'y esta...
ValueBox1.Value = Now()
ValueBox3.Value = Format(Now(), "hh:mm:ss")  'y esta
ValueBox3.Value = Now()     'Por otra parte aquí tienes tres valuebox con la fecha y hora del día. Si lo que quieres es dejar constancia del momento de la grabación, te basta con uno...
Message.Info("BIENVENIDO Ó BIENVENIDA AL REGISTRO DE ASESORES") 'uno...
Message.Info("POR FAVOR RECUERDE ACTUALIZAR CONSTATEMENTE SEA NECESARIO EL FORMULARIO DE ASESORES PARA ACTUALIZAR FECHAS Y HORAS") 'dos...
Message.Info("POR FAVOR AGREGUE UN NÚMERO SECUENCIAL COMO IDENTIFICADOR PARA PODER GUARDAR LA ASISTENCIA CON ÉXITO") 'tres...
Message.Info("TODOS LOS CAMPOS ESTAN DESHABILITADOS")    'y... ¡¡¡¡CUATRO!!!
TextBox1.Enabled = FALSE
TextBox2.Enabled = FALSE
TextBox3.Enabled = FALSE
TextBox4.Enabled = FALSE
TextBox5.Enabled = FALSE
ComboBox1.Enabled = FALSE
ComboBox2.Enabled = FALSE
ValueBox2.Enabled = FALSE
TextBox6.Enabled = FALSE
asiscon = NEW Connection
asiscon.Type = "sqlite"
asiscon.Host = "/home/jousseph/DESARROLLO-JOU/GAMBAS/control_asistencia"
asiscon.Name = "asistencia_asesores"
TRY asiscon.Open()    'Aquí te vuelves a conectar a la base de datos ¿Para qué, entonces la conexión de la segunda línea?
IF ERROR THEN
Message.Error("ERROR AL CONECTAR BASE DE DATOS DEBE SER EL CODIGO MAL COMPILADO.") 'el mensaje es confuso y erróneo. Si falla el open no tiene nada que ver la compilación del código, será que no existe el fichero de la base de datos o los permisos de usuario...
asiscon = NULL
ELSE
asisresul = asiscon.Exec("Select * from asesores")  'Te has conectado y buscas a Todos los asesores....
IF asisresul.Available THEN MostrarCampos             '....y los muestras en el formulario el primero ¿Para qué, y si hay 200?

END IF
END

PUBLIC SUB MostrarCampos()
TextBox6.Text = asisresul["codigo"]
TextBox1.text = asisresul["cedula"]
TextBox2.text = asisresul["nombres"]
TextBox3.text = asisresul["apellidos"]
TextBox4.text = asisresul["direccion"]
TextBox5.text = asisresul["telefono"]
ComboBox1.text = asisresul["sexo"]
ComboBox2.Text = asisresul["programa"]
ValueBox2.Value = asisresul["fecha_ingreso"]
'aquí te falta el END

PUBLIC SUB Button3_Click()
asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores") 'primero haces la consulta contra la base de datos y te traes la tabla entera ¿para qué?¿Y si hay 30.000 asesores?
IF asisresul.Available THEN MostrarCampos()  'mostrarcampos muestra los campos del registro actual (el primero) en los controles de pantalla  ¿Para qué quieres todos los demás registros?

IF TextBox8.Text = ""  'si el textbox8.text está vacío no es que no lo haya tecleado es que estaba vacío en la tabla de asiscon, no tiene sentido avisar aquí al usuario porque lo que tiene el campo no es lo que él ha tecleado sino lo que ha grabado en él mostrarcampos
Message.Info("DEBE LLENAR EL CAMPO REQUERIDO ")
ELSE
IF TextBox8.Text = asisresul!codigo THEN
MostrarCampos()   '¿otra vez? Si los acabas de mostrar cuatro líneas más arriba
TextBox6.Text = asisresul["codigo"]  '¿¿otra vez?? Estas líneas y las siguientes hacen lo mismo que mostrarcampos
TextBox1.text = asisresul["cedula"]
TextBox2.text = asisresul["nombres"]
TextBox3.text = asisresul["apellidos"]
TextBox4.text = asisresul["direccion"]
TextBox5.text = asisresul["telefono"]
ComboBox1.text = asisresul["sexo"]
ComboBox2.Text = asisresul["programa"]
ValueBox2.Value = asisresul["fecha_ingreso"]
ENDIF
ENDIF

END

 


Otra cosa: ¿De verdad le sacas al usuario cuatro mensajes de texto de los de pulsar enter cada vez que abre el formulario?¿Nadie te ha intentado asesinar aún?      (es broma)
Deberías plantearte primero la lógica del programa, antes de ponerte a codificar.
Otra cosa, deberías indentar tu código, es muchísimo más sencillo de seguir y leer que tal como lo has puesto aquí.
IF TextBox8.Text = ""
      Message.Info("DEBE LLENAR EL CAMPO REQUERIDO ")
ELSE
       IF TextBox8.Text = asisresul!codigo THEN
           MostrarCampos()
           TextBox6.Text = asisresul["codigo"]
           TextBox1.text = asisresul["cedula"]
           TextBox2.text = asisresul["nombres"]
           TextBox3.text = asisresul["apellidos"]
           TextBox4.text = asisresul["direccion"]
           TextBox5.text = asisresul["telefono"]
           ComboBox1.text = asisresul["sexo"]
           ComboBox2.Text = asisresul["programa"]
           ValueBox2.Value = asisresul["fecha_ingreso"]
    ENDIF
ENDIF

END
 

Queda mucho más claro.
Por otra parte deberías cambiar el nombre de los controles para que signifiquen algo. Las líneas:
IF TextBox8.Text = ""
    Message.Info("DEBE LLENAR EL CAMPO REQUERIDO ")
ELSE
....
 

No tienen sentido por sí mismas. En cambio si textBox8 es llamado algo así como TBcodigo_asesor, las líneas:
IF TBCodigo_Asesor.Text = ""
    Message.Info("DEBE LLENAR EL CAMPO REQUERIDO ")
ELSE
....
 

Dicen claramente qué estás comparando....
Hay otros errores de concepto que son más graves por cuanto en ellos te juegas la integridad de tu base de datos: Dejas al usuario la responsabilidad de teclear un número secuencial para identificar el registro... cosa que debería hacer la propia base de datos (campo INTEGER PRIMARY KEY AUTOINCREMENT, revisa las ayudas de SQLite).
Dejas al usuario el horrible trabajazo de actualizar constantemente el formulario para que se actualizen las fechas y horas... (¿Cuales?), cuando eso lo puede hacer tu programa (control Timer) de forma automática... etc.
Creo que todos tus fallos vienen de las prisas por ponerse uno a dibujar controles en la pantalla y a teclear código sin un planteamiento serio de lo que quieres que el programa haga. Es mejor perder un poco de tiempo al principio que toooodo el tiempo al final.

Saludos.
 



 
última edición por shordi el Viernes, 24 Junio 2011, 07:36; editado 2 veces 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Enhorabuena por la respuesta Shordi.
Larga pero clara, concisa en la medida de lo posible y si empieza por ahí, seguro que el problema que tenía o ya no es un problema o está mucho más claro.

Joussep
Si lo que necesitas es encontrar un registro especifico, hay un metodo find propio de la conexion que te busca el registro que necesitas. Esto mismo lo puedes hacer con una consulta SQL cuyo WHERE sea la condición que pones en el método.
Si el valor está en textbox8 ..... la consulta en el _click del button de busqueda sería algo asi:

asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores WHERE codigo = &1", textbox8.text)

Yo incluso lo simplificaría, ya que trabajas con SQLITE y solo tendrás una conexión:

asisresul = db.Current.Exec("SELECT * FROM asesores WHERE codigo = &1", textbox8.text)

y con el método find ...

asisresul = db.Current.Find(asesores, "codigo = &1", textbox8.text)

Lo he sacado de mi propia programación pero no lo he probado, por tanto si no funciona la sustitución de textbox.text, quizás tengas que convertirlo a un valor integer (con Val o CInt).

Si la base de datos estuviese normalizada y empleases INTEGER PRIMARY KEY AUTOINCREMENT, sería mucho más fácil que hicieras algo como:

asisresul.MoveTo(CInt(textbox8.text))

Un saludo amigo.
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Huy excelente hermanos muchas gracias si la verdad me ha tocado duro y rápido por lo que no he tenido tiempo de analizar las cosas, puesto que hice un sistema para una universidad es tiempo de presentar una tesis y como aquí en Venezuela son pocos los que usan este lenguaje no hay nadie por desgracia que me ayude, pero cuento con ustedes y sin embargo hay cosas que mas allá de gambas nose gracias voy a intentar esta disciplina.
 




===================
CONTROL SYSTEMS-((CELIS))
 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Hola buenas tardes muchas gracias por esa disciplina compañeros shordi y antonio.

Compañero antonio tu sabes la parte que me dijistes de mi codigo que me enseñastes me funciono quedo asi:

PUBLIC SUB Button3_Click()
IF TextBox8.Text = ""
 Message.Info("DEBE LLENAR EL CAMPO REQUERIDO")
 ELSE
asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores WHERE codigo = &1", textbox8.text)
 
TextBox6.Text = asisresul["codigo"]
TextBox1.text = asisresul["cedula"]
TextBox2.text = asisresul["nombres"]
TextBox3.text = asisresul["apellidos"]
TextBox4.text = asisresul["direccion"]
TextBox5.text = asisresul["telefono"]
ComboBox1.text = asisresul["sexo"]
ComboBox2.Text = asisresul["programa"]
ValueBox2.Value = asisresul["fecha_ingreso"]
ENDIF
END

Y funcionó pero tengo otra duda resulta que cuando introduzco un código que no existe en la base de datos me da un error como not null que podría yo hacer para que cuando no exista código diga no existe ese código.


Ah compañeros disculpen por molestar tanto fíjese que es verdad lo que ustedes dicen acerca de la hora y la fecha eso es una estupidez colocar un format now como haria yo para que la fecha y la hora se sincronizaran nose como hacerlo si me explicaran un poco muchas gracias que pena.

Compañero antonio fijate que ese secuenciador lo puse porque sucede esto y se que esta mal: Yo quiero tomar la asistencia de asesores sea hora de entrada y hora de salida, entonces yo quisiera que el asesor se repitiera tantas veces  con su  codigo para saber valga la redundancia  tantas veces haya asistido, lo que sucede es que para que eso se repita tengo que colocar un campo llamado ID secuenciador esta en llave primaria para que me permita repetir el codigo esas veces que quiero, pero igual tengo que estar colocando números diferentes y por ejemplo le digo a la celda de ID lo coloco Autonumerico y no coloca nada ni suma ni nada osea no agrega ningun valor en Sqlite.

Disculpen tanto tema compañeros de verdad pues me falta aprender mas y disciplina.
 




===================
CONTROL SYSTEMS-((CELIS))
 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Citar:
Y funcionó pero tengo otra duda resulta que cuando introduzco un código que no existe en la base de datos me da un error como not null que podría yo hacer para que cuando no exista código diga no existe ese código.

Es fácil, símplemente comprueba si asisresul está disponible (available) después de hacer la consulta:

IF TextBox8.Text = ""
     Message.Info("DEBE LLENAR EL CAMPO REQUERIDO")
ELSE
     asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores WHERE codigo = &1", textbox8.text)
     IF asisresul.available THEN
         TextBox6.Text = asisresul["codigo"]
         TextBox1.text = asisresul["cedula"]
         TextBox2.text = asisresul["nombres"]
         TextBox3.text = asisresul["apellidos"]
         TextBox4.text = asisresul["direccion"]
         TextBox5.text = asisresul["telefono"]
         ComboBox1.text = asisresul["sexo"]
         ComboBox2.Text = asisresul["programa"]
         ValueBox2.Value = asisresul["fecha_ingreso"]
    ENDIF
ENDIF
 


Respecto a los campos AUTONUMERICOS que son PRIMARY KEY en la SQLITE, no tienes que hacer nada. Repito: No tienes que hacer nada, cada vez que se cree un registro, se genera automáticamente la clave única y secuencial.
Si lo que quieres es dejar constancia de las entradas y salidas, tendrás que obligar al asesor a que se valide al entrar y al salir. La manera más sencilla es utilizar un lector de código de barras y facilitar a cada asesor una tarjeta con su código... Hace unos años desarrollé una aplicación así para la administración pública...
...y ahora permíteme un consejo: Has mordido más de lo que en este momento puedes tragar. Si no paralizas todo ahora y te dedicas un tiempo a estudiar, investigar y aprender (bases de datos, controles de gambas, maneras de hacer las cosas, etc. etc.), mucho me temo que tu proyecto está destinado al fracaso. Uno debe ser capaz de conocer su límites y aspirar siempre a un poquito , sólo un poquito, por encima de ellos. Si aspiras a menos nunca creces. Si aspiras a más, fracasas.
Sólo es un consejo de alguien que lleva más de 30 años como programador.

Suerte
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Hola muy buenas tardes compañeros saludos gracias humildemente por sus ayudas.

Hola compañero shordi un saludo quiero comentarle que el codigo asignado al asesor funciona, veras no creas que yo estoy hasta ahora haciendo todo este proceso a loco si supieras que a pesar de la poca enseñanza que he llevado en mi uni mas bien considero que he avanzado mucho y no me arrepiento, yo practicamente se los conceptos de la disciplina de la ingenieria y toda la cosa no hay mejor programador que el que exprimenta y no estas pendiente de teorias, esto a mi ha dado buenos resultados conosco la logica de las cosas.

Yo entiendo perfectamente tu consejo se que si te apresuras llegas temprano y terminas mal, como también si llegas tarde pero bien.

Se que debo estudiar mas pero el problema no sucede con mis formularios completos solo es con el de tomar solo y solo asistencia mi sistema esta listo para instalarse imprime, borra, agrega, elimina guarda en pdf y html ya le hice pruebas en otras distros esta perfectamente diseñado, pero por una simple duda mia y simplemente una respuesta no creo que tus mejores años se vayan a destruir por un favor, ustedes que saben la mata de la programación se merecen respeto y rango eso siempre lo he admirado, pero de que pare todo? no! yo nunca he hecho cursos en mi vida y he aprendido por ensayo y error y asi es como solo el ultimo formulario donde tengo mi duda estoy terminando.

Un saludo.
 




===================
CONTROL SYSTEMS-((CELIS))
 
jousseph - Ver perfil del usuarioEnviar mensaje privadoVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consultas 
 
Gracias por recordarme, la falta de uso, se me había olvidado la notación húngara. La estudie alguna vez y la deje en el olvido por falta de practica
IF TBloquesea.Text = ""
     Message.Info("DEBE LLENAR EL CAMPO REQUERIDO")
ELSE
     asisresul = coneccion.asiscon.Exec("SELECT * FROM asesores WHERE codigo = &1", textbox8.text)
     IF asisresul.available THEN
         TBcodigo.Text = asisresul["codigo"]
         TBcedula.text = asisresul["cedula"]
         TBnombres.text = asisresul["nombres"]
         TBapellidos.text = asisresul["apellidos"]
         TBdireccion.text = asisresul["direccion"]
         TBtelefono.text = asisresul["telefono"]
         CBsexo.text = asisresul["sexo"]
         CBprorama.Text = asisresul["programa"]
         VBfecha_ingreso.Value = asisresul["fecha_ingreso"]
    ENDIF
ENDIF

 



 
ivanovichenco - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿Ya No Se Reconocen Las Consultas PRAGMA ... shordi Bases de Datos 2 Viernes, 15 Agosto 2014, 12:48 Ver último mensaje
shordi
No hay nuevos mensajes Formularios Y Consultas. Un Poco De Orden. Shell Bases de Datos 18 Martes, 02 Junio 2015, 09:00 Ver último mensaje
shordi
No hay nuevos mensajes Comilla Simple Y Las Consultas SQL tincho Bases de Datos 6 Domingo, 06 Noviembre 2016, 23:27 Ver último mensaje
shordi
No hay nuevos mensajes Obtengo Consultas De Una Bd Que No Existe?... v3ctor General 4 Jueves, 15 Diciembre 2016, 01:37 Ver último mensaje
whisper
 

Publicar nuevo tema  Responder al tema  Página 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron