Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Grabar El Mismo Registro Con Fechas Diferente (https://www.clubdelphi.com/foros/showthread.php?t=97205)

SERVICOMSO 03-02-2025 19:59:12

Grabar El Mismo Registro Con Fechas Diferente
 
Saludos a todos y todas...
Favor orientarme, tengo un registro con los campos: codigo, nombre, apellidos, cedula, dirección, fecha_curso, entre otros campos, mi pregunta es como logro grabar el mismo registro con fechas diferentes en el mismo formulario, uso SQLServer y Delphi. Cuando busco una persona por el código me aparece en el formulario con todos sus datos, pero necesito grabar esa misma persona con todos su datos iguales, pero con otra fecha, para no tener que digitar todos los datos otra vez. Cómo lo hago?, no soy avanzado, manejo algunas cosas.

Neftali [Germán.Estévez] 04-02-2025 09:54:22

Hola y bienvenido a los foros.
Te recomiendo que revises la Guía de estilo de los foros.


En cuanto a tu pregunta te recomendaría que fueras un poco más concreto y facilitaras un poco más de información de cómo estás haciendo las cosas.
¿Porqué digo esto? Para evitar pérdidas de tiempo de quien te contesta y tuyas si la solución no va en el camino que estás programando.


Se pueden insertar registros en una Base de Datos:
a) Utilizando código (Append, Post,...)
b) Utilizando componentes visuales (DBEdit o DBGrid, DbNavigator,...)

Dependiendo de cómo lo estés haciendo la solución puede ir en un camino o en otro.
También es bueno para que la gente te ayude, que muestres un poco del código que estás utilizando. De esa forma podrán darte una solución más enfocada a lo que necesitas.

SERVICOMSO 04-02-2025 18:52:17

Disculpas, a ver si me explico mejor:
Tengo un formulario creado donde se registro los siguientes datos:
Código, Nombre, Apellidos, Teléfono, Cédula, Email, Fecha_Curso
Al concluir de registrar grabo los datos con DBNavigator e igual elimino, avanzo, retrocedo, etc. Por igual cuando quiero buscar un estudiante en específico y sus datos en el mismo formulario, lo hago por el campo Código el cual es numérico, para realizar la búsqueda digito el siguiente código en el evento OnKeyPress del Edit1, todo en el mismo formulario, el cual me funciona bien, con esa parte no tengo problemas.

Código Delphi [-]
procedure TFormRegistroEstudiantes.Edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
if key = #13 then
  begin
    AdoEstudiantes.Open;
    AdoEstudiantes.Filter := ' numero =' + Edit1.Text;
    AdoEstudiantes.Filtered := Truee;
If AdoEstudiantes.RECORDCOUNT = 0 THEN
   Showmessage (' Ese nùmero no existe' )
   ELSE
edit1.SetFocus;
    end;

end;

El problema lo tengo cuando al buscar los datos de un estudiante y quiero registrar los mismos datos, pero con otra fecha, sin que se pierda la fecha que ya está grabada, o sea, la fecha anterior, porque estos realizan cursos cada cierto tiempo y la fecha cambia, lo que quiero es realizar mi búsqueda del mismo estudiante, colocarle la fecha que le corresponda, sin la necesidad de digitar otra vez los datos personales, pues el único campo que varía cada año es el campo fecha, al final tendré las diferentes fechas en que el mismo estudiante realizó un curso, lo que sucede es que todo lo estoy haciendo en un mismo formulario, siempre son los mismos estudiantes. No sé de otra forma, no tengo conocimientos avanzados, pero soy creativo y me gusta.

Formularios Delphi, conectados a base de datos Sql.

Gracias y disculpas.

Neftali [Germán.Estévez] 05-02-2025 13:24:40

Por favor, utiliza TAGs cuando añadas código delphi.

Volviendo a tu pregunta...
En tu formulario cuando haces la búsqueda, el registro en el que te has posicionado (y que se ve en pantalla) apunta a un registro ya creado de un alumno (con los datos guardados en Base de Datos).
Si cambias la fecha y guardas, se va a modificar el registro existente (no es lo que quieres).
No puedes usar los componentes visuales para lo que necesitas (INSERTAR UNO NUEVO), porque están apuntando al registro existente (BUSQUEDA).

Una forma de conseguir lo que necesitas es, hacer la nueva inserción por código, por ejemplo un botón que diga [GENERAR NUEVO REGISTRO], manteniendo el registro que tienes en pantalla para aprovechar los datos que tienes y no tener que volver a escribirlos.

Ese botón debería:
1) Pedir la nueva fecha (porque es el dato que quieres cambiar
2) Coger el resto de datos del estudiante del registro que tienes n pantalla (para no tener que repetirlos)
3) Generar un nuevo registro e insertarlo.

El código del botón sería algo así:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
var
  sDate:string;
  cDate:TDate;
begin
  // leemos la fecha como cadena
  sDate := InputBox('Fecha del curso', 'Introduzca kla nueva fecha para el curso:', DateToStr(Date));
  // Intentamos convertirla
  cDate := StrToDateDef(sDate, now);
  // realizamos la inserción del nuevo registro
  tablaEstudiantes.Open;
  tablaEstudiantes.Append;
  // rellenar la fecha y el resto de campos (estos de lo que hay en pantalla)
  tablaEstudiantes.FieldByName('fecha_curso').AsDate := cDate;
  tablaEstudiantes.FieldByName('Nombre').AsString := AdoEstudiantes.FieldByName('Nombre').AsString;
  tablaEstudiantes.FieldByName('Apellidos').AsString := AdoEstudiantes.FieldByName('Apellidos').AsString;
  ...
  // insertar el nuevo registro
  tablaEstudiantes.Post;
end;

SERVICOMSO 08-02-2025 04:15:34

Grabar el mismo registro con fecha diferente
 
Saludos otra vez, veo que me comprendieron y me explique mejor, si es eso lo que quiero, son los mismos estudiantes que realizan el mismo curso en diferentes fechas,por lo tanto el dato que va a variar es la fecha, pero sin que se pierdan las fechas que se van grabando y no tener que escribir otra veza los mismos datos de los estudiantes.

Practicare el código que me enviaron hasta resolver esa situación.

Gracias por la atención.


La franja horaria es GMT +2. Ahora son las 13:38:22.

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