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)
-   -   Error al encontrar registro. (https://www.clubdelphi.com/foros/showthread.php?t=23010)

alfredosg19 04-07-2005 12:35:58

Error al encontrar registro.
 
Hola, tengo un problema a la hora de localizar un registro, he puesto el siguiente código:
Código:

                         
  If ADOTAgenda.Locate('Cita_T01','Trabajar',[locaseinsensitive]) and                  ADOTAgenda.Locate('Fecha_T01',FormatDateTime('dd"/"mm"/"yyyy',now+I),
  [locaseinsensitive]) and ADOTAgenda.Locate('Fin_T01',InttoStr(Acol+7)+':00:00',[locaseinsensitive] then
                                  Begin
                                    Showmessage('Hola');
                                    ADOTAgenda.Edit;
                                  ADOTAgenda['Fin_T01']:=InttoStr(Acol+8)+':00:00';
                                  ADOTAgenda['Prioridad_T01']:=True;
                                    ADOTAgenda.Post;
                                  End
                            Else
                                  Begin
                                    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']:=InttoStr(Acol+8+(horasdia(Acol)))+':00:00';
                                  ADOTAgenda['Prioridad_T01']:=True;
                                    ADOTAgenda.Post;
                                  End;
                    End;

y me da el siguiente error:

Cita:

Project Agenda.Exe raised exception class OleException with message 'El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual'. Proccess Stopped. Use Step o Run to continue.
Deduzco que el problema es con la base de datos, pero no entiendo por qué, ¿alguien sabe a que puede deberse?. Muchas gracias.

Lepe 04-07-2005 17:25:59

Cada instrucción locate busca 1 valor, por tanto, si en el if tienes 3 locates, se realizan 3 búsquedas distintas, es decir, el registro encontrado tendrá Fin_T01, pero no tiene que cumplir las otras 2 condiciones.

Necesitas hacer una búsqueda por los 3 parámetros juntos a la misma vez, mira la ayuda de TCustomADODataSet.Locate
Código Delphi [-]
with ADOTable1 do

  Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
Aqui si se busca 1 registro en el que coincide la compañia, el contacto y el número de telefono con los datos suministrados.

Por otra parte, en el else tienes un Edit, y justo despues un Append ¿?¿?¿

Un saludo


La franja horaria es GMT +2. Ahora son las 15:57:49.

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