Search  
Tuesday, August 16, 2022 ..:: 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  Client/Server  Eroarea "V...
 Eroarea "View definition has been changed"
 
 4/18/2006 10:44:07 AM
User is offlinePetre Popescu
253 posts
4th


Eroarea "View definition has been changed"
 (N/A)

Salutare tuturor

   Helpul din VFP 7.0  pentru eroarea "View definition has been changed" ma ajuta doar cu "Close and reopen the view. To ensure that the view is not changed, open the database exclusively."   

   Lucrez la o aplicatie cu server  MYSQl + clienti VFP 7.0. Folosesc remote view-uri parametrizate pentru editare si salvare date. Dintr-o forma de vizualizare si cautare generala setez parametrul pentru remote view si apelez o alta forma unde se deschide si poate fi editat view-ul.

Problemele sunt urmatoarele:

   - in momentul deschiderii RV(remote view) primesc aceasta eroare. Ciudatenia pentru mine este faptul ca pe acelasi set de date sunt cazuri in care nu primesc eroarea.

   - in momentul de fata am aceasta eroare doar pe una din statiile de lucru, desii este aceeasi aplicatie pe toate statiile. 

Cum / Cine modifica definitia RV ? Are legatura aceasta eroare cu maparea intre tipurile de date setate pe tabela de pe server si cele setate in definitia RV.

Acum o perioada de tip am mai avut aceeasi eroare, de data aceasta pe calculatorul pe care lucrez la program (nu am apucat sa o reproduc si pe statiile de lucru). La indrumarea unui prieten am revizuit setarile din definitia RV. Anumite campuri din RV se setasera automat odata cu definirea RV pe tipul "Currency". L-a schimbat cu "Numeric" si eroarea a disparut.

Va rog sa ma ajutati ...un sfat ....un link...    Va multumesc!

PS: Felicitari pentru cei care au grija de acest site si pentru cei care rup din timpul lor pentru a raspunde la intrebari. De foarte multe ori am gasit rezolvari la problemele mele citind raspunsurile dumneavoastra. Toate cele bune si un Paste fericit.

 4/18/2006 11:00:20 AM
User is offlineDoru
160 posts
www.aquila.ro
5th




Re: Eroarea "View definition has been changed"
 (N/A) Modified By Doru  on 4/18/2006 11:01:58 AM)
Acest mesaj apare cind din server vin alte cimpuri decit sint in definitia RV. Se poate intimpla cind RV este definit cu * in loc de fiecare cimp, si in baza de date ai pus cimpuri noi sau ai schimbat ordinea lor. De cind am pus cimp cu cimp in RV nu am mai primit aceste mesaje.
Cristian Tenea
Aquila
 4/18/2006 11:21:01 AM
User is offlineGrigore Dolghin
4010 posts
www.class-software.ro
1st






Re: Eroarea "View definition has been changed"
 (Romania)

Salutare

Cel mai probabil eroarea ta provine din modul in care functioneaza driverul MySQL. Daca eroarea apare la Requery(), sunt 100% sigur ca asta e problema. Uite care-i situatia:

Ai un RV cu urmatoarea sintaxa: SELECT * FROM users Where UserName = ?vpUser. Daca atribui in ?vpUser valoarea "Grigore", executi RV-ul, apoi atribui "Alex" si executi RV-ul, merge bine. Daca le faci in ordine inversa (mai intai "Alex" si apoi "Grigore") crapa la Requery cu eroarea de mai sus. Explicatia este ca la prima executie rv-ul creeaza un cursor care are campul UserName de latimea stabilita de valoare (nu ma intreba de ce, asta e - asa merge). Cand "Alex" este primul se creeaza o coloana de 4 caractere, si la Requery() crapa pe motiv ca n-are loc sa scrie "grigore". Tre' sa inchizi RV-ul complet si sa-l deschizi din nou.

Acest comportament poate fi inhibat bifand checkbox-ul "Don't optimize column width" din definitia DSN-ului, daca folosesti DSN. Daca te conectezi DNS-less (cu SQLSTRINGCONNECT()), atunci stringul urmator seteaza optiunea aia corect. Te rog sa remarci partea cu "Option" din string. (exemplul este real - dintr-o aplicatie de-a mea; va trebui sa inlocuiesti variabilele cu valorile corespunzatoare de la tine):

lcString = ;
   
"Driver={MySQL ODBC 3.51 Driver};"
+ ;
   
"Server=" + tcAdresaIp + ";"
+ ;
   
"UID=" + tcUserName + ";"
+ ;
   
"PASSWORD=" + tcPassword + ";"
+ ;
   
"Database=economic;"
+ ;
   
"Port=3306;"
+ ;
   
"Option=16899;"


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 4/18/2006 4:24:15 PM
User is offlineDorin Vasilescu
1369 posts
1st




Re: Eroarea "View definition has been changed"
 (Romania)
Am mai observat eroarea respectiva si cand era bifat "Precompile SQL ...", dupa insert/update , la Firebird
Cred ca problema ar fi ca VFP trimite comenzi de select,insert si update pe acelasi handle si nu se mai potriveste ceva cu SQLPrepare()

Eroarea nu aparea daca bifam precompilarea pe un remote view/cursor adapter read only.


 4/20/2006 9:56:34 AM
User is offlinePetre Popescu
253 posts
4th


Re: Eroarea "View definition has been changed"
 (N/A)

   Multumesc tuturor pentru raspunsul si atentia acordata. Plecand de la sfaturile dvs. am mai sapat un pic si am rezolvat problema.

   Eu folosesc forme VCX -based. In evenimentul LOAD() deschid RV-urile cu optiunea NODATA, setez bufferingul pe 5. Apoi in evenimentul INIT() pe baza unor parametrii primiti de forma setez daca este cazul parametrii pentru RV-uri si  fac sau nu REQUERY() in functie de motivul deschiderii formei (adaugare ceva nou, deschidere ceva existent sau stergere).  

In stringul de conectare MYSQL aveam OPTION=3 (banuiesc ca reprezinta ceva setari pentru driver dar nu stiu ce semnifica). Am pus OPTION=16899. Am testat in continuare si eroarea a disparut dintr-un punct al programului dar s-a mentinut in continuare in alta parte.

Am analizat in continuare definitia RV-urilor unde am avut probleme si am descoperit ca in aceste cazuri aveam campuri adaugate ulterior in definitia RV astfel incat nu mai respectau ordinea campurilor din structura tabelei de pe server. In plus, RV contineau 2 tabele, iar campurile adaugate apartineau primei tabele.

Am redefinit RV-urile (lucru enervant din cauza ca a trebuit sa redefinesc tipul datelor acolo unde nu era cel implicit).

Si.... surpriza foarte placuta.. eroarea a disparut total.

Trebuie sa mentionez totusi urmatoarele:

- Programul pe care-l dezvolt este instalat pe 5 calculatoare: 3 cu Windows '98 si 2 cu Windows XP. Pentru aceeasi versiune de program si acelasi conector ODBC, eroarea a aparut doar pe una din statiile cu XP.

- Pe statia cu problema aveam urmatoarea solutie prin care scapam de eroare. Dupa cum am spus in postul initial dintr-o forma de vizualizare generala apelam forma cu problema. Dar daca in acea forma de vizualizarea generala executam mai intai 3-4 comenzi cu SQLEXEC()  catre server prin care aduceam date corespunzatoare la diverse filtre, eroarea nu mai aparea in momentul deschiderii formei cu problema. In schimb daca executam o singura comanda SQLEXEC() si apoi deschideam forma cu problema eroarea era prezenta. (mentionez aici ca folosesc o singura conexiune la server, deci comenzile SQLEXEC() si RV se executa pe aceeasi conexiune.).

Mutumesc si toate cele bune.

Petre Popescu

 

 4/13/2016 3:24:21 PM
User is offlinefosztobela
1 posts


Re: Eroarea "View definition has been changed"
 (N/A)
Salut!
Eu cred ca cauza principala este optiunea 'nodata'. Am patit si eu la fel, am renuntat la 'nodata' (view-ul era oricum parametrizat si am putut obtine acelasi rezultat prin initializarea corespunzatoare a parametrilor) si eraoarea a disparut. Am avut si eu * in field list.
 8/3/2020 9:59:11 AM
User is offlineMarian Dobre
624 posts
1st


Re: Eroarea "View definition has been changed"
 (N/A)
O astfel de eroare am constatat ca apare in vederile cu campuri calculate.
Am in tabela sursa campurile Pret N(3) si Cantitate N(5). Evident ca in vedere voi introduce pe langa Pret si Cantitate si campul calculat Valoare = Cantitate * Pret.
In definirea acestui camp am folosit Cast(Cantitate * Pret As N(9)) As Valoare si eroarea nu a mai aparut.

Orice putere omeneasca este un compus de rabdare si de timp. Balzac
  Visual FoxPro  Client/Server  Eroarea "V...

Search  Forum Home         

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement