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  Baze de date, tabele, view-uri si indecsi  HELP ...... fil...
 HELP ...... filtru select
 
 7/20/2006 2:01:10 AM
User is offlinetarantula
5 posts


HELP ...... filtru select
 (Romania)

Buna toturor

Sunt si eu un mic incepator al programarii in VFP si am inceput sa descopar cu incetu tainele VFP, dar am ajuns intr-un punct in care sincer nu ma descurc. M-am mai lovit de problema asta in trecutul apropiat. Sunt sigur ca pentru multi din dumneavoastra problema mea e una banala, dar eu incerc sa obtin un raspuns la dilema mea.

Bun.....

Se da.....   1 formular cu 4 textboxuri pe care eu imi permit sa le denumesc filtre si un buton.

Se cere sa se faca un SELECT asupra unei tabele conform datelor introduse in tabela.

Tabela sa o numim de exemplu Clienti care are urmatoarele campuri: NumeFirma, Judet, Localitate, CodFiscal, PesoanaDeContact.

Deci ..... utilizatorul formularului poate face select pt toate inregistrarile din tabela daca in cele 4 textboxuri nu se introduce nimik

eu la inceput m-am gandit la varianta cea mai simpla ....

select * from clienti where numefirma=this.parent.text1.value, judet=this.parent.text2.value ............... codfiscal=this.parent.text4.value

chestia asta functioneaza daca in toate filtrele am introdus ceva. dar daca utilizatorul nostru doreste sa afle doar date despre firmele din bucuresti ......sau date despre firmele cu numele X din orasul Y nu mai merge.

Data tyrecuta cand m-am lovit de aceasta problema am folosit un CASE

Verificam pe rand .... primul textbox modificat ... restul nemodificate .... un select ...

al doilea modifica ... restu nemodificate .... alt select

.........................................

primele 2 modificate .........restu nu .... alt select ..... SAMD

Daca ma refer la cazu de fata am 16 selecturi.

Se poate cumva cu un singur select ..... sau o metoda care sa nu ma oblice sa scriu 2 pagini de cod ?

 

Merci

 

 7/20/2006 2:52:35 AM
User is offlineedyshor
1450 posts
1st




Re: HELP ...... filtru select
 (N/A)
mr. tarantula .. nu pot sa cred ca nu cunoasteti inca functia IIF()  .. e super .. v-o recomand cu cea mai mare caldura . .si credetzi-ma ca o sa va indragostiti pe loc de ea (asa cum am facut si eu de altfel) .. deci in exemplul dat de dumneavoastra, selectul modificat ar arata cam asa:

select * from clienti where numefirma=iif(!empty(this.parent.text1.value), this.parent.text1.value, numefirma) and ;
judet=iif(!empty(this.parent.text2.value), this.parent.text2.value, judet) and .... and ;
codfiscal=iif(!empty(this.parent.text4.value), this.parent.text4.value, codfiscal)

succes! :)

 7/20/2006 9:41:56 AM
User is offlinenae racaru
714 posts
www.rarom.ro
1st




Re: HELP ...... filtru select
 (Romania)
crit1=iif(empty(this.parent.text1.value),'',' where numefirma=this.parent.text1.value' )
crit2=iif(empty(this.parent.text2.value),'',iif(empty(crit1),' where Judet=this.parent.text2.value' ,' and Judet=this.parent.text2.value ')
crit3=iif(empty(this.parent.text3.value),'',iif(empty(crit1+crit2),' where localitate=this.parent.text3.value',' and localitate=this.parent.text3.value' )
crit4=iif(empty(this.parent.text4.value),'',iif(empty(crit1+crit2+crit3),' where codfiscal=this.parent.text4.value',' and codfiscal=this.parent.text4.value'')
comanda='select * from tabela ' +crit1+crit2+crit3+crit4
&comanda


VFP 6 si 9 + Oracle
 7/20/2006 10:10:09 AM
User is offlineDanTodor
297 posts
4th


Re: HELP ...... filtru select
 (Romania)
Inca o varianta :
m.comandaSql = "select * from tabele where 1=1"
if(!empty(this.parent.text1.value))
    m.comandaSql = m.comandaSql + " and numefirma='"+alltrim(
this.parent.text1.value)
endif
( si tot asa de inca trei ori )
(adaugi clauza INTO cu numele cursorului care il ai la datasource )
&comandaSQL

hth
 7/20/2006 10:32:53 AM
User is offlineedyshor
1450 posts
1st




Re: HELP ...... filtru select
 (N/A)
mda .. eu am ales metoda fara & .. sa mai zic ceva de view-uri in loc de select ?! :D .. sau mai bine .. CursorAdapter ?! :P
 7/20/2006 11:18:03 AM
User is offlineanonymous
0 posts


Re: HELP ...... filtru select
 (Romania)
Eu personal evit sa folosesc IIF() in select, am observat ca dureaza prea mult daca am o BD mai mare.
Probabil ca fox-ul sta si evalueaza conditia pentru fiecare inregistrare.
De aceea solutia cu generarea comenzii select si & mi se pare mai comoda.
 7/20/2006 2:57:33 PM
User is offlineedyshor
1450 posts
1st




Re: HELP ...... filtru select
 (N/A) Modified By edyshor  on 7/20/2006 2:58:38 PM)
mda .. aici cam ai dreptate :) .. dar sunt situatii cand imi e mai comod un view/ca decat un select cu & ..
 7/20/2006 8:34:05 PM
User is offlinetarantula
5 posts


Re: HELP ...... filtru select
 (Romania)
Merci mult tuturor.
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  HELP ...... fil...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement