# Editarea iterativa a unui raport existent Doua cai; alege una si tine-o ca **sursa unica de adevar**. ## A. Generator `.prg` reutilizabil (reasezare / raport construit programatic) Un singur `.prg` cu `COPY FILE .frx TO .frx` (+ `.frt`), `USE ... EXCLUSIVE`, `ZAP`, apoi `APPEND BLANK` + `REPLACE` per obiect printr-un singur `FUNCTION addrec` (valori implicite, suprascrise per tip). Sursa de adevar e `.prg`-ul: il re-rulezi si regenereaza `.frx`/`.frt`. Potrivit cand layout-ul se schimba mult (latimi, benzi, orientare) sau raportul se construieste de la zero; fiecare runda porneste de la generatorul rundei precedente (r6: `build_r6.prg` derivat din `build_final.prg`). ## B. Editarea `.fr2` + `frx_convert` Pentru modificari mici de text/camp pe un raport existent: `frx_convert.ps1 -Path r.frx` -> editezi `r.fr2` -> `frx_convert.ps1 -Path r.fr2` regenereaza `r.frx`+`r.frt`. Editezi doar textul vizat (nu rescrie antetul), altfel risti sa strici formatul. ## Reguli - **Nu edita ambele**: daca rulezi generatorul peste un `.frx` editat manual din `.fr2`, pierzi editarea; daca editezi `.fr2` dupa ce ai rulat generatorul, `.frx` nu mai corespunde. Alege o sursa si lucreaza numai in ea. - `FoxBin2Prg.EXE` (prin `frx_convert.ps1`) lasa un `r.fr2.bak` cand `r.fr2` exista deja; nu face parte din livrare - sterge-l. - Modelul de pornire trebuie sa aiba toate benzile (Title/PageHeader/GroupHeader/Detail/GroupFooter/ PageFooter). `Rapoarte\listmfcota.frx` e valid; `COPY FILE` pastreaza si formatul de raport, pe cand `COPY STRUCTURE` produce un `.frx` "invalid" (lipseste formatul).