Search  
Friday, May 25, 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
  Visual FoxPro  Cod, sintaxa si comenzi  Selectare o anu...
 Selectare o anumita baza de date
 
 2/13/2011 3:34:17 PM
User is offlinebata01yu
55 posts


Selectare o anumita baza de date
 (N/A)
Buna.
Am o aplicatie in vfp care tine gestiunea unei institutii, si totul era ok pana nu ne-a mai arondat inca o institutie.
Problema este urmatoarea:
am tabela unitati unde tin datele despre unitatea de lucru, am introdus inca un camp unit_presc care sa aibe denumirea folderului unde sa fie tinuta baza de date a societatii respective
am folderul cu tabele unde este actualmente baza de date
am  creat folderul tabele1 in care am sters toate datele din dbf , tot aici am si gest.dbc
am copiat tabele 1 in noul folder de la unit_presc sa zicem aaa

la lansarea aplicatiei am
set default to sys(5)+sys(2003) 'd:/date' aici am toate folderele si dbf de la aplicatie
tot aici am si folderele aaa, tabele1 si tabele

la selectarea unitatii de lucru
am urmatoarea comanda
set path to   &&care cred ca ar trebuii sami elimine tot ce am avut in path
set path to 'rap, form, ...... , aaa' sau tabele dupa caz
dar la rulare toate datele le scrie in tabele si nu in aaa
mentionez ca si in aaa si in tabele am gest databases

ar trebuii sa mai dau si alta comada ca sa imi introduca datele in aaa sau dupa caz tabele

Va multumesc anticipat.

 2/13/2011 9:24:58 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Selectare o anumita baza de date
 (N/A)
Cum se deschid tabelele alea? cu USE sau in dataenvironment-ul tabelelor?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/13/2011 11:01:54 PM
User is offlinebata01yu
55 posts


Re: Selectare o anumita baza de date
 (N/A)
din dataenvironmentul

 2/14/2011 12:22:21 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Selectare o anumita baza de date
 (N/A)
Ok, asta-i o veste proasta. :) Problema e ca in dataenvironment informatiile despre tabele sunt salvate CU TOT cu calea de cautare, si daca tabelele alea sunt accesibile, o sa le foloseasca pe ele indiferent ce baza de date ai selectat in prealabil. Altfel spus, daca inainte de a lansa un form executi OPEN DATABASE <baza_cealalta>, formul tau o sa deschida automa baza de date originala si o sa scrie in ea.

Ai doua variante de a rezolva problema asta. Una mai eleganta si una mai putin, dar ambele isi vor face treaba. Varianta mai putin eleganta am vazut-o in programul Saga (care e proiectat tot asa, cu .dbf-uri in dataenvironment).

#1. Varianta nashpa:
Ideea "din spate" e ca daca VFP nu gaseste baza de date specificata de calea de cautare a tabelelor din dataenvironment, dar in schimb gaseste tabelele alea, chiar daca fac parte din ALTA baza de date, le va folosi pe alea (asta-i o tampenie, da' ma rog, asa functioneaza). Fa INCA un folder, in care copiezi baza de date 1. Deci o sa ai trei foldere: #1. folderul cu firma 1, #2. Folderul cu firma 1, #3. Folderul cu firma 2.

Daca lasi aplicatia ta de capul ei, o sa scrie in folderul #1 (e cel cu care ai lucrat pana acum). Dar daca folderul #1 nu exista, aplicatia o sa incerce mai intai sa gaseasca tabelele in folderele specificate in SET PATH, si de-abia dupa aia da eroare, daca nu le gaseste nici acolo. Ca atare, cand selectezi firma, executi si un SET PATH TO folder_firma ADDITIVE / OPEN DATABASE gest.dbc, si (asta e important) - redenumesti folderul #1 (astfel in cat dataenvironmentul sa nu-l gaseasca). Cand ai de facut modificari in aplicatie, redenumesti folderul #1 la loc cum era (astfel incat sa poti deschide formurile fara sa-ti dea erori). Modifici, salvezi, redenumesti folder, executi aplicatie.

Stiu, e cam de doi lei (ca toata aplicatia SAGA, de altfel) dar in fine, functioneaza.

#2. Varianta eleganta:

In DataEnvironment.BeforeOpenTables scrii un cod de genul asta (o sa te rog sa-l verifici - eu il scriu direct in browser - n-am cum sa testez):

For Each loObject In This.Objects
If loObject.BaseClass = "Cursor"
lcFileName = JustFName(loObject.CursorSource)
*Acu' schimbam schimbarea, fiindca proprietatea asta e readwrite in runtime:
loObject.CursorSource = "calea_catre_baza_ta_de_date" + lcFileName
EndIf
EndFor


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/14/2011 7:38:24 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Selectare o anumita baza de date
 (N/A) Modified By Daniel Buduru  on 2/14/2011 8:40:15 AM)
Grig, eu am lucrat cu tabele deschise in dataenvironment si cu mai multe baze de date cu acelasi nume fara complicatii.
Nu e nevoie sa se schimbe numele folderului in calea bazei de data in dataenvironment, e suficient ca bazele de date sa fie in foldere diferite, dar e obligatoriu sa fie o singura baza de date in calea de acces la un moment dat.
De asemenea, e obigatoriu ca baza de date sa fie inchisa inainte de a deschide o alta.
Daca baza de date ramane deschisa, chiar daca in calea de acces este o alta baza de date, baza de date curenta ramane tot prima baza deschisa.
Daca tabelele sunt deschise din dataenvironment, fie se inchid toate formurile, fie in fiecare form deschis se executa dataenvironment.closetables, apoi close databases all.
Dupa ce baza de date a fost inchisa in toate sesiunile, se verifica cu ADATABASES daca inchiderea s-a efectuat cu succes, apoi se elimina folderul din calea de acces, se pune noul folder in calea de acces, si se redeschid formurille ncesare sau se executa dataenvironment.opentables in formurile deschise.
Comanda close databases trebuie data in fiecare sesiune. Daca ramane chiar si o singura tabela deschisa intr-o sesiune, baza de date nu se va inchide.

Daniel Buduru
 2/14/2011 9:59:43 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Selectare o anumita baza de date
 (N/A)
Pai... daca folderul exista, o sa deschida tabela din folderul ala, nu? chiar daca nu e specificat in path.... din pacate nu pot sa verific :(

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/14/2011 10:06:32 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Selectare o anumita baza de date
 (N/A) Modified By Daniel Buduru  on 2/14/2011 11:11:44 AM)
Pentru vfp nu exista decat folderele din calea de acces...
Oricum, eu asa mi-am facut aplicatiile in vfp si au functionat :)
Mai mult, am folosit aceasta tehnica si la importul datelor din baza de date anterioara la actualizarea aplicatiei.

Daniel Buduru
 2/14/2011 10:54:00 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Selectare o anumita baza de date
 (N/A)
Hmmm.. trebuie sa-mi instalez foxul, ca sa-mi dau seama despre ce vorbesti. Chestia e ca USE c:\app\folderdb\tabela o sa deschida tabela aia indiferent daca app\folder sunt in path sau nu. Si dataenvironment asta face. Ai putea, te rog, sa postezi un form si doua dbc-uri, tabelele unuia din dbc-uri sa fie in dataenvironment-ul formului, si sa vad eu ca se deschid tabelele celuilalt dbc, fara nici o manevra suplimentara in afara de SET PATH si close database?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/14/2011 11:46:16 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Selectare o anumita baza de date
 (N/A)
Ai dreptate, Grig. Nu am citit cu atentie tot ce ai scris acolo despre redenumire - intelesesem ca redenumesti folderul curent cu numele folderului din DE.
Intr-adevar, DE deschide dbc de pe calea stocata, daca exista, fara sa fie in path.
Nu m-am lovit de asta pentru ca intotdeuna, la distribuirea aplicatiei, am pus alt nume folderului dbc decat cel folosit in dezvoltare. Probabil ca am ajuns la asta din acelasi motiv, dar am uitat de ce :).

Daniel Buduru
 2/14/2011 4:40:19 PM
User is offlinebata01yu
55 posts


Re: Selectare o anumita baza de date
 (N/A)
Cu schimbarea numelui folderului care l-am folosit in dezvoltare se pare ca functioneaza acuma sa vad daca nu se agata pe undeva din greseala. Mersii mult deocamdata.
 2/14/2011 5:21:33 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Selectare o anumita baza de date
 (N/A)
Eu sustin in continuare varianta cu iteratia in DE :)

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/16/2011 11:59:22 AM
User is offlinebata01yu
55 posts


Re: Selectare o anumita baza de date
 (Romania)
Am atasat un exemplu daca se poate sa ma ajutati cu iteratia in DE
 2/16/2011 12:00:26 PM
User is offlinebata01yu
55 posts


Re: Selectare o anumita baza de date
 (Romania)
 bata01yu wrote
Am atasat un exemplu daca se poate sa ma ajutati cu iteratia in DE

mai incerc
TEST1.ZIP 
 2/16/2011 12:25:30 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Selectare o anumita baza de date
 (N/A)
Modifici cursor.Database, nu cursor.CursorSource


Daniel Buduru
TEST1D.ZIP 
 2/16/2011 5:53:23 PM
User is offlinebata01yu
55 posts


Re: Selectare o anumita baza de date
 (N/A)
Mersii

  Visual FoxPro  Cod, sintaxa si comenzi  Selectare o anu...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement