Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-01-2015
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Question Integridad Referencial Paradox

Hola a todos:

A ver si alguien me puede ayudar en lo siguiente: Utilizo Delphi 5 y estoy tratando de migrar una base de datos paradox a Firebird. Leo las estructuras de las tablas Paradox y migro los campos e indices (indexDefs) sin problema, pero no consigo encontrar cómo migrar la Integridad Referencial entre tablas Paradox porque no se la instrucción o instrucciones que leen la estructura de la Int.Referencial. Otra cosa buena sería conocer el diseño de registro de los ficheros .VAL que se definen con el DatabaseDesktop y que almacenan la Int.Referencial para poder intentar por ahí.

Si alguien puede darme alguna idea de cómo acerlo le estaría muy agradecido.
Marcial.
Responder Con Cita
  #2  
Antiguo 19-01-2015
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Perdón, aunque supongo que lo habeis entendido, quise decir Integridad Referencial.
Responder Con Cita
  #3  
Antiguo 19-01-2015
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Hola a todos:
Respondo yo mismo. He conseguido cargar en un Memo la información de la Int.Referencial de una tabla paradox así:


Código Delphi [-]
procedure GetRintDesc(Table: TTable; Lines: TStrings);
var
  hCur: hDBICur;
  RIDesc: RINTDesc;
  rslt: DBIResult;
  B: Byte;
  Temp: string;
begin
  Check(DbiOpenRIntList(Table.DBHandle, PChar(Table.TableName), nil, hCur));
  try
    Lines.Clear;
    Check(DbiSetToBegin(hCur));
    rslt := DBIERR_NONE;
    while (rslt = DBIERR_NONE) do begin
      rslt := DbiGetNextRecord(hCur, dbiNOLOCK, @RIDesc, nil);
      if (rslt <> DBIERR_EOF) then begin
        Check(rslt);
        Lines.Add('RI Number: ' + IntToStr(RIDesc.iRintNum));
        Lines.Add('RI Name: ' + RIDesc.szRintName);
        case RIDesc.eType of
          rintMASTER: Lines.Add('RI Type: MASTER');
          rintDEPENDENT: Lines.Add('RI Type: DEPENDENT');
        else
          Lines.Add('RI Type: UNKNOWN');
        end;
        Lines.Add('RI Other Table Name: ' + RIDesc.szTblName);
        case RIDesc.eModOp of
          rintRESTRICT: Lines.Add('RI Modify Qualifier: RESTRICT');
          rintCASCADE: Lines.Add('RI Modify Qualifier: CASCADE');
        else
          Lines.Add('RI Modify Qualifier: UNKNOWN');
        end;
        case RIDesc.eDelOp of
          rintRESTRICT: Lines.Add('RI Delete Qualifier: RESTRICT');
          rintCASCADE: Lines.Add('RI Delete Qualifier: CASCADE');
        else
          Lines.Add('RI Delete Qualifier: UNKNOWN');
        end;
        Lines.Add('RI Fields in Linking Key: ' + IntToStr(RIDesc.iFldCount));
        Temp := '';
        for B := 0 to (RIDesc.iFldCount)  do
          Temp := Temp + IntToStr(RIDesc.aiThisTabFld[b]) + ', ';
        SetLength(Temp, Length(Temp) - 2);
        Lines.Add('RI Key Field Numbers in Table: ' + Temp);
        Temp := '';
        for B := 0 to RIDesc.iFldCount - 1 do
          Temp := Temp + IntToStr(RIDesc.aiOthTabFld[b]) + ', ';
        SetLength(Temp, Length(Temp) - 2);
        Lines.Add('RI Key Field Numbers in Other Table: ' + Temp);
        Lines.Add('');
      end;
    end;
  finally
    Check(DbiCloseCursor(hCur));
  end;
end;
y la llamada :

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
GetRintDesc(Cabeceras, Memo1.Lines);
end;


"Cabeceras" es el nombre de la tabla a consultar. No olvideis poner en el USES: BDE

Gracias a todos por intentarlo.
Responder Con Cita
  #4  
Antiguo 20-01-2015
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Gracias a ti por publicar la solución

saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
integridad referencial not supported en paradox gonza_619 Varios 1 09-09-2010 17:20:11
Integridad Referencial seara2005 Firebird e Interbase 6 15-05-2006 06:58:29
¿ Integridad referencial ? Turia MySQL 1 25-01-2006 13:59:33
No me deja hacer la integridad referencial en paradox Sayuri Conexión con bases de datos 6 27-07-2005 22:53:03
Integridad Referencial tablas paradox tomasgarcia Conexión con bases de datos 2 06-03-2004 19:12:29


La franja horaria es GMT +2. Ahora son las 22:30:58.


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
Copyright 1996-2007 Club Delphi