Tema: Ayuda Locate
Ver Mensaje Individual
  #1  
Antiguo 28-11-2022
steelha steelha is offline
Miembro
 
Registrado: mar 2012
Posts: 158
Reputación: 13
steelha Va por buen camino
Ayuda Locate

Buenas a todos. Estoy teniendo problema con un locate multiples campos. estoy buscando por dos condiciones que es el episodio y el codigo de items
la tabla es la siguiente:

Cita:
Table EpisItems
EpEpisodio bigint Unchecked
EpFecha char(10) Unchecked
Epiditems bigint Unchecked
EpPlantilla bigint Checked
EpValor text Checked
Código Delphi [-]
procedure TfrmPacientes.insomodvalor(codigo, paciente, medico: Integer;
  valor: string);
begin
  Dm.QryEpisodioItems.Close;
  DM.QryEpisodioItems.Open;
  if Dm.QryEpisodioItems.Locate('EpEpisodio;Epiditems',VarArrayOf([epinumero,codigo]),[]) then
      begin
        // Record found
        DM.QryEpisodioItems.Edit;
      end
  else
      begin
        // Record Not found
        DM.QryEpisodioItems.Insert;
        DM.QryEpisodioItemsEpEpisodio.Value := epinumero;
        DM.QryEpisodioItemsEpFecha.Value    := DateToStr(now);
        DM.QryEpisodioItemsEpPlantilla.Value:= DM.QryPlantillaDefaultidPlantilla.Value;
        DM.QryEpisodioItemsEpiditems.Value  := codigo;
      end;
  DM.QryEpisodioItemsEpValor.Value := valor;
  DM.QryEpisodioItems.Post;
  DM.QryEpisodioItems.Close;
end;

La cosa es que si el episodio y el ítem ya existe debería solo modificar el contenido del campo valor de lo contrario deberia insertar todos los campos. Pero de alguna forma siempre pasa por alto de que ya existe y lo intenta crear y de hay me da el error de primary key violation. Estuve buscando y no veo problema alguno en la sentencia: pero aun así no se que me estoy pasando por alto. Cualquier ayuda o comentario será bien acogido.

NOTA La tabla esta bajo SQL SERVER 2014 Delphi Xe7/10
Responder Con Cita