Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Encontrar un registro determinado. (https://www.clubdelphi.com/foros/showthread.php?t=22470)

alfredosg19 16-06-2005 13:10:11

Encontrar un registro determinado.
 
Hola a todos!!, estoy haciendo una agenda personal y en una parte donde quiero poner un cuadro que guarda los horarios, con la hora i el dia, que cuando el usuario clica me crea un registro con el título de trabajo y la hora y el dia correspondiente al cuadro que cliquea, el caso es que si ya existe un registro del (por ejemplo) Lunes a las 12, de 12 a 13 si añado el siguiente cuadro no quiero que se me cree un registro sino que me modifique el anterior. Por tanto y resumiendo ¿como puedo encontrar un registro con una serie de requisitos? (por ejemplo con una determinada fecha, hora y cita), y ¿cómo puedo hacer que si existe este registro me lo modifique y si no que me lo cree de nuevo?. Se me ha ocurrido algo así, (esta mal eso es seguro):
Código:

                  If (ADOTAgenda.FieldByName('Cita_T01').AsString<>'Trabajar') and
                    (ADOTAgenda.FieldByName('Fecha_T01').AsString<>FormatDateTime('dd"/"mm"/"yyyy',now+I))
                        and (ADOTAgenda.FieldByName('Fin_T01').AsString<>InttoStr(Acol+7)+':00:00') then
                          Begin
                          Showmessage('Hola');
                          ADOTAgenda.Edit;
                          DsAgenda.DataSet.Append;
                          ADOTAgenda['Cita_T01']:='Trabajar';
                          ADOTAgenda['Fecha_T01']:=FormatDatetime('dd"/"mm"/"yyyy',now+I);
                          ADOTAgenda['Hora_T01']:=InttoStr(Acol+7)+':00:00';
                          ADOTAgenda['Fin_T01']:='';
                          ADOTAgenda['Fin_T01']:=InttoStr(Acol+7+(horasdia(Acol)))+':00:00';
                          ADOTAgenda['Prioridad_T01']:=True;
                          ADOTAgenda.Post;
                          End
                        Else
                          Begin
                                ADOTAgenda.Edit;
                                DsAgenda.DataSet.Insert;
                                ADOTAgenda['Cita_T01']:='Trabajar';
                            ADOTAgenda['Fecha_T01']:=FormatDatetime('dd"/"mm"/"yyyy',now+I);
                            ADOTAgenda['Hora_T01']:=InttoStr(Acol+7)+':00:00';
                            ADOTAgenda['Fin_T01']:=InttoStr(Acol+8)+':00:00';
                                ADOTAgenda['Prioridad_T01']:=True;
                                ADOTAgenda.Post;
                          End;
                        End;

Muchísimas gracias por vuestro tiempo, pues llevo tres días detrás de este problema que debe ser algo sencillo pero por más que busco en los foros no consigo acoplar la información a lo que necesito.

S.M.S. 16-06-2005 14:29:28

¿No te vale con la función locate?, si existe el registro te posicionará en él.
Saludos.

Ryu 20-06-2005 20:45:35

yo diria
 
:rolleyes: Yo creo que el locate no es bueno
pues aun cuando no encuentre el valor seva al ultimo registro

:D siempre es mejor usar un confiable Query


'select * from tabla where campo = 'parametro'

roman 20-06-2005 21:09:49

Cita:

Empezado por Ryu
Yo creo que el locate no es bueno
pues aun cuando no encuentre el valor seva al ultimo registro

¿Estás seguro?

En la descripción del método Locate de TDataSet (del cuál descienden TAdoDataSet y TAdoTable) se dice:

Cita:

This function:
  • Checks whether the dataset is unidirectional, and if so, raises an EDatabaseError exception.
  • Returns false, indicating that a matching record was not found and the active record was not changed.

Y la descripción de TADODataSet.Locate no dice que cambie este comportamiento.

// Saludos


La franja horaria es GMT +2. Ahora son las 10:30:21.

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