Ver Mensaje Individual
  #3  
Antiguo 27-01-2009
Lizette Lizette is offline
Miembro
 
Registrado: jun 2008
Posts: 98
Reputación: 16
Lizette Va por buen camino
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;
//PARA CVE PACIENTE
//Deseo que comienze desde el numero:
  Int:= 1;
  if FileExists('C:\CvePac.txt') then begin
//Creo StringList
  Cont:= TStringList.Create;
//Abro fichero
  Cont.LoadFromFile('C:\CvePac.txt');
//leo la primera linea y le sumo 1
  Int:= StrToInt(Cont[0]) + 1;
//Limpio el fichero txt
  Cont.Clear;
//Agrego el nuevo valor
  Cont.Add(IntToStr(Int));
  comp:=IntToStr(Int);
//Actualizo el fichero
  Cont.SaveToFile('C:\CvePac.txt');
//Destrozo lo que quedo en memoria
  Cont.Destroy;
  EditCvePac.Text:=(StringOfChar('0',6-length(comp))+comp);
end else begin
//Este es si no existe el fichero, Creo StringList
  Cont:= TStringList.Create;
//Agrego el nuevo valor por defecto 1
  Cont.Add(IntToStr(Int));
  comp:=IntToStr(Int);
//Grabo el fichero
  Cont.SaveToFile('C:\CvePac.txt');
//Destrozo lo que quedo en memoria
  Cont.Destroy;
  EditCvePac.Text:=(StringOfChar('0',6-length(comp))+comp);
 end;
 //PARA HISTORIA CLINICA (FICHA_ID)
 //Deseo que comienze desde el numero:
  Int1:= 1;
  if FileExists('C:\IdFicha.txt') then begin
//Creo StringList
  Cont1:= TStringList.Create;
//Abro fichero
  Cont1.LoadFromFile('C:\IdFicha.txt');
//leo la primera linea y le sumo 1
  Int1:= StrToInt(Cont1[0]) + 1;
//Limpio el fichero txt
  Cont1.Clear;
//Agrego el nuevo valor
  Cont1.Add(IntToStr(Int1));
  comp1:=IntToStr(Int1);
//Actualizo el fichero
  Cont1.SaveToFile('C:\IdFicha.txt');
//Destrozo lo que quedo en memoria
  Cont1.Destroy;
  EditHClin.Text:=(StringOfChar('0',6-length(comp1))+comp1);
end else begin
//Este es si no existe el fichero, Creo StringList
  Cont1:= TStringList.Create;
//Agrego el nuevo valor por defecto 1
  Cont1.Add(IntToStr(Int1));
  comp1:=IntToStr(Int1);
//Grabo el fichero
  Cont1.SaveToFile('C:\IdFicha.txt');
//Destrozo lo que quedo en memoria
  Cont1.Destroy;
  EditHClin.Text:=(StringOfChar('0',6-length(comp1))+comp1);
 end;
Responder Con Cita