FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con Forms y querys
Estoy preguntona hoy
Mmm....Tengo un form donde se muestran los datos de los alumnos. Ahi tb los puedo modificar, borrar etc. También tengo un dialogo donde introduzco el dni del alumno. Lo que quiero es que (logicamente) al introducir el dni de un alumno, me muestre el form con sus datos. Yo tengo lo siguiente: he puesto un tquery y un datasource en la form "Form_Altaalumnos" (que es la que quiero que me enseñe cuando introduzco el dni). En el sql del query tengo: SELECT * FROM alumno WHERE dni_Alumno=:dni y luego en el código del dialogo.... Código:
if showModal=mrOk then begin Form_AltaAlumnos.qry_dniAlumno.close; try Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Edit_Dni.text; finally Form_AltaAlumnos.qry_DniAlumno.Open; Form_AltaAlumnos.show; end; end; que hago mal? Gracias |
#2
|
||||
|
||||
A parte de que pueda tener otros fallos, debes de borrar la sentencia SQL, anterior.:
Código:
if showModal=mrOk then begin Form_AltaAlumnos.qry_dniAlumno.close; Form_AltaAlumnos.qry_dniAlumno.sql.Clear; try Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:=Edit_Dni.text; finally Form_AltaAlumnos.qry_DniAlumno.Open; Form_AltaAlumnos.show; end; end;
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Cita:
Creo que el problema está en algún punto que no puede verse en el código que nos manda ya que hice la prueba y los registros se actualizan correctamente al cambiar el parámetro. // Saludos |
#4
|
|||
|
|||
Haciendo eso me da un error : parametro dni no encontrado.
Además no se, no creo que sea eso porque hay veces que abro el form sin usar un query con lo cual no tendría por que borrar el sql. Alguna sugerencia más?? |
#5
|
||||
|
||||
Sí ya me he dado cuenta, como usas parámetros, lo que te he dicho no tiene sentido, como muy bien apunta Román.
Pregunto: El control Edit_Dni.text en donde está en el formulario que llama al que muestra el alumno que se pretende seleccionar, no será que como el control está en un formulario distinto no recibe ningún parámetro. Por qué no muestras la sentencia SQL para comprobar si reciba o no el parametro. ShowMessage(Query1.Sql.Text); De esta manera podrías comprobar que quizas, no está recibiendo el parámetro. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
|||
|
|||
Cita:
SELECT * FROM alumno WHERE dni_Alumno=:dni que quiere decir? lo recibe bien o no? sale lo mismo que tengo metido en el sql. Acaso deberia salir en vez de "dni" el número que meti? |
#7
|
||||
|
||||
Cita:
A menos claro, que uses otro formulario para abrir los datos y estés confundiéndote con distintas componentes datasource o dataset. // Saludos |
#8
|
|||
|
|||
x cierto si pongo:
Código:
Form_AltaAlumnos.qry_DniAlumno.ParamByName('dni').AsString:='1234567M'; Es por si asi os da una idea de donde puedo estar haciendolo mal Gasias |
#9
|
|||
|
|||
Roman, no entiendo bien lo que quieres decir y la verdad es que yo me explico siempre fatal
Tengo un form "form_altaalumno" con dbedits asociados a una base de datos y con un dbnavigator voy recorriendo. Asi que si que veo más alumnos y no solo el primero ni el ultimo. El problema es que si por ejemplo los ultimos datos mostrados en dicho form corresponden a "David" y yo luego en el dialogo meto en el edit el dni de "Maria" pues yo quiero que me muestre el form con los datos de Maria, sin embargo me muestra los datos de David ya que es el último form mostrado. No se si me he explicado un poquito mejor.... |
#10
|
||||
|
||||
Cita:
En form_altaalumno supongo que tienes unos controles como dbedits y recorres la tabala con dbnavigator. ¿A qué datasource están ligados estos controles y el dbnavigator? No puede ser al query ya que éste te devuelve a lo sumo un registro. Y sin embargo quieres que estos controles también estén alimentados por el query!! Creo que estás enfocando erróneamente lo que quieres. En lugar del query creo que te conviene usar un dataset y un datasource para recorrer con el dbnavigator toda la tabla (como parece ser que tienes) y para colocarte en un registro específico (indicado por el dni) utilizas el método Locate del dataset que alimenta al dbnavigator. // Saludos |
#11
|
|||
|
|||
Por fin entiendo algo!!! y ahora me doy cuenta de que lo que estaba haciendo era una burrada. Te explicas mu bien Voy a tratar de hacer eso que me dices, lo del dataset y el datasource. Puedes ser más especifico y explicarme con un poco más de detalle lo que tengo que hacer?
Muchisimas gracias |
#12
|
|||
|
|||
No hace falta. Ya lo he solucionado
Gracias por vuestra ayuda |
#13
|
||||
|
||||
Cita:
Lo único que falta es colocarte en el registro adecuado dependiendo del dni que se especifique en un cuadro de diálogo. Para ello puedes usar el método Locate del dataset que tengas asociado al dbnavigator, por ejemplo: Table.Locate('dni', Edit.Text, []) donde Edit sería el control que obtienes del cuadro de diálogo. // Saludos |
|
|
|