bonjour! je veux copier des enregistrement d'une table. c'est pourquoi j'ai utilisé un filtre pour la séléction des enregistrements et la fonction dbicopytable pour stocker ces enregistrements filtrés dans une nouvelle table.
la copie se fait sans erreur mais le pb est que le filtrage n'est pas réalisé: la table copiée est la meme que la table initiale.
Voici le code de ma focntion:
procedure CopyTable(FromDir, SrcTblName, ToDir, DestTblName: String);
var
DBHandle: HDBIDB;
ResultCode: DBIResult;
Src, Dest, Err: Array[0..255] of Char;
SrcTbl, DestTbl : TTable;
begin
SrcTbl := TTable.Create(Application);
DestTbl := TTable.Create(Application);
try
SrcTbl.DatabaseName := FromDir;
SrcTbl.TableName := SrcTblName;
SrcTbl.Filter := 'Compteur ='+ QuotedStr(Edit4.Text);
SrcTbl.Filtered := true;
SrcTbl.Open;
DBHandle := SrcTbl.DBHandle;
SrcTbl.Close;
ResultCode := DbiCopyTable(DBHandle,true,
StrPCopy(Src,FromDir + '\' + SrcTblName),nil,
StrPCopy(Dest,ToDir + '\' + DestTblName));
if (ResultCode <> DBIERR_NONE) then
begin
DbiGetErrorString(ResultCode,Err);
raise EDatabaseError.Create('While copying ' +
FromDir + '\' + SrcTblName + ' to ' +
ToDir + '\' + DestTblName + ', the '
+ ' database engine generated the error '''
+ StrPas(Err) + '''');
end
finally
SrcTbl.Free;
DestTbl.Free;
end;
end;
Merci d'avance.