Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  FoxPro  FoxPro 2.x DOS  Bulibaseala ali...
 Bulibaseala alias, cdx
 
 1/30/2012 10:33:24 AM
User is offlinevulturu39
11 posts


Bulibaseala alias, cdx
 (N/A)
O baza de date in FPD26 poate fi deschis cu diferite aliasuri. Daca pentru fiecare alias se face un index, tagul lui se memoreaza in acelasi fisier cdx cu numele bazei. Din cauza ca sa generat cu diferite aliasuri, mai tarziu nu se mai poate deschide baza decat daca se sterge fisierul cdx si se refac indexii. Nu se poate remedia in fisierul cdx aceste aliasuri diferite?
 1/30/2012 2:10:54 PM
User is offlineMarian Dobre
398 posts
3rd


Re: Bulibaseala alias, cdx
 (N/A)
Set exclusive off
*
Use Tabela in 0 exclusiv
Select Tabela
Index on Camp1 tag Tag1
Index on Camp2 tag Tag2
close databases
*
Use Tabela in 0 order tag Tag1 Alias Alias1
Select Alias1
*
Use Tabela in 0 order tag Tag2 Alias Alias2 Again
Select Alias2
*
* Prelucrari diverse

Orice putere omeneasca este un compus de rabdare si de timp. Balzac
 1/30/2012 2:15:18 PM
User is offlineMarian Dobre
398 posts
3rd


Re: Bulibaseala alias, cdx
 (N/A)
Ideea este ca indexarile se fac separat de prelucrarile obisnuite si se fac pe tabele deschise exclusiv. Dupa aceea prelucrarile se vor face pe tabele deschise pe SET EXCLUSIVE OFF daca vrei sa ai deschisa aceiasi tabela in mai multe zone.

Orice putere omeneasca este un compus de rabdare si de timp. Balzac
 1/30/2012 5:40:14 PM
User is offlinemgabi
135 posts
5th


Re: Bulibaseala alias, cdx
 (N/A)
CDX-ul se strica din alte motive, nu are legatura cu alias-ul.
Singura problema pe care o stiu referitor la denumire este ca nu trebuie folosite fisiere sau aliasuri cu numele dintr-o litera, gen d.dbf sau x.dbf sau a.dbf  , pentru ca le incurca uneori cu zonele de lucru A,B,etc.

Iar Marian are dreptate, nu poti creea CDX-uri din 2 alias-uri diferite ale aceeasi baza de date (tabela)  SIMULTAN, pentru ca se trebuie deschise exclusiv.
In schimb poti creea cate IDX-uri vrei.

Pe tabele deschise (shared) cu mai multe alias-uri  poti creea doar noi index-i (sau indecsi ...cum s-o scrie corect?), de tip IDX ... sau cum vrei tu sa le zici in aplicatii, nu CDX adevarat.
Ce-i drept, nu am incercat pana acum sa creez un IDX cu extensie .CDX .... nu stiu daca ar da voie sa faci asta peste fisierul CDX structural.

Ne poti da mai multe detalii referitor la comenzile care strica CDX-ul?
Eventual un exemplu de comanda.

PS: Nu m-am gandit la o varianta de genul :
INDEX ON aa.camp1+bb.camp2  TAG ord1
... n-am incercat niciodata , ar fi interesat de testat :)
 1/31/2012 9:19:02 AM
User is offlineMarian Dobre
398 posts
3rd


Re: Bulibaseala alias, cdx
 (N/A)
Am facut cateva teste si am constatat urmatoarele:
1)    Este contraindicata utilizarea mai multor fisierelor de tip idx pe aceiasi tabela. Deschiderea tabelei cu un index asociat si actualizarea ei nu va actualize automat si celelelte fisiere index. Necazul asta nu se intampla pe tabele deschise cu fisiere index compuse (cdx).

Set Safety Off
Create Table TABELA (CAMP1 C(10), CAMP2 C(10), CAMP3 C(10))
Close Databases
*
Set Exclusive On
Select A
Use TABELA Alias ALIAS1
Index On CAMP1 To Fisier1
Index On CAMP2 To Fisier2
Close Databases
*
Select B
Use TABELA Index Fisier1
Insert Into TABELA Value ('AA1' , 'AA2', 'AA3')
Insert Into TABELA Value ('BB1' , 'BB2', 'BB3')
Insert Into TABELA Value ('CC1' , 'CC2', 'CC3')
Insert Into TABELA Value ('DD1' , 'DD2', 'DD3')
Brows Noedit
Close Databases

Use TABELA Index Fisier2
Brows Noedit


2)    Este contraindicata utilizarea aliasului in frazele Index on … . Tabelele respective nu se vor mai pute utilize decat cu aliasul respective. Practic nu mai poti deschide aceaisi tabela in doua zone distincte.

Create Table TABELA (CAMP1 C(10), CAMP2 C(10), CAMP3 C(10))
Close Databases
*
Set Exclusive On
Use TABELA In 0 Alias ALIAS1
Select ALIAS1
Index On ALIAS1.CAMP1 Tag TAG1
Close Databases  && Inhibarea acestei comenzi nu mai genereaza eroarea
*
Use TABELA In 0 Alias ALIAS2 Again
Select ALIAS2


3)    Deschiderea aceleiasi tabele in mod exclusive in doua zone diferite se poate efectua. Interesant. Nu stiam acest lucru.

Create Table TABELA (CAMP1 C(10), CAMP2 C(10), CAMP3 C(10))
Insert Into TABELA Value ('AA1' , 'AA2', 'AA3')
Insert Into TABELA Value ('BB1' , 'BB2', 'BB3')
Insert Into TABELA Value ('CC1' , 'CC2', 'CC3')
Insert Into TABELA Value ('DD1' , 'DD2', 'DD3')
Close Databases
Clear
*
Set Exclusive Off
Use TABELA In 0 Alias ALIAS1 Exclusive
Select ALIAS1
Index On CAMP1 Tag TAG1
Insert Into TABELA Value ('EE1' , 'EE2', 'EE3')
*
Use TABELA In 0 Alias ALIAS2 Exclusive Again
Select ALIAS2
Index On CAMP2 Tag TAG2
Insert Into TABELA Value ('FF1' , 'FF2', 'FF3')


4)    Codurile expuse merg si in FPD26 si in VFP 90.


Orice putere omeneasca este un compus de rabdare si de timp. Balzac
 1/31/2012 11:24:02 AM
User is offlineDaniel Buduru
2333 posts
1st




Re: Bulibaseala alias, cdx
 (N/A)
 vulturu39 wrote
O baza de date in FPD26 poate fi deschis cu diferite aliasuri. Daca pentru fiecare alias se face un index, tagul lui se memoreaza in acelasi fisier cdx cu numele bazei. Din cauza ca sa generat cu diferite aliasuri, mai tarziu nu se mai poate deschide baza decat daca se sterge fisierul cdx si se refac indexii. Nu se poate remedia in fisierul cdx aceste aliasuri diferite?

Nu folosi alias in cheia de indexare. Probabil ca in cod ai asa ceva:
Index on alias.camp1 Tag camp1
In acest caz, nu mai poti deschide tabela, deci nu ai cum sa elimini cheia din cdx.
Eliminarea cheii s-ar putea face cu comanda Delete tag, dar nu poate fi aplicata in acest caz intrucat tabela nu poate fi deschisa.
Tot ce poti face este sa cauti in cod toate comenzile INDEX si sa scoti aliasul.




Daniel Buduru
 1/31/2012 11:32:50 AM
User is offlineDaniel Buduru
2333 posts
1st




Re: Bulibaseala alias, cdx
 (N/A)
@Marian
Atunci cand o tabela este redeschisa cu USE mosteneste proprietatile Read-only si Exclusive ale primei instante.
VFP utilizeaza un singur handle pentru toate instantele tabelei deschise cu use again, este de fapt acelasi fisier expus in buffere diferite.
Daca tabela a fist deschisa prima data in mod exclusiv, nu poate fi deschisa shared cu use again:

Use Tabela in 0 Alias Alias1 exclusive readonly
Use Tabela in 0 Alias Alias2 Shared Again
Select Alias2
? IsExclusive()
? IsReadonly()

Daniel Buduru
  FoxPro  FoxPro 2.x DOS  Bulibaseala ali...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement