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.