Search  
Saturday, January 16, 2021 ..:: 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  Am nevoie de aj...
 Am nevoie de ajutor la o baza de date relativ simpla
 
 4/10/2013 4:25:28 PM
User is offlineAlex88
3 posts


Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
Buna ziua Domnilor,
Pentru inceput vreau sa va multumesc ca existati, si ca ajutati oameni ca mine, in porblemele lor "existentiale" legate de VisualFoxPro.

Acum, am o problema in a cauta date(secvente) dintr-o baza de date de tip Memo(binary), si a le salva intr-o noua baza de date cu anumite criterii.
De exemplu am inserat in baza de date sirul de nr: 110110101011000010101101011... ,
Comanda ar trebui sa caute in toata baza de date, sa gaseasca secventa scrisa de mine gen: 110101, sa o salveze in noua baza de date, si sa identifice urmatoarele criterii:
-Nr.repetari = 2
-0 inainte secv. = 2
-1 inainte secv. = 0
-0 dupa secv. = 1
-1 dupa secv. = 1
Ceva de genu'l asta mi-ar trebui.

Vreau sa va aduc la cunostinta ca am fost si eu o data bun la astea:) pe vremea cand eram in liceu la mate-info, si din fragmentele pe care mi le mai aminetesc am reusit sa fac ceva... cu totul diferit de ce am descris mai sus... asa ca daca aveti timp/cunostinte in asa ceva , si m-ati putea ajuta, v-as fi foarte recunoscator.
Multumesc.
Sa aveti o zi buna;)
 4/10/2013 5:50:52 PM
User is offlinecostin_mentor
742 posts
www.accessoft.ro
1st




Re: Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
ACTIVATE SCREEN
CLEAR

c1='110110101011000010101101011'
d1='110101'
nrAparitii=OCCURS(d1,c1)

STORE 0 TO nr0before, nr1before, nr0after, nr1after
FOR i= 1 TO nrAparitii
    AparitiaI = AT(d1,c1,i)
    IF SUBSTR(c1,AparitiaI-1,1)='0'
        nr0before = nr0before + 1
    endi    
    IF SUBSTR(c1,AparitiaI-1,1)='1'
        nr1before = nr1before + 1
    endi    
    IF SUBSTR(c1,AparitiaI+LEN(ALLTRIM(d1)) ,1)='0'
        nr0after = nr0after + 1
    endi    
    IF SUBSTR(c1,AparitiaI+LEN(ALLTRIM(d1)) ,1)='1'
        nr1after = nr1after + 1
    endi    
endfor
?d1
?c1
?'Nr. aparitii='+TRANSFORM(m.NrAparitii)
?'Nr. 0 before='+TRANSFORM(m.nr0before)
?'Nr. 1 before='+TRANSFORM(m.nr1before)
?'Nr. 0 after='+TRANSFORM(m.nr0after)
?'Nr. 1 after='+TRANSFORM(m.nr1after)
 4/10/2013 8:28:35 PM
User is offlineAlex88
3 posts


Re: Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
Wow...Multumesc,
Ma ajutat foarte mult, insa tot mai am unele probleme... care stiu sigur ca nu sunt nici pe departe asa de grele pe cat par, dar nu le gasesc nici cum rezolvarea...
Uite cateva:

- as vrea ca variabila "c1" sa fie egala cu o baza de date de tip memo( adica cautarea sa aiba loc in baz de date nu intr-un sir anume), care cuprinde mai mult de 30 de siruri de nr.; cum mai exact e comanda ?
- ca variabila "d1" sa ia valoarea pe care i-o atribui eu printr-o caseta text, nu era ceva de genu: d1=thisform.text1.value ? ( daca utilizez comanda asta , imi da rezultatele ( nr. 1/0 before/after = 0 ) tot timpu...)
- si daca de exemplu sirul de nr ( si secventa cautata) are spati gen: 11 0 11 0 1 0 1 0 11 0000 1 0 1 0 11 0 1 0 11...(implicit 11 0 1 0 1 ) nu mai merge secventa deloc ,

iar daca modifici asta :

IF SUBSTR(c1,AparitiaI-1,1)='0'
nr0before = nr0before + 1
endi

cu :
IF SUBSTR(c1,AparitiaI-1,1)='0 ' <--- ( cu spatiu dupa 0)
nr0before = nr0before + 1
endi

rezultatul va fi 0.

Multumesc pentr-u ajutorul de pana acuma, Si pentr-u cel viitor.
 4/11/2013 9:28:56 AM
User is offlinecostin_mentor
742 posts
www.accessoft.ro
1st




Re: Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
o solutie ar fi urmatoarea:
d1= thisform.text1.value (ai putea sa-i dai nu nume mai sugestiv in loc de d1, ie secventaMea in loc de d1)
d1 = strtran(d1, '  ','')     && aici inlocuiesti spatiile din textul cautat cu 'nimic'
select tabelaTa
scan
     c1= camptulTauMemoAici
     c1= strtran(c1,' ','')   && aici inlocuiesti spatiile din textul in care se face cautarea cu 'nimic'
     &&aici pui codul anterior
ends

PS. "pentr-u" nu se scrie asa, corect este: pentru.
 4/12/2013 11:10:53 PM
User is offlineAlex88
3 posts


Re: Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
Ce pot sa mai zic... merge sa foloseasca secventa data de mine, merge sa caute in campul memo , asa ca mersi foarte mult.

E aproape, aproape O.K., doar ca acuma sunt alte probleme... de genul:
•cand vreau sa caut unele secvente gen: 0111 , 1000, 0101, etc imi da rezultatul 0 la toate; insa in mod paradoxal: 1, 0, 100, 10000 , 1110001, si altele merg...
•sau modul de citire a secventei difera de la o secventa la alta (identica cu prima), mai exact:
-sa zicem ca e secventa: 011110110100011110 , iar eu caut: 111, rez. o sa fie :
Nr.ap.=2
0i.=1
1i.=1
0d.=1
1d.=1
si mai exact : prima ap. e 0-111-1, si a doua 1-111-0 ... in loc de 0-111-1/0-111-1 ( adica 0i.=2 / 1i.=0 / 0d.=0 / 1d.=2)

Per total in cazut in care sirul e mai lung si categoric mai diversificat , rezultatul va fi cu atat mai putin exact.
Si anume: exact de ce vreau eu , adica sa le citeasca pe toate la fel; si sa citeasca doar secventa pe care eu o aleg, adica: daca caut 11 0 ( as fi vrut, sa fie asa) sa ia in calcul doar locurile in care este exact 11 0 , si nu toate de genul 111 0 , sau 11 00 ( desi cea de la urma , merge oarecum pentru ca sfarsitul nu conteaza chiar atat de mult pe cat inceputul secventei).

Acuma, nu stiu sigur daca problemele de mai sus au sau nu vreo legatura directa cu sirul, insa cred, doar cred ca are legatura cu modul in care citeste sirul ca un intreg, si nu ca mai multe grupuri in cazul in care at fi fost cu spatii...( ceea ce as fi preferat si pentru o mai buna intelegere si citire a sirului...)
Oricum, am sa incerc sa ma ocup si eu mai mult de el ( doar astazi am reusit sa ma uit peste postul tau si folosesc solutile de la tine (pentru care iti multumesc din nou , mi-au fost de mare folos)) si sa mai revin cu niste detalii, doar ca momentan nu stiu cand...

P.S.
Sunt curios... heh, chiar vreau sa stiu cat de mult sa "ciobit" imaginea pe care o aveai despre mine, in momentul in care ti-ai dat seama ca am facut, nu o data... ci de doua ori o greseala atat de ridicola ;) , vezi tu... cand spun ciobit nu ma refer expre la stricat sau decazut, si mai degraba la unghiul din care ma privesti acuma; sau, de ce nu... la categoria in care mai pus.
Mersi din nou pentru tot.
O zi buna, iti doresc.
 4/13/2013 9:20:13 PM
User is offlinecostin_mentor
742 posts
www.accessoft.ro
1st




Re: Am nevoie de ajutor la o baza de date relativ simpla
 (N/A)
Nu-mi fac o parere despre cineva la prima greseala (tu esti la prima0. Daca se repeta, abia atunci ii pun o "eticheta" .
Succes in rezolvarea problemei.
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Am nevoie de aj...

Search  Forum Home         

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement