Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Filtro para Actualizar tabla... (https://www.clubdelphi.com/foros/showthread.php?t=31899)

anghell77 21-05-2006 09:26:11

Filtro para Actualizar tabla...
 
Delphi 7 Paradox7
A ver...
Primero: Se que probablemente voy a recibir una reprimenda por lo siguiente:
Tabla: CALIFICACIONES
Llave Primaria: NO EXISTE :o
CAMPOS DEL PROBLEMA : MATERIA, PERIODO1, PERIODO2, PERIODO3 (corresponden a la primera, segunda y tercera evaluacion, todas ellas en distinto tiempo)
SITUACION : (por la que me van a regañar). NO EXISTE LLAVE PRIMARIA. Estoy guardando maximo 6 registros del MISMO NUMERO DE CONTROL (No_Control) con DISTINTA MATERIA, en un momento determinado. este Proceso se denomina CARGAR MATERIAS.
Dado que las calificaciones de los tres periodos se capturarán en tiempo distinto, aquí ocurre la situacion:

¿Como actualizo en una sola "pasada" las 6 calificaciones, obvio una de cada materia, del periodo correspondiente, para el numero de control?

Mas menos esto esta asi:

No_Control Materia Calificacion

01041125 ADSI I <---:confused:
01041125 SWS I <--:confused:
01041125 BD II <---:confused:
01041125 SWD II <---:confused:
01041125 ED II <---:confused:
01041125 PPE III <----:confused:

Los Primeros dos campos los lleno en un Form(CARGAR MATERIAS) mediante un
DataModule2.Buscar_Materia_Cargar.First;
For i:=0 to DataModule2.Buscar_Materia_Cargar.RecordCount-1 do
begin
DataModule2.Cargar_Materias.Close;
DataModule2.Cargar_Materias.ParamByName('e_No_Control').AsString:=trim(DBEdit1.Text);
DataModule2.Cargar_Materias.ParamByName('e_Especialidad').AsString:=trim(DBEdit9.Text);
DataModule2.Cargar_Materias.ParamByName('e_Grupo').AsString:=trim(DBEdit11.Text);
DataModule2.Cargar_Materias.ParamByName('e_Semestre').AsString:=trim(DBEdit10.Text);
DataModule2.Cargar_Materias.ParamByName('e_Materia').AsString:=trim(DBGrid1.SelectedField.AsString);
DataModule2.Cargar_Materias.ParamByName('e_Carga_C').AsString:='True';
DataModule2.Cargar_Materias.ExecSQL;
DataModule2.Buscar_Materia_Cargar.Next;
end;

Entonces, en otro Form, para capturar las calificaciones, mostrar unicamente el No_Control (01041125) y llenar las calificaciones de las materias correspondientes....¿¿¿COMO HACERLO?????

tal vez lo dije muchas veces, pero espero que quede mas menos entendible....AYUDA!!!!!:(

Lepe 21-05-2006 10:20:36

Lo he leido 5 veces y no entiendo nada... hablas de 2 tablas pero solo le pones nombre a una (calificaciones), despues ejecutas SQLs pero no dices que lleva dentro el sql ... etc.

Imposible:mad: :eek: :mad:

anghell77 21-05-2006 10:29:42

lo se...es dificil..
 
la situacion es esta...
TABLA : PRINCIPAL Almacena los No_Control como llave primaria, que se empleará para las relaciones con otras tablas.
El caso es que en la tabla CALIFICACIONES, estoy haciendo una insercion en el Form "CARGAR MATERIAS" a los campos, "No_Control" y "Materia", únicamente en este form... y dicha tabla no tiene llave Primaria.

Luego, en un form "Capturar Calificaciones" ejecuto una consulta que me devuelva el No_Control (como parámetro de entrada), desde la tabla Calificaciones:
"Select *from Calificaciones where No_control=:entrada"
Ejecutando en un BitBtn
Query1.Close;
Query1.ParamByname('entrada').AsString:=trim(Edit1.Text);
Query1.Open;

y este proceso debe regresar los datos que muestro arriba, No_Control y Calificaciones. Suponiendo que capturaremos las calificaciones del primero periodo en cada materia, no sé como realizar la actualizacion:

por ejemplo No_control, y Materia ya estan capturados; resta llenar "Calificacion"
No_Control Materia Calificacion
01041125 ADSI I 75 <-----Este dato entra cuando yo lo necesite

y así consecutivamente hasta terminar con el 01041125 y capturar otro, y llenar las calificaciones.

En resumen:
Lleno dos campos de una tabla en un proceso, con 6registros.
Los muestro en otro proceso
y en otro requiero actualizar los 6 registros en el campo Calificacion...

Esta raro mi metodo no??

anghell77 21-05-2006 11:06:53

Pues parece ser que ya!!!
 
He empleado Edit, para capturar cada el valor de la calificacion de materia.
Utilizando la funcion de conversion de datos String, obtengo el valor.
En OnExit de cada Edit, ejecuto un Update

Update Calificaciones set Periodo1=:Entrada
where No_Control=:CTRL and MAteria=:MatParam

con el codigo:

Query2.Close;
Query2.paramByName('CTRL').AsString:=trim(DBEedit1.Text);
Query2.paramByName('MATPARAM').AsString:=trim(DBGrid1.SelectedField.AsString);
Query2.ParamByNAme('entrada')."VALOR DE LA VARIABLE DE LA CONVERSION DE DATOS";
Query2.ExecSQL;
Query1.Next;

El ultimo next, hace que avance el RowSelect en el Grid, este me devuelve el codigo de la materia y por ende a partir de este + No_Control, puedo actualizar la calificacion de dicha materia seleccionada en el PERIODO1...

Se que es algo bastante....arcaico.....dentro de lo ARCAICO y lo ARCAICO...... pero ps bueno....no se mucho de esto....
además, creo que es como aprendemos a no cagarla tanto (perdon por las palabrotas, pero me siento frustrado:p :( ).....

Finalmente, creo que he de aprender un metodo menos estúpido de almacenar los datos salvaguardando la IR......


La franja horaria es GMT +2. Ahora son las 20:21:05.

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