Search  
Wednesday, May 23, 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  Visual FoxPro in general  data introdusa ...
 data introdusa eronat
 
 8/12/2005 12:33:50 PM
User is offlinekumpel
17 posts


data introdusa eronat
 (N/A)
Am scris codul in "valid" al textbox-ului: IF gnAn>2005 =MESSAGEBOX("Anul introdus este gresit!") RETURN .f. ENDIF ,pentru ca atunci cand conditia nu este indeplinita sa nu mai trec la pasul urmator,insa nu numai ca nu mai trec la pasul urmator,ci nu mai pot sa fac absolut nimic,indiferent de ce valoare as introduce imi apare mereu mesajul din messagebox.Mentionez ca am incercat si cu return.Multumesc anticipat ptr ajutor.
 8/12/2005 12:39:52 PM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)

Daca faci Return .F., control-ul nu mai pierde focus-ul de aia nu mai poti sa faci nimic. Am mai discutat despre validarile pe valid, si concluzia a fost ca nu este de preferat sa il obligi pe user sa ramana pe control, mai degraba faci restrictia la apasarea butonului Inainte sau salvare ce ai tu acolo.

Acuma tu ai zis ceva de data, sper ca valaorea din control nu este de tip data ci este numeric, pentru ca altfel ar trebui sa-ti dea o eroare nu mesajul tau. Dar daca totusi ai data acolo atunci faci cu year( Data) > 2005.

 8/12/2005 12:58:05 PM
User is offlinekumpel
17 posts


Re: data introdusa eronat
 (N/A)
Data este de tip numeric.Eu am mai multe textbox-uri si in unul am de introdus anul,iar eu vreau ca in cazul in care introduc un an peste 2005 sa nu ma mai lasa sa introduc in urmatorul textbox pana nu corectez eroarea! :)
 8/12/2005 1:00:57 PM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)
Pai atunci lasa-l sa plece de pe textbox-ul cu anul iar in evenimentul When din celalalt textbox intorci .F. daca anul este mai mare de 2005 si acel control nu primeste focus-ul, asta daca nu vrei sa faci validarile pentru toate textbox-urile intr-un singur loc cum ar fi butonul de salvare sau continuare ce ai acolo.
 8/12/2005 1:03:42 PM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)
Am uitat sa mentionez. Intorci .F. din When dar pui nu mesaj in prealabil, pentru ca este foarte nasol sa dai click si sa nu intelegi dece nu s-a intamplat nimik :)
 8/13/2005 7:58:14 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: data introdusa eronat
 (N/A) Modified By Alex Dobrin  on 8/13/2005 8:10:39 AM)
Eu as face in felul urmator daca vrei sa se faca verificarea in "valid":
if gnAn>2005
    gnAn = 2005
    wait wind "Suntem in anul 2005 !" nowait
endif
return .T.
Asa nici nu blochezi utilizatorul si ai verificat si anul.

Si poate ar merge si mai bine asa:
if gnAn>year(date())
    gnAn = year(date())
    wait wind "Suntem in anul 2005 !" nowait
endif
return .T.
Cu conditia ca variabila gnAn sa fie de tip numeric (altefl trebuie sa transformi gnAn in numeric sau anul in caracter) si data computerului sa fie setata corect.

Alex Dobrin
Algis Info
 8/13/2005 10:01:10 AM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)
Da ideea de a testa cu year(date()) mi se pare mai buna decat a testa cu 2005 direct, dar nu cred ca este cea mai buna idee cu wait window pentru ca se poate foarte usor sa nu fie vazuta si utilizatorul poate trece mai departe.
 8/13/2005 10:32:50 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: data introdusa eronat
 (N/A)
Avantaje si dezavantaje.:)
Nici mie nu-mi place sa verific la nivelul controlului, dar daca se doreste neaparat o astfel de verificare mi se pare necesar sa permiti utilizatorului sa lucreze cat mai usor.
Cu wait wind nu mai trebuie sa faca nimic. Se poate pune acolo un messagebox sau o alta fereastra de atentionare dar asa utilizatorul va fi intrerupt din lucru sa citeasca acel mesaj.
E adevarat si ca in cazul in care lucreaza repede si nu se uita pe ecran (asa cum se intampla de obicei cu un program care a devenit familiar) nu o sa observe fereastra. Dar asta se intampla dupa o perioada de utilizare a programaului si pana atunci se presupune ca se cunoaste aceasta conditie (anul sa fie cel mult egal cu anul curent).

Alex Dobrin
Algis Info
 8/13/2005 12:13:41 PM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)

Da asta era ideea, este mai bine ca toate validarile sa se faca la un loc nu pe controale.

 8/13/2005 12:15:02 PM
User is offlinekumpel
17 posts


Re: data introdusa eronat
 (Romania)
multumesc mult amandurora! Ridic o alta problema,fiind prinul proiect la care lucrez am de-a face cu multe noutati!Am compilat soft-ul in exe(am setat ca dupa compilare sa fie rulat soft-ul),mentionez ca nu a dat nici o eroare la compilare.La rularea imediat dupa compilare a mers soft-ul,insa daca am incercat din explorer nu a mai mers.Am intels ca poate sa fie de la niste formulare modale,astept raspunsurile voastre!Multumesc f mult!
 8/13/2005 12:19:37 PM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)

Sa discutat asta aici: Visual FoxPro  Form-uri şi generatoare de form-uri  apelare form

Dar idea este ca din mendiul foxului iti functioneaza, dar pe cont propiu nu functioneaza daca nu pui: READ EVENTS.

Read Events porneste interpretorul si trebuie executata dupa ce pornesti prima forma, dar dupa ce pornesti meniul aplicatiei daca ai unul.

 8/13/2005 12:27:00 PM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: data introdusa eronat
 (N/A) Modified By Alex Dobrin  on 8/13/2005 12:30:46 PM)
La intrebarea asta gasesti raspuns si in F.A.Q.
Acolo apare intrebarea:


De ce se închide programul imediat după apelarea sa ?

Alex Dobrin
Algis Info
 8/14/2005 7:02:11 PM
User is offlinekumpel
17 posts


Re: data introdusa eronat
 (Romania)
am 2 grid-uri,in grid1 imi este afisata tabelatabela vanzare),iar in grid2 imi este afisat rezultattul unei filtrari a acestei tabele.Eu as dori ca sa dau click pe o inregistrare din grid1 si apoi sa apas pe butonul selectare si sa imi apara respectiva inregistrare in gridul de sus,dupa care la urmatoarea apasare a butonului sa imi apara a 10-a inregistrare de la cea pe care am selectata si am afisat-o in grid2 si tot asa sa mi se afiseze inregistrarile din 10 in 10. Am incercat ptr prima inregistrare cu select vanzare scatter memvar select temptable append blank gather memvar thisform.refresh ,insa cand apas butonul selectare imi apar toate inregistrarile din grid1 in grid2 si nu doar inregistrarea pe care eu am dat click.Va multumesc anticipat!
 8/14/2005 7:10:48 PM
User is offlinekumpel
17 posts


Re: data introdusa eronat
 (Romania)
am pus aici codul ca sa intelegeti mai bine. ;)
 8/15/2005 8:10:16 AM
User is offlineanonymous
0 posts


Re: data introdusa eronat
 (Romania)

Salut. Deci vrei din 10 in 10 :)

Ok. Cum sa afisezi in gridul de sus ti-a explicat foarte bine Kampel, desi poti sa faci mai frumos:

Select( NumeTabele)

scatter name oInregistrare memo

select( Tabele2)

delete all && pentru afisarea precedenta, desi poate ar trebui doar delete

insert into &Tabela2 from name oInregistrare.

Cat despreinregistrari din 10 in 10, nu am inteles daca vrei sa-ti sara la a 10 inregitrare dupa o anumita conditie care sa semene cu inregistrare curenta sau doar a 10 din gridul de jos, si deci o sa presupun ca nu este nici o conditie asa ca:

Select( NumeTabele)

for nContor = 1 to 10

   skip

   if eof()

   *--Am ajuns la sfarsitul tabelei. Aici te poti intoarce cu un pas si-i afisezi ultima inregistrare daca vrei

      exit

   endif

endfor

*--Daca am iesit din for si nu suntem la eof() afisam inregistrarea

*--Aici daca faci o metoda din codul de mai sus apelezi doar metoda.

*--Mai este o problema. Prima oara cand apesi butonul trebuie sa stii daca vrei sa afisezi inregistrarea curenta sau a 10, si in consecinta pui o propietate a formei, lFlag sa zicem, iar in afterrowcolchange al gridului 1 faci thisform.lFlag = .F., iar pe butonul de afisare:

if thisform.lFalg

   *--Trebui afisata a 10-a inregistrare, si anume for-ul de mai sus

else

   *--Trebuie afisata inregistrarea curenta, adica apelata direct metoda de afisare

endif

  Visual FoxPro  Visual FoxPro in general  data introdusa ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement