Egyedi azonosítóinak hozzáférés, a hozzáférés, cikkek, programozás - programozás C, Delphi,

Mi a probléma
MS Access nem ad nekünk a lehetőséget, hogy válasszon a módszer egyértelműen azonosítja a sorban. Az egyetlen lehetőség - a számláló. Ahhoz azonban, hogy a hitel - a legtöbb esetben ez elég.

A nehézségek akkor kezdődnek, amikor azt szeretné, hogy megszilárdítsa az adatokat a különböző adatbázisokban. Nyilvánvaló, hogy még a használatát méter véletlen értékek nem garantálja a különféle konfliktusok hiánya. A probléma megoldásához az ilyen helyzeteket nem könnyű, főleg azért, mert az a tény, hogy eltekintve készülő több, és az egyik fő tömege alárendelt táblázatok azokat. Replikáció is felvet hasonló nehézségeket.

Tovább kellemetlen tulajdonsága számláló yavlaetsya, hogy néha az érték még mindig sokszorosításra, különösen hiányában egyedi index ezen a területen.

módját, hogy megoldja
A hagyományos módszer, amikor egyedi érték alapján egy speciális asztalon létrehozásáról olyan területen, amely szerint változik egy adott algoritmus minden új címet a kliens alkalmazás hozzá. Az így kapott értékeket lehet végezni még néhány manipuláció írt a kulcs mezőbe. A módszer hátránya az, hogy nyilvánvaló összetettsége és kétes megbízhatóság. Különösen a funkció használható arra, hogy ilyen egyedi azonosítóval, nem lehet használni az ingatlan „Default” mezőt a táblázatban.

Egy másik módszer az, hogy külön a számláló tartományok az egyes bázisok. Egy ilyen eljárás nem is rossz. Hátránya, hogy meg kell tervezni előre száma és mérete tartományokat. Különben valaki nem lehet elég hely. Ezen túlmenően, a telepítés a kezdeti érték számlálók további intézkedéseket ír elő.

A harmadik megközelítés létrehozását foglalja magába kifejezés, melynek eredménye lenne érték használható, mint egy egyedi azonosítót. Arra is szükség van arra, hogy adja meg ezt a tulajdon „Default” mezőt a táblázatban. Az alábbiakban két olyan kifejezéseket részletesen: egy húr, és a másik egy numerikus típusú.

Típus azonosító karakterlánc
Előállítás egyedi érték ebben az esetben előállításán alapul sorban 16 karakter. Először is ott van a bal szélső a parancssori paramétereket. parancssori paramétere is, nem csak a paraméter start / cmd, hanem a program:

application.setoption „parancssori”, „w”

Majd a hexadecimális értéket az aktuális dátumot és időt. A fennmaradó 7 karaktert vesz egy véletlen számot (hexadecimális formában). Az eredmény a következő:

id = bal (parancsot (), 1) hex (most () mod 2 ^ 16) hex ((most () - int (NOW ())) * 65535) hex (RND () * (2 ^ 28-1))

bal (parancsot (), 1), bármely alkalmas szimbólum (, hogy először a parancssor argumentum)
hex (most () mod 2 ^ 16) időpontját a modul 65536 (azt nem több, mint 4 karakter)
hex ((most () - int (NOW ())) * 65535) időskálán 65535 (ami nem volt több, mint 4 karakter)
hex (RND () * (2 ^ 28-1)) egy véletlen számot 0-tól 2 ^ 28-1 (ami nem volt több, mint 7 karakter)

Ezzel a módszerrel az ügyfelek száma a rendszer által korlátozott számú érvényes karakterek az első (bal) bájt a sorban. Természetesen ezeket fogja találni nem kevesebb, mint száz. Ha több kell, akkor számának növelése eredeti karakter. ID mérete ugyanakkor természetesen szintén növeli. További előny, hogy az ilyen azonosító lehet használni változtatás nélkül, mint a kulcs treeview.

Típus azonosító pénznemben
Ez a módszer létrehozásának egyedi azonosító egy kiterjesztése az előző. Ez lehetővé teszi, hogy felére csökkentik a méret a területen, és felgyorsítja az összes műveletet vele, mert a munka számokkal gyorsabb, mint karaktersorozat. Funkció kapunk, azonban több nehézkes:

id = IIF (Val (parancs ())> 63, 1, -1) * (ccur (abs (Val (parancs ()) - 64) * (2 ^ 57) / 10000) + ccur (ccur ((Int ( most ()) mod 2 ^ 15) * (2 ^ 42) / 10000) + ccur (((most () - int (most ())) * 65535) * (2 ^ 26) / 10000) + ccur (RND () * (2 ^ 26-1)) / 10000))


parancssori argumentum (amely mögött a / cmd) számnak kell lennie 1-től 127. Ez az ügyfelek száma lehet egy olyan rendszer módszerével generál egy egyedi azonosítót. Hozzárendelése a argumentum érték, például 127 a következő paranccsal:

application.setoption „parancssori”, „127”


A több fajta pénzneme közötti tartományban - (2 ^ 63) / 10.000 (2 ^ 63-1) / 10000. Ezért minden alkalommal kell osztani 10.000 és átalakítani a részeredmények a pénznem, a hozzáférés folyamatosan arra törekszik, hogy használja a kettős. Ha olyan pénznem típusú érték, mint egész, akkor a használata a számjegyek a következő:

Bitek használatával az azonosító
Senior 63 perc jel (egy parancssori argumentum)
6 (57-én és 62-én) száma (a parancssorból argumentum)
15 (a 42-edik 56 th) Dátum
16 (26-én és 41-én) Idő
A 26 (a 0-ik és 25-én) Véletlenszerű szám


A jel (többé-kevésbé a fele a szoba)

IIF (Val (parancs ())> 63, 1, -1)


Száma kisebb (1 63) vagy nagyobb (64. 127) felét. Ahhoz, hogy illeszkedjen a valuta nem rendelkezik a típus nagyobb számot 63. Emiatt funkció használatához absz.

ccur (abs (Val (parancs ()) - 64) * (2 ^ 57) / 10000)


Date. Modulo 2 ^ 15 lehetővé teszi szorítani a fenntartott 15 bites megtartva az egyediség mintegy 80 év.

ccur (ccur ((Int (most ()) mod 2 ^ 15) * (2 ^ 42) / 10000)


Idő-ig

1.3 másodperc. A tartományban 0:00:00-23:59:59 van 0-,99999 és méretezhető a szükséges 16 bites szorozva 65.535.

ccur (((most () - int (most ())) * 65535) * (2 ^ 26) / 10000)


A véletlen számot 0-tól 2 ^ 26 - 1. Reduction tartományban vezet ismétlés.

ccur (RND () * (2 ^ 26-1)) / 10000))


következtetés
A második út nyilvánvalóan előnyös, mivel lehetővé teszi a kompaktabb azonosítók. Ezen túlmenően, ez teszi viszonylag fájdalommentes váltani a használata számlálók, a dolgozó húrok sokkal különbözik a dolgozó hosszú vagy devizanemek, miben különböznek egymástól.

Vannak azonban hátrányai. Először is, ez egy korlátozott számú ügyfél a rendszerben (nem több, mint 127) összetettsége miatt a squeeze keret 8 bájtos szám. Továbbá, nincs garancia arra, hogy a véletlen számok nem ismétlődnek meg a 1,3 másodpercet, amikor a kulcsot művelet megállapítására kizárólag egyedi véletlenszám-generátor. Abban az esetben, ilyen ismétlés párhuzamos hiba, hogy szükség lesz megismételni az egész működését bejegyzések hozzáadását. Ugyanakkor meg kell tisztelegni access'sovskoy rnd () függvényt: elég hosszú, hogy létrehoz egy nem ismétlődő patak értékeket.