Hola
Teoricamente estas equivocado.
Analicemos tu codigo:
Aqui generamos la variable filtro, Vacia:
Código Delphi
[-]procedure TPRODUCCIONBG.Button1Click(Sender: TObject);
var
Filtro: String;
begin
Aqui decimos que mientras la tabla2 no encuentre su final continue.
La variable filtro sigue estando vacia:
Código Delphi
[-]while not ZTable2.Eof do begin
Aqui indicamos que filtro (vacio) es igual a Filtro (vacio) mas todo lo demas y que es igual al file Cod_interno de la tabla2 que por ningun lado la veo abierta (supongo se abrio antes):
Código Delphi
[-]Filtro := Filtro + ' or COD_INTERNO = ' + ZTable2.FieldByName('COD_INTERNO').ASstring;
ZTable2.Next
Aqui decimos que la tabla 1 es igual que filtro vacio.
Código Delphi
[-]end;
ZTable1.Filter := filtro;
end;
Ahora: que informacion sacaras de algo vacio?, nada.
Por lo tanto me imagino que dara un error de sintaxis.
Saludos