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  Problema cu Sel...
 Problema cu Select - SQL
 
 1/12/2012 10:33:08 AM
User is offlinealemao
112 posts
5th


Problema cu Select - SQL
 (Romania)
Am creat functia NR_MAX() pentru extragerea nr. maxim dintr-un fisier dbf (VFP). Functia se regaseste in fiserul MAINPROC.PRG incarcat la pornirea aplicatiei cu SET PROCEDURE TO MAINPROC.
Codul functiei este descris mai jos:

FUNCTION nr_max && verifica cel mai mare nr_inreg
LPARAMETERS nr_max
numefisier = DBF()
numealias = ALIAS()
SELECT MAX(nr_inreg) AS nr_inreg ;
FROM &numefisier ;
INTO CURSOR SYS(2015)
IF _TALLY>0
IF ISNULL(nr_inreg)
nr_max = 0
ELSE
nr_max = nr_inreg
ENDIF
ELSE
nr_max = 0
ENDIF
USE && inchide cursor
SELECT &numealias
RETURN nr_max
ENDFUNC

Cand rulez aplicatia local functia merge fara probleme.
Cand rulez din retea (pe un folder partajat) primesc un mesaj cu urmatoarea eroare:
Command contains unrecognized phrase/keyword
dupa care iese din aplicatie.

Poate ma ajutati cumva cu o idee cu privire la aceasta problema.
Multumesc anticipat!
 1/12/2012 11:06:29 AM
User is offlineGrigore Dolghin
3592 posts
www.class-software.eu
1st






Re: Problema cu Select - SQL
 (N/A)
Da-mi voie sa ghicesc: folderul partajat are spatii in denumire, nu-i asa?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/12/2012 12:57:18 PM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (Romania)
Evident d-le Grig! :) Mai este vreo variantă de rezolvare, în afară de eliminarea spaţiilor din denumirea folderului partajat!
 1/12/2012 1:35:09 PM
User is offlinerediac
10 posts


Re: Problema cu Select - SQL
 (N/A) Modified By rediac  on 1/12/2012 2:47:53 PM)
in loc de select ... & fisier    incearca select ... (fisier)
Mai concret functia ta va fi:
Function nr_max && verifica cel mai mare nr_inreg
    Lparameters nr_max
    numefisier = Dbf()
    numealias = Alias()
    Select Max(numar) As nr_inreg ;
        FROM (numefisier) ;
        INTO Cursor Sys(2015)
    If _Tally>0
        If Isnull(nr_inreg)
            nr_max = 0
        Else
            nr_max = nr_inreg
        Endif
    Else
        nr_max = 0
    Endif
    Use && inchide cursor
    Select &numealias
    Return nr_max
Endfunc

Merge asa.
 1/12/2012 1:35:37 PM
User is offlineRomeo
529 posts
1st


Re: Problema cu Select - SQL
 (N/A) Modified By Romeo  on 1/12/2012 2:48:15 PM)
Daca aplicatia ta (exe-ul) se gaseste intr-un director la care se ajunge printr-o cale cu spatii, iar datele se gasesc intr-un subdirector al acestui director (pe o cale in care nu exista spatii), folosesti cai relative:

exemplu 1: c:\My App\Apl1\aplicatie1.exe este radacina aplicatiei, iar datele sunt in c:\My App\Apl1\DATE\ scrii ceva de genul: use "\DATE\tabel.dbf"
exemplu 2: c:\My App\Apl1\aplicatie1.exe este radacina aplicatiei, iar datele sunt in c:\My App\DATE\ scrii ceva de genul: use "..\DATE\tabel.dbf"

Daca nu te poti pozitiona pe dbf din c:, d:... sau din directorul aplicatie pe o cale (inainte inapoi) fara spatii incearca lcFisier=cale+fisier, si ca mai sus Select ... &lcFisier.

Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 1/12/2012 4:53:09 PM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (N/A)
 Romeo wrote
Daca aplicatia ta (exe-ul) se gaseste intr-un director la care se ajunge printr-o cale cu spatii, iar datele se gasesc intr-un subdirector al acestui director (pe o cale in care nu exista spatii), folosesti cai relative: exemplu 1: c:\My App\Apl1\aplicatie1.exe este radacina aplicatiei, iar datele sunt in c:\My App\Apl1\DATE\ scrii ceva de genul: use "\DATE\tabel.dbf" exemplu 2: c:\My App\Apl1\aplicatie1.exe este radacina aplicatiei, iar datele sunt in c:\My App\DATE\ scrii ceva de genul: use "..\DATE\tabel.dbf" Daca nu te poti pozitiona pe dbf din c:, d:... sau din directorul aplicatie pe o cale (inainte inapoi) fara spatii incearca lcFisier=cale+fisier, si ca mai sus Select ... &lcFisier.


Hhmmm, o idee buna. O sa testez maine.

Ceea ce vreau sa zic este ca aplicatia se gaseste in discul H: cu urmatoarea cale (completa)

H:\Partajat\Biroul Mic\Registratura\Registru.exe.

In folderul Registru exista cateva subfoldere si anume Data, Images, Libs, Temp si Saves.

La lansarea in executie a aplicatiei, pe langa setarea mediului de lucru, rulez si comanda SET PATH TO DATA, IMAGES, LIBS, TEMP, SAVES.

Acum nu sunt pe computerul pe care se gaseste aplicatia, respectiv proiectul, dar ma intreb asa:

Daca setez SET FULLPATH OFF ar avea vreun efect?

Apropo, am incercat

SELECT MAX(nr_inreg) ;
FROM (numefisier);
INTO CURSOR SYS(2015)

si nu merge.

Da mesaj de eroare, totusi, multumesc pentru idee.
 1/12/2012 7:01:13 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema cu Select - SQL
 (N/A)
Ruleaza asta si vezi daca iti da vreo eroare:

cdrive='c:\'
SET DEFAULT TO (cdrive)
cfolder='Folder cu spatii'
cFolder2='Folder cu mai multe spatii'
MD (cdrive+cfolder)
SET DEFAULT TO (cdrive+cfolder)
MD (cFolder2)
cPath=cdrive+ADDBS(cfolder)+ADDBS(cfolder2)
SET DEFAULT TO (cPath)
CREATE TABLE test (nr_nir i)
FOR lni=1 TO 10
 INSERT INTO test VALUES (RAND(lni)*100)
NEXT

ccursor=SYS(2015)
ctable=DBF()
USE

SELECT MAX(nr_nir) FROM (ctable) INTO CURSOR (ccursor)
BROWSE

USE IN (JUSTSTEM(ctable))
ERASE (ctable)
SET DEFAULT TO c:\
RD (cpath)
RD (cdrive+cfolder)



Daniel Buduru
 1/12/2012 7:38:23 PM
User is offlineRomeo
529 posts
1st


Re: Problema cu Select - SQL
 (N/A) Modified By Romeo  on 1/12/2012 8:47:24 PM)
 
Hhmmm, o idee buna. O sa testez maine.


Ideea am preluat-o de la Grig. Am vazut la el o aplicatie realizata complet pe tehnologie OOP.
Numai ca in situatia ta, pentru a fi consecvent ar trebui rescrii tot codul - evident daca nu esti presat de timp-termene.
Peste tot unde ai referinte la componente din DATA, IMAGES, LIBS, TEMP, SAVES pui cai relative; obiectele (dbf,imagini,formuri,rapoate...) odata puse intr-un loc (in directoare) nu le mai muti. Pe de alta parte toate caile din cod, de ex din formuri pt proprietatea cale "catre fisierele imagine" le faci tot relative.

De retinut, daca iti vei face o aplicatie 100% OOP, lucreaza consecvent si 99.99% cu cai relative !
O aplicatie realizata in acest fel poate rula pe o cale in care fiecare subdirecor are spatii.

PS: Grig a citit multe carti de programare, avand o vasta experienta. Daca el face o recomandare, o urmez chiar daca nu-mi sunt clare toate implicatiile. In timp normal, urmaresc si compar in alte surse pe internet.

Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 1/12/2012 9:01:11 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema cu Select - SQL
 (N/A)
Cand e vorba de baze de date, "baza de date e cheia" :). Ea tine caile catre tabele, oriunde ar fi ele. Baza de date e un container, daca vorbim in termeni OOP.


Daniel Buduru
 1/12/2012 11:08:24 PM
User is offlineEugen Gliga
1052 posts
1st




Re: Problema cu Select - SQL
 (N/A)
 Romeo wrote
 
Hhmmm, o idee buna. O sa testez maine.



Nu cred ca  de la spatii e problema la tine, pt ca mie imi merge  codul tau pe nume de foldere si de fisiere cu spatii. Binenteles nu cu macrosubstitutie ci cu (Cale+Nume)
Referitor la cod incearca sa-l mai optimizezi putin. Eu cand vreau sa fac calcule pe un fisier folosesc la iesire un array in loc de cursor. In cazul tau ar fi fost mai simplu sa
scrii asa:

FUNCTION Nr_Max
LOCAL ARRAY laNrMax
SELECT MAX(nr_inreg) FROM (numefisier) INTO ARRAY  laNrMax
RETURN NVL(laNrMax,0)



 1/13/2012 5:34:52 AM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (N/A)
Va multumesc domnilor pentru recomandarile dvs.
Abia astept sa ajung la serviciu ca sa le pun in practica.

PS Recomandarile, sugestiile postate pe acest forum ca urmare a diverselor interpelari, le-am citit, si le-am pus in practica acolo unde a fost nevoie.
Acest forum este exceptional. Pacat de faptul ca MS doreste sa traga pe dreapta VFP.
Eu unul mai sper ca va reveni asupra deciziei sau eventual va mai produce o ultima versiune cu nr rotund 10, cine stie :).
 1/13/2012 6:23:24 AM
User is offlineRomeo
529 posts
1st


Re: Problema cu Select - SQL
 (N/A)
 Daniel Buduru wrote
Cand e vorba de baze de date, "baza de date e cheia" :). Ea tine caile catre tabele, oriunde ar fi ele. Baza de date e un container, daca vorbim in termeni OOP.


Omul cat traieste invata si tot nestiuto moare. e vorba de mine in cazul asta.

Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 1/13/2012 4:33:36 PM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (N/A)
 Daniel Buduru wrote
Ruleaza asta si vezi daca iti da vreo eroare:

cdrive='c:\'
SET DEFAULT TO (cdrive)
cfolder='Folder cu spatii'
cFolder2='Folder cu mai multe spatii'
MD (cdrive+cfolder)
SET DEFAULT TO (cdrive+cfolder)
MD (cFolder2)
cPath=cdrive+ADDBS(cfolder)+ADDBS(cfolder2)
SET DEFAULT TO (cPath)
CREATE TABLE test (nr_nir i)
FOR lni=1 TO 10
 INSERT INTO test VALUES (RAND(lni)*100)
NEXT

ccursor=SYS(2015)
ctable=DBF()
USE

SELECT MAX(nr_nir) FROM (ctable) INTO CURSOR (ccursor)
BROWSE

USE IN (JUSTSTEM(ctable))
ERASE (ctable)
SET DEFAULT TO c:\
RD (cpath)
RD (cdrive+cfolder)





Am doua vesti!
Vestea buna:
Am rulat si codul merge!
Veste rea:
Am incercat implementarea codului la mine, mai putin partea cu creare de foldere, dar tot primesc eroare.
 1/13/2012 5:15:30 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema cu Select - SQL
 (N/A)
Care este exact eroarea? Codul de eroare, mesajul si linia din program la vare apare (codul, nu numarul liniei).


Daniel Buduru
 1/13/2012 10:16:51 PM
User is offlinewtfia
142 posts
5th


Re: Problema cu Select - SQL
 (Romania)
Nu mai am VFP instalat si nu mai gasesc licenta momentan, dau cau bata-n balta, dar.. nu merge ceva de genul FROM (CHR(34) + cFolder + CHR(34))? CHR(34) sunt ghilimelele daca bine imi amintesc, ideea e sa il fortezi sa puna ghilimele in jurul numelui directorului. Poate cu EVAL()?
 1/28/2012 6:25:52 PM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (N/A)
 wtfia wrote
Nu mai am VFP instalat si nu mai gasesc licenta momentan, dau cau bata-n balta, dar.. nu merge ceva de genul FROM (CHR(34) + cFolder + CHR(34))? CHR(34) sunt ghilimelele daca bine imi amintesc, ideea e sa il fortezi sa puna ghilimele in jurul numelui directorului. Poate cu EVAL()?


Interesanta idee, am sa o incerc, si te anunt daca a mers.

Multumesc
 1/28/2012 6:31:12 PM
User is offlinealemao
112 posts
5th


Re: Problema cu Select - SQL
 (N/A) Modified By alemao  on 1/28/2012 7:31:37 PM)
 Daniel Buduru wrote
Care este exact eroarea? Codul de eroare, mesajul si linia din program la vare apare (codul, nu numarul liniei).



Mii de scuze
Am citit mesajul dvs. destul de tarziu.
Problema erorii nu am rezolvat-o decat cu eliminarea spatiilor din denumirea folderului.

Deocamdata merge insa trebuie sa fac ceva si in acest sens ca nu se stie niciodata.
Momentan sunt presat de timp si stiti cum este, nu trebuie sa intru in detalii.

Va multumesc
  Visual FoxPro  Cod, sintaxa si comenzi  Problema cu Sel...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement