Si exactamente eso, tal vez no permite tener dos campos llave, no sé.. Mira aquí esta el código que utilizo para guardar:
Código Delphi
[-]
var
bann:Integer;
bannd:Integer;
begin
bann:=0;
bannd:=0;
if(completo=0)then
begin
bann:=1;
EditNom.SetFocus;
end;
if(completo=15)then
begin
bann:=1;
bannd:=1;
ADOtblPac.Open;
with ADOtblPac do
begin
ADOtblPac.Insert;
ADOtblPac.FieldByName('CveCte').AsString:=EditCvePac.Text;
ADOtblPac.FieldByName('NombreC').AsString:=EditNom.Text;
ADOtblPac.FieldByName('ApellidoC').AsString:=EditApe.Text;
ADOtblPac.FieldByName('CalleC').AsString:=EditCalle.Text;
ADOtblPac.FieldByName('NoC').AsInteger:=StrToInt(EditNo.Text);
ADOtblPac.FieldByName('CPC').AsInteger:=StrToInt(EditCp.Text);
ADOtblPac.FieldByName('TelC').AsString:=EditTel.Text;
ADOtblPac.FieldByName('CdC').AsString:=EditCd.Text;
ADOtblPac.FieldByName('ColC').AsString:=EditCol.Text;
ADOtblPac.FieldByName('RfcC').AsString:=EditRfc.Text;
ADOtblPac.Post;
ADOtblPac.Refresh;
ADOtblPac.Close;
end;
ADOtblFichaId.Open;
with ADOtblFichaId do
begin
ADOtblFichaId.Insert;
ADOtblFichaId.FieldByName('CveCte').AsString:=EditCvePac.Text;
ADOtblFichaId.FieldByName('IdFicha').AsString:=EditHClin.Text;
ADOtblFichaId.FieldByName('FechaNac').AsString:=EditFNac.Text;
ADOtblFichaId.FieldByName('LugarNac').AsString:=EditLNac.Text;
ADOtblFichaId.FieldByName('Ocupacion').AsString:=EditOcup.Text;
ADOtblFichaId.FieldByName('Escolaridad').AsString:=EditEsc.Text;
ADOtblFichaId.FieldByName('Sexo').AsString:=ComboSexo.Text;
ADOtblFichaId.FieldByName('Edocivil').AsString:=ComboEdoCivil.Text;
ADOtblFichaId.FieldByName('FechaElabExp').AsString:=EditPrimCons.Text;
ADOtblFichaId.Post;
ADOtblFichaId.Refresh;
ADOtblFichaId.Close;
end;
EditCvePac.Text:=EditVacio.Text;
EditNom.Text:=EditVacio.Text;
EditApe.Text:=EditVacio.Text;
EditCalle.Text:=EditVacio.Text;
EditNo.Text:=EditVacio.Text;
EditCp.Text:=EditVacio.Text;
EditCol.Text:=EditVacio.Text;
EditTel.Text:=EditVacio.Text;
EditCd.Text:=EditVacio.Text;
EditFNac.Text:=EditVacio.Text;
EditEdad.Text:=EditVacio.Text;
EditLNac.Text:=EditVacio.Text;
EditOcup.Text:=EditVacio.Text;
EditEsc.Text:=EditVacio.Text;
ComboSexo.Text:=EditVacio.Text;
ComboEdoCivil.Text:=EditVacio.Text;
EditRfc.Text:=EditVacio.Text;
EditPrimCons.Text:=EditVacio.Text;
end;
if(bann=0)then
begin
if(EditNom.Text=EditVacio.Text)then
EditNom.SetFocus
else
if(EditApe.Text=EditVacio.Text)then
EditNom.SetFocus
else
if(EditCalle.Text=EditVacio.Text)then
EditApe.SetFocus
else
if(EditNo.Text=EditVacio.Text)then
EditCalle.SetFocus
else
if(EditCp.Text=EditVacio.Text)then
EditNo.SetFocus
else
if(EditCol.Text=EditVacio.Text)then
EditCp.SetFocus
else
if(EditTel.Text=EditVacio.Text)then
EditCol.SetFocus
else
if(EditCd.Text=EditVacio.Text)then
EditTel.SetFocus
else
if(EditFNac.Text=EditVacio.Text)then
EditCd.SetFocus
else
if(EditLNac.Text=EditVacio.Text)then
EditFNac.SetFocus
else
if(EditOcup.Text=EditVacio.Text)then
EditLNac.SetFocus
else
if(EditEsc.Text=EditVacio.Text)then
EditOcup.SetFocus
else
if(ComboSexo.Text=EditVacio.Text)then
EditEsc.SetFocus
else
if(ComboEdoCivil.Text=EditVacio.Text)then
ComboSexo.SetFocus
else
if(EditRfc.Text=EditVacio.Text)then
ComboEdoCivil.SetFocus;
end;
if(bannd=1)then
begin
if(MessageDlg('Los datos han sido guardados satisfacoriamente, ¿Desea llenar la ficha clínica?', mtConfirmation, [mbYes,mbNo], 1)=mrYes) then
begin
showmessage('Ficha Clinica');
end
else
begin
showmessage('Menu PPAl');
end;
Utilizo también un archivo en el que se va incrementando las claves, para obtener automaticamente la clave del paciente y la clave de fichaid, con esto me generaria estas dos claves iguales p.e CvePac:000023 y FichaId:000023.. Pero ya tambien le modifique esa parte para que los numeros fueran diferentes y me marca lo mismo, así que creo q ese no es el prob y lo deje igual.. Este es el codigo q utilizo para hacer esto:
Código Delphi
[-]
var
Cont : TStringList;
Int: Integer;
comp:String;
Cont1 : TStringList;
Int1: Integer;
comp1:String;
begin
completo:=0;
Int:= 1;
if FileExists('C:\CvePac.txt') then begin
Cont:= TStringList.Create;
Cont.LoadFromFile('C:\CvePac.txt');
Int:= StrToInt(Cont[0]) + 1;
Cont.Clear;
Cont.Add(IntToStr(Int));
comp:=IntToStr(Int);
Cont.SaveToFile('C:\CvePac.txt');
Cont.Destroy;
EditCvePac.Text:=(StringOfChar('0',6-length(comp))+comp);
end else begin
Cont:= TStringList.Create;
Cont.Add(IntToStr(Int));
comp:=IntToStr(Int);
Cont.SaveToFile('C:\CvePac.txt');
Cont.Destroy;
EditCvePac.Text:=(StringOfChar('0',6-length(comp))+comp);
end;
Int1:= 1;
if FileExists('C:\IdFicha.txt') then begin
Cont1:= TStringList.Create;
Cont1.LoadFromFile('C:\IdFicha.txt');
Int1:= StrToInt(Cont1[0]) + 1;
Cont1.Clear;
Cont1.Add(IntToStr(Int1));
comp1:=IntToStr(Int1);
Cont1.SaveToFile('C:\IdFicha.txt');
Cont1.Destroy;
EditHClin.Text:=(StringOfChar('0',6-length(comp1))+comp1);
end else begin
Cont1:= TStringList.Create;
Cont1.Add(IntToStr(Int1));
comp1:=IntToStr(Int1);
Cont1.SaveToFile('C:\IdFicha.txt');
Cont1.Destroy;
EditHClin.Text:=(StringOfChar('0',6-length(comp1))+comp1);
end;