verificare partener: garda pe cont NULL, hook-uri de disciplina, docs compactate
- ooperatii_comune: verific_partener nu mai construieste SQL NULL cand contul primit e NULL (EMPTY(.NULL.) e .F. in VFP) - utile\context_watch.ps1 si utile\docs_revizie_check.ps1: masurarea contextului sesiunii si cadenta reviziei de documentatie, prin hook-uri Claude Code (instalare in docs\monitorizare-context.md) - reguli_lucru: delegare la subagenti, modificari minime si scoped, scrierea si revizuirea documentatiei, changelog strictul necesar (regulile 3, 6, 9, 11, 12) - scripturi-migrare-db: continutul unui script (scoped, fara select, idempotent) - teste noi pentru cele doua erori din achizitia de import - restul documentatiei compactata, fara pierdere de reguli Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RYbiinqXxdEqXi53x4Ro7K
This commit is contained in:
21
docs/conventie_null_vfp.md
Normal file
21
docs/conventie_null_vfp.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Garzi pe valori NULL (VFP)
|
||||
|
||||
Campurile din cursoarele intoarse de Oracle pot fi `.NULL.`. In VFP `EMPTY(.NULL.)` intoarce
|
||||
`.F.`, deci o garda scrisa doar cu `EMPTY()` **nu prinde NULL**, iar concatenarea cu NULL face
|
||||
tot sirul NULL (inclusiv un SQL construit prin `+`).
|
||||
|
||||
Forma corecta, cu tipul evaluat primul ca sa opreasca acolo:
|
||||
|
||||
```foxpro
|
||||
If Type('tcCont') # 'C' Or Empty(Nvl(tcCont, ''))
|
||||
Return
|
||||
Endif
|
||||
```
|
||||
|
||||
- `Nvl(x, '')` in interiorul lui `Empty()`, nu `Isnull(x) Or Empty(x)`.
|
||||
- `TYPE()` pe o variabila cu NULL de tip caracter intoarce tot `'C'` - nu tine loc de `Nvl`.
|
||||
- Acelasi tratament la orice text construit prin `+` din campuri de cursor
|
||||
(SQL, mesaje, chei): un singur camp NULL anuleaza tot sirul.
|
||||
|
||||
Simptom tipic cand lipseste garda: `SQL statement parameter is required for non-prepared
|
||||
SQLEXEC() calls` in `OEXECUTOR.OEXECUTE` - SQL-ul ajuns la `SQLEXEC` era `.NULL.`.
|
||||
Reference in New Issue
Block a user