Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Update despues de Consulta

Delphi 7 Paradox7

Hace unos dias publiqué un hilo "Filtro para Actualizar Tabla" donde explicaba una situación algo penosa:

"Tengo una tabla donde se almacenará:
"No_Control" --->Se repite maximo 6 veces, pues esta ligado a cada materia para cada alumno.

"Materias" ------>Representa las materias de un semestre (Estas, identificadas a su vez por una Especialidad. y son cursadas por un mismo Alumno.[No_Control])

"Periodo1"-------> Almacenará las califiaciones de cada materia de un alumno a cierto tiempo (1ra EVALUACION)

"Periodo2" "-------> Almacenará las califiaciones de cada materia de un alumno a cierto tiempo (2da EVALUACION)

"Periodo3". "-------> Almacenará las califiaciones de cada materia de un alumno a cierto tiempo (3ra EVALUACION)

Ejecuto una consulta donde me devuelva, en un DBGrid:

No_Control, Materia y Periodo1 (Para capturar calificaciones del periodo1)

ahora, requiero hacer un Update a cada calificacion en el periodo1
pero no se si sea más benéfico emplear unos Edit donde capture la calificacion para cada materia, convertirlos a entero y en OnExit del Edit que se realice el Update, o bien:
---->De algun modo, cambiar el DataSource o el DataSet de la columna (Campo) Periodo1 a la tabla, la cual esté filtrada de acuerdo al ´No_Control y las Materias y el Periodo1, o bien al primero y al tercero, para poder escribir sobre dicha Columna del Grid (COSAS QUE NO SE HACER, NO SE HACER NI UN FILTRO EN UNA TABLA )

----->O bien FILTRAR de la tabla el campo Periodo 1 , para el No_Control requerido, colocarlo en un DBGrid, junto con el otro y que en este se capture el registro de cada materia para cada tabla.....

No se si haya quedado, al menos poco claro......
Agradezco a todos la ayuda que me proporcionen....
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #2  
Antiguo 23-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Filtrar una tabla es tan fácil como:

Código Delphi [-]
  tabla1.filter := 'No_control = 12245'; //suponiendo que el campo no_control es un número entero
  tabla1.fileter := 'no_control = ' + quotedStr('12245'); // suponiendo que el campo no_control es un String
  tabla.filtered := true;

Con un grid ligado a esa tabla, ya tienes el filtro; pero un filtro, además de costoso para el sistema, es poco flexible y tarde o temprano necesitarás algo más potente.

Puedes usar un TQuery:
Código Delphi [-]
var periodoElegido:String;
begin
if VerPeriodo1 then
  PeriodoElegido := 'Periodo1'
else if VerPeriodo2 then
 PeriodoElegido := 'Periodo2'
else 
 PeriodoElegido := 'Periodo1, Periodo2, Periodo3';

  query1.sql.text := 'select no_control, materia, ' + periodoElegido+
                           ' from calificaciones where '+
                           ' no_control = : prControl';
 query1.ParambyName('prControl').AsString := '232354'; // Segun el campo, usa AsString, AsInteger etc.

 query1.RequestLive := true; // permite que se actualicen los datos de la consulta
 Query1.Open;
 Dbgrid1.Columns.RebuildColumns; // hace que se actualicen las columnas del grid
 Dbgrid1.Colums[0].ReadOnly := true; // no dejamos que modifique el no_control
 Dbgrid1.Colums[1].ReadOnly := true; // tampoco la materia 
end;
El Query lo tienes asociado al DBGrid1 y puedes modificar los datos directamente sobre ese grid.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 23-05-2006 a las 20:48:58.
Responder Con Cita
  #3  
Antiguo 24-05-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Estoy en Pruebas...

Muchas gracias por enseñarme a filtrar tablas....Lepe...

En estos momentos estoy probando el codigo que me diste....
Pronto veremos si he logrado hacerlo correctamente...nuevamente Gracias
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #4  
Antiguo 24-05-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Estuvo de Maravilla

Lepe, muchas gracias....

Ha resultado todo bien....
Creo que me ha sido difícil explicar la situación, pero afortunadamente creo pudiste descifrar la maraña de cosas que había escrito....

Ahora sólo, tengo que buscar como no sobrepase la última línea del DBGrid, ya que aunque no actualiza ningún número de control (no_Control), si introduce los datos que se capturen....

Muchas Gracias Lepe...
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #5  
Antiguo 24-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Para la consulta query1, en el evento OnNewRecord, escribes: TTable(Sender).Cancel

Así cancelarás de forma automática cualquier inserción que se haga desde el Grid.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 24-05-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Algún error he de tener...

Hola Lepe....

Fijate, que he empleado el codigo que me das, pero me dice que no identifica el Sender: "Undeclared Identifier Sender".

Como has visto no soy muy bueno empleando los controles de los elementos.. . Para implementar el código que anteriormente me habías dado (donde se permite capturar sobre una columna), lo hice en una nueva aplicación para probar. En ésta sólo puse el Query, su DataSource y el DBGrid, más otros elementos que me definan el periodo elegido y un Edit para capturar el No_Control....Me olvidé de algo??....creo sí, por el hecho de que haces referencia a un TTable.

Luego, añadí un componente TTable con el código de filtrado que me proporcionaste por aquello de que fuera indispensable, pero me sigue marcando el error.... que puedo hacer??

Gracias por la ayuda
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #7  
Antiguo 24-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Inicialmente pensé en la consulta Query1, pero despues en el código puse directamente TTable, hechos que son inconsistencias

En el evento OnNewRecord del Query1 puedes poner Query1.Cancel que básicamente era mi propósito, cancelar la creación de un nuevo Registro desde esa Query.

Saludos y perdona las molestias.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 24-05-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Poder: 18
anghell77 Va por buen camino
Enorme Agradecimiento

Por el Contrario, Lepe, disculpa las molestias que yo pueda causar por aquellas situaciones de saber poco...

Tu ayuda ha sido grandiosa, ya todo está resuelto.....

Muchas Gracias....

Saludos...
__________________
"...Ayer Bastaba un Sueño..."
Responder Con Cita
  #9  
Antiguo 25-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Todos hemos pasado por esa etapa

Un libro casi obligatorio es La cara oculta de delphi 4 que se puede descargar desde la página de su creador; sin duda te "abrirá los ojos"

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DBGrid en blanco después de consulta SQL. DarkByte Conexión con bases de datos 20 26-10-2005 23:45:21
consulta update majosf Conexión con bases de datos 1 17-09-2005 16:09:04
Después de un INSERT SaurioNet SQL 3 02-03-2004 17:19:06
¿Por qué CommitRetaining funciona después de agregar, pero no después de modificar? Al González Firebird e Interbase 7 17-02-2004 00:47:28
Despues de interbase? chutipascal Debates 7 05-08-2003 16:29:52


La franja horaria es GMT +2. Ahora son las 15:37:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi