Heart-Profit ERP
November 27, 2024, 11:40:41 am *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Login Register  
Pages: [1]
  Print  
Author Topic: Change-Key: niet omnummeren via getrimde sleutelvelden  (Read 1042 times)
0 Members and 0 Guests are viewing this topic.
Heart Informatisering B.V.
Partner
******
Offline Offline

Posts: 27476


View Profile WWW
« on: October 13, 2009, 02:52:23 pm »

Met ingang van deze Releasenote is er een belangrijke aanpassing aangebracht in de werkwijze waarop Profit-Change-Key haar sleutels omnummert.

Per heden is er een nieuwe regel opgenomen in de koding, die zegt dat een Sleutelwaarde in een rubriek niet kan worden omgenummerd conform een index, waarbij de betreffende rubriek getrimd is opgenomen én niet als laatste veld in de index is opgenomen.

Een hele mond vol, en bij deze iets meer (technische) uitleg...

Bij het samenstellen van een index bestaat er de mogelijkheid om een veld getrimd op te nemen in de index. Hiermee worden alle overbodige spaties aan de rechterkant verwijderd, waardoor er feitelijk minder info in de index terecht komt (en deze niet onnodig groot wordt).

Dit trimmen mag echter niet zomaar ongestrafd overal worden toegepast; dit zou alleen maar mogen indien het betreffende indexveld tevens het laatste veld is in de index.

Kortom, stel dat we het Relatiebestand als voorbeeld nemen, dan hebben we een index op TRIM(LOSU_SID)+TRIM(LORE_RID). Omdat het Relatie-Id (LORE_RID) hier het laatste veld is in deze index, mag dit veld getrimd worden.

Betreft het om te nummeren veld niet het laatste veld in de index, bijvoorbeeld bij de index van een Ingekomen Faktuur (ADFI) alwaar er wordt omgenummerd via index 3:

               TRIM(XXSU_SID)+TRIM(XXRC_RID)+TRIM(ADFI_FID)

dan zal een index niet uniek genoeg zijn, en kunnen we situaties kreëeren waarbij een Faktuur "012345" bij Relatie "ENCDEN" precies dezelfde sleutelwaarde oplevert als Faktuur "2345" bij Relatie "ENCDEN01".

Profit-Change-Key die op basis van deze indexen een sleutelwaarde gaat omnummeren kan hierop foutlopen, zonder dat op een simpele wijze achterhaald kan worden dát dit foutgelopen is. Zouden we volgens de index zoeken in de Fakturen naar Relatie "ENCDEN", dan zouden we eerst ENCDEN01+2345 kunnen vinden, waar er ook een ENCDEN+2000 bestaat. Zodra gekonstateerd wordt dat de Relatie niet meer voldoet, zal Change-Key denken dat ze klaar is, terwijl delen nog niet zullen zijn omgenummerd.

Nb: De oplettende lezer zal zien dat dus ook het éérste veld in de index, de bedrijfs-identifikatie, niet getrimd mag worden. Dat klopt, maar, v.w.b. de bedrijfs-identifikatie is er een regel gesteld die zegt dat we geen bedrijven mogen definiëren die kwa linkerdeel uit enkel bestaan.  "HEART-A" <> "HEART-B" is toegestaan, omdat HEART-A niet voorkomt als linkerdeel van HEART-B (of andersom). Een bedrijf "HEART" naast een bedrijf "HEART-B" is echter niet toegestaan, omdat "HEART" als linkerdeel voorkomt in "HEART-B".

Her en der zitten er in het pakket nog indexen die niet conform deze regels zijn. In de afgelopen jaren zijn er al wel vaker massale konversies geweest waarbij indexen in het hele pakket door gewijzigd zijn, zoals recentelijk ook voor de tabellen ADBF en ADFI.

Per heden is Profit-Change-Key zodanig aangepast dat ze gewoonweg niet meer omnummert via een index waarbij het om te nummeren veld getrimd is opgenomen in de index. Dit, omdat theoretisch de mogelijkheid bestaat dat e.e.a. fout gaat. De betreffende index zal worden overgeslagen, en er wordt gezocht naar een volgende index. Is deze er niet, dan zal de tabel mogelijk sequentieel worden doorlopen.

Hierdoor zal Change-Key weliswaar voor die tabellen niet optimaal snel funktioneren, maar kan het niet meer (a.g.v. bovenstaande indexfout) foutlopen.



Zodra de situatie ontstaat dat er een sleutel in de oude situatie via een index omgenummerd zou zijn geworden, doch in de nieuwe situatie deze index overgeslagen werd omdat het betreffende veld getrimd in die index voorkwam, dan zal de Verwerkingssoort worden uitgebreid met de letter "T" (Trim).

Als we bovenstaand overzicht met het onderstaande vergelijken, dan zien we dat bijv. LOIA en ADFP tabellen zijn waarbij dergelijke Sleutelwijzigingen mogelijk verkeerd liepen.



FunktieOmschrijvingDtm.Vl.WyzDtm.L.Wyz
APCKDO      Omschrijving (nog) niet bekend    13-10-2009    13-10-2009
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2005, Lewis Media Valid XHTML 1.0! Valid CSS!
Page created in 0.189 seconds with 20 queries.