sync SVN r18205

This commit is contained in:
2026-09-25 12:21:29 +03:00
parent e13b0e928e
commit 63134daf6a
4 changed files with 25 additions and 4 deletions

View File

@@ -4,6 +4,9 @@ Comun tuturor proiectelor ROA*.
## Ce nu functioneaza
Exemple deja rezolvate cu SELECT in loc de ALTER: `overificari.vc2:3088`,
`frm_import_extrase_banca.sc2:2324`.
```foxpro
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
...
@@ -38,6 +41,10 @@ USE IN (lcCursorRaw)
* de-aici incolo doar REPLACE (date), NICIODATA ALTER TABLE (structura) pe (lcCursor)
```
Dupa acest pas cursorul (`lcCursor`) e un cursor local obisnuit - `ALTER TABLE` functioneaza
normal pe el DUPA ACEEA (ex. intr-o alta functie care primeste cursorul deja gata construit),
doar comanda imediat urmatoare unui `oExecute()` e restrictionata.
ATENTIE: nici cursorul rematerializat NU accepta `ALTER TABLE` daca are un nume de camp peste
10 caractere (eroare 1115 `Invalid operation for the cursor.`). Garda `SourceType = 3` nu
ajunge. Cursoarele din `select * from v_...` (ex. `tact` = `vact_tot`: id_jtva_coloana,
id_sucursala, tva_incasare) au astfel de campuri -> `ALTER TABLE` nu se foloseste deloc pe ele.
Schimbarea tipului unei coloane (T -> D) se face cu `SELECT` explicit, `TTOD(camp) AS camp`,
in alias temporar si inapoi `INTO CURSOR ... READWRITE`; sau grila se leaga la `TTOD(camp)`.
`ALTER TABLE` merge doar pe cursor cu nume <= 10 caractere, creat de tine.