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
DM.QryEpisodioItems.Edit;
end
else
begin
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