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  sunt blocat...
 sunt blocat
 
 4/14/2011 2:55:41 PM
User is offlinefaq
36 posts


sunt blocat
 (N/A)
Salut, am si eu o problema legata de data si o valuare numerica ca sa dau mai mult de inteles:
am tabel : serie, nr, nume, prenume, zilecura, dindata,      panadata
                xxx  11  popa   ion          10          25/04/11 - 05/05/11

Problema e ca trebe scada numarul cu finalul de luna 30.04.2011 (5zile cura), iar pe luna care urmeaza sa il treaca cu diferenta de zile ramase 01. 05.2011 (4 zile cura);
si a doua cum setez un raport sa imi afiseze oameni doar peinterval de o luna

daca va trebe fisierele proiectului pot sa il urc si sa il downloadati.


Va multumesc anticipat,
Oprea Ovidiu
 4/14/2011 4:10:02 PM
User is offlinecostin_mentor
492 posts
www.accessoft.ro
2nd




Re: sunt blocat
 (N/A)
Pentru a afla ultima zi din luna pentru coloana dindata folosesti:
GOMONTH(dindata-day(dindata-1),1)-1

Pentru a afla numarul de zile din luna aprilie faci diferenta dintre cele 2:

GOMONTH(dindata-day(dindata-1),1)-1 - dindata + 1
 4/15/2011 10:48:28 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
imi da numai erori cand le implementez :(

l-am atashat.. poate aveti vreo idee..

sunt blocat de-a binelea
prgizvoare.rar 
 4/15/2011 3:51:10 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
 faq wrote
imi da numai erori cand le implementez :(

l-am atashat.. poate aveti vreo idee..

sunt blocat de-a binelea


si data tot vizualizati programul, daca puteti da o notascara 1/10 avand in vedere ca sunt incepator
 4/18/2011 8:41:01 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
pentru a afla prima zi din luna curenta am folosit:

GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0)) - DAY(GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0))-1)

iar pentru ultima zi din luna curenta:

 GOMONTH(PANADATA, 0) - DAY(GOMONTH(PANADATA, 0))

acuma imi mai trebuie  o formula pentru aface calculul  zilelor de tratament ...


 4/18/2011 12:18:40 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A) Modified By Daniel Buduru  on 4/18/2011 12:18:53 PM)
Din viteza, Costin a pus paranteza gresit.
Formula pentru ultima zi a lunii este
GOMONTH(dindata-day(dindata)-1),1)-1

Prima zi al lunii:
dindata-day(dindata)+1

Zilele de tratament =diferenta celor doua date:
Panadata-dindata




Daniel Buduru
 4/18/2011 2:30:21 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
GOMONTH(dindata-day(dindata-1),1)-1 - dindata + 1 - ziletratament  imi da valoarea -4 pe luna viitoare... si imi da valorile peste cap

Ceea ce m-ai dat da valuare de -29.
 v-am urcat niste screenshot-uri poate va dati seama... pe unde am gresit sau nu am facut ce trebuia...

Va multumesc.

 
ada.zip 
 4/18/2011 2:35:58 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)

GOMONTH(dindata-day(dindata-1),1)-1 - dindata + 1 - ziletratament  imi da valoarea -4 pe luna curenta nu pe luna viitoare si imi da celelalte valori peste cap

Ceea ce m-ai dat da valuare de -29.
 v-am urcat niste screenshot-uri poate va dati seama... pe unde am gresit sau nu am facut ce trebuia...

Va multumesc.

 
[/QUOTE]
 4/18/2011 2:38:51 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Nu inteleg la ce iti trebuie prima zi a lunii si cate zile are luna.
In VFP numarul de zile e dat de diferenta dintre cele doua date, cea de sfarsit si ce ade inceput

nr_zile=panadata-dindata

Iti trebuie numarun de zile de tratament din fiecare luna, sau numarul total?

Daniel Buduru
 4/18/2011 2:40:42 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
am urcat un screenshot gresit
normale.png 
 4/18/2011 2:54:13 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Deci vrei numarul de zile dintr-o perioada
dtstart=date(2011,4,25) &&data de inceput a perioadei
dtend=date(2011,5,5) &&data de sfarsit a perioadei
nr_zile= IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))


Daniel Buduru
 4/18/2011 3:03:45 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Daca vrei numarul de zile de tratament dintr-o anumita luna
lnMonth=4
dtstart=date(2011,lnMonth,1) && prima zi a lunii
dtend=gomonth(dtstart,1)-1 &&ultima zi a lunii
nr_zile_luna= IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))


Daniel Buduru
 4/18/2011 3:16:42 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
tabelul izvoare
nume
prenume
cnpas
agentie
indvidual
dindata
panadata
test
test
0
10
0
25.04.2011
04.05.2011
ion
eu
0
0
10
05.04.2011
14.04.2011
Normal  pe perioada 01.04.2011 - 30.04.2011 trebuie sa defineasca pe cei din luna aprilie
nume
prenume
cnpas
agentie
indvidual
dindata
panadata
test
test
0
6
0
25.04.2011
30.04.2011
ion
eu
0
0
10
05.04.2011
14.04.2011
iar pe luna viitoare 01.05.2011 - 31.05.2011 iar aici cu diferenta de zile  ramasa pe luna mai
nume
prenume
cnpas
agentie
indvidual
dindata
panadata
test
test
0
4
0
01.05.2011
04.05.2011
---
ALTA PERSOANA
10


10.05.2011
10.05.2011
 
Zilele de tratament  sunt intoduse dropbox.. numerotate 01-18 ( pe o coloana by hand) x 3 (CNPAS, agentie, individual)

data e introdusa norma DMY ( dindata si panadata ( nu am reusit inca sa bag dtpiker m-am incurcat la controale si nu selecta data  nu o arata in tabele... ramas pe viitor))

daa te ajuta am atasat proiectul
 
 4/18/2011 3:19:31 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
o sa incerc sa vad daca reusesc, Multumesc de ajutor
proiectizv.rar 
 4/18/2011 11:04:22 PM
User is offlineDumitru
172 posts
5th


Re: sunt blocat
 (N/A)
Nu inteleg ce nu stii ?
Ti-a spus Daniel cum sa determini numarul de zile.
 4/19/2011 9:09:23 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
numerele  cnpas, agentie , individual, le introduc din 3 dropbox, fiecare drop are numerele lui de la 1-18, dar cand incerc sa calulez imi da restul tabelului peste cap (in raport) si nu imi dau seama unde gresec, poate nu am pus o conditie referitor sa faca calculul numai daca acel pacient este intre luni ,  si daca incer sa definesc filtru  sa imi ia paienti numai pe o perioada nu imi merge,  ma lasa doar cu dindata.

daca as scoate panadata din ecuatie complet si din tabele  si sa raman doar cu cnpas, agentie, individual si dindata, si doar sale calculez ar fi mai bine??

si/sau sa las si panadata dar sa fie un field de calcul , adica ca o casetade raspuns...

Va multumesc.


 4/19/2011 9:28:17 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
am reusit aclculu, era de la mine.. m-am jucat pe unde nu trebuia.

dar sa ivit alta calculul il face bine dar sunt afectati si ceilalti in raport.

v-am atasat un screenshot

Multumesc
calculreusit.png 
 4/19/2011 9:58:43 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
In raport ai un interval, in perioada de la DINDATA pana la PANADATA. Datele intervalului ai acelasi nume cu datele sejurului din tabela, si nicaieri nu ai un alias.
Schimba datele intervalului in dtstart, dtend sau cum vrei tu sa le numesti, dar sa aiba alt nume decat datele din tabela.
Nu stiu de und elansezi raportul, dar acolo ar trebui sa creezi cele doua variabile - data de inceput a perioadei si data de sfarsit a perioadei, cele pe care le pui in headerul raportului,- apoi sa apelezi raportul.

Daniel Buduru
 4/19/2011 11:48:31 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
am reusit ..   bun sfatul cu aliasul... nu stiu ce am facut dar am facut ceva... (am creat inca un tabel (alias) cu coloanele dtstart si dtend.. creat un form si am bagat tot anul 2011 prima zi si ultima zi din fiecare luna...  ) dupa am copiat la header linia de tabele are le aveam la details ... iar la details l-am lasat asa  neschimbat ,dupa cum se vede in poza...  acum  cum calulez suma de la header sa imi scada 4 zile care au ramas... pentru luna viitoare.. si daca schimb data alculatorului ma trtece automat in luna urmatoare.


Va multumesc
AAAA.png 
 4/19/2011 1:14:10 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
tot mai sunt probleme , cand introduc un pacient nou nu mil trece in header ...
mil da la details
 4/19/2011 2:58:23 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)

Izvoare.agentietarau = IIF(Izvoare.dindata>=Alias.dtstart or Izvoare.panadata<=Alias.dtend,0,MIN(Alias.dtend,Izvoare.panadata)-MAX(Alias.dtstart,Izvoare.dindata)) la expresia data mai sus imi da numai 9999 ... si fara "=" pus tot acelas numar,  conform msdn.microsoft daca expresia1 este adevarata .T. expresia 2 este returnata si a 3 neevaluata, dat tot nu inteleg de ce da valuare 9999 .. am setat peste tot formatul datei DMY sau British ... si tot la fel...
 4/20/2011 11:22:20 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
o formula cum e "GOMONTH(dindata-day(dindata-1),1)-1" asta e pt finalul luni ... imi trebuie una pt inepatul luni,  expresia care o am dtstart "GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0)) - DAY(GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0))-1)" nu e buna , cand folosesc alias agentiet pt aflarea zilelor "IIF(dindata>=dtend or panadata<=dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))" imi returneaza valorile 5, 1 in loc de 6,2 iar daca adaug la formula + 1 restul personelor care sunt in ordine mi trece de la 0 la 1 iar calulul  final e dat peste cap.. find ca folosesc formula pentru calcul "agentietoarta - agentiet (aliasul).

Va multumesc



EWR.png 
 4/20/2011 3:20:28 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
intrebare :

numeprenume
camera
cnpas
agentie
individual
dindata
panadata
ion
pop
111
0
10  (6)
0 [6]
25.04.2011
04.05.2011
pop
ion
112
0
0 [2]
10 (2)
29.04.2011
08.05.2011

Calcul pt total zile:
cnpas 0
agentie 6 [4]
individual 2 [-4]
toatal zile 8
 
ce e cu rosu e in plus teoretic nu ar trebui sa existe . si intrebarea cu pun filtre pe variabile ca sa  nu mai afiseze si pe (vecin) avand in vedere ca sunt 3 tabele separate cnpas,agentie,individual  / fiecare doctor.
 Mai jos sunt variabile si filtre care le folosesc.

variabilele folosite:
dtstart : GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0)) - DAY(GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0))-1)
dtend: GOMONTH(PANADATA, 0) - DAY(GOMONTH(PANADATA, 0))
agentiet: IIF(dindata -1>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata -1)) &&compensare 1zi (nu numara de la 25 ci de la ziua urmatoare 26)
individt: IIF(dindata -1>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata -1))
cnpas: IIF(dindata -1>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata -1))

filtru in data enviroment - mouse dreapta pe tabel - code : set filter on doctor = "toarta"


Va multumesc
2e432.png 
 4/21/2011 11:18:59 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Ai o problema cu limitele intervalului.

? DATE(2011,5,4)-DATE(2011,4,25)
? DATE(2011,4,30)-DATE(2011,4,25)
? DATE(2011,5,4)-DATE(2011,5,1)

Probabil ca la durata tratamentului nu se socoteste prima sau ultima zi. In cazul scaderii  a doua date, vfp nu socoteste si ziua de inceput a intervalului, deci numarul de zile returnat de data1-data2 e acelasi cu numarul de zile care te intereseaza.
Daca data de inceput si data de sfarsit se afla in luni diferite, la numarul de zile intre intai ale lunii si ultima zi trebuie adaugata si ziua de intai, care e zi plina, nu zi de sosire.

Nu stiu ce calcul faci aici:
dtstart : GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0)) - DAY(GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0))-1)
dtend: GOMONTH(PANADATA, 0) - DAY(GOMONTH(PANADATA, 0))

dtstart e data de inceput a intervalului de raportare, iar dtend e data de sfarsit
Daca raportarea se face pe luna 5, dtstart e 1 mai 2011, dtend e 31 mai 2011. dtstart si dtend nu au legatura cu dindata si panadata, care sunt data de inceput si data de sfarsit a sejurului persoanei respective.
Ca sa fie clar: dtstart si dtend le dai ca variabile inainte de rularea raportului, nu le calculezi din date persoanei.

nr_zile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))
+iif(dindata<dtstart,1,0)

E proiect de scoala sau job?

Daniel Buduru
 4/21/2011 12:58:46 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
joblucrez la Hotel Parang Olanesti ca adm retea... dar din cauza unui nebun si un priministru .. si o vaca care a concesionat izvoarele a rezultat programul asta .. prima varianta am reusito era simpla fara filtre sau nebuni de raportare pe o perioada de o luna cu calcule sa defineasca zilele de tratament si m-am blocat definitiv, e destul de greu ..ce maistiu de foxpro din liceu si facultate dar nu asa de mult.


sunt variabilele care le-am  pt prima zi si ultima zi ( sunt in header puse )
dtstart : GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0)) - DAY(GOMONTH(DINDATA, IIF(DAY(DINDATA)=1,1,0))-1)
dtend: GOMONTH(PANADATA, 0) - DAY(GOMONTH(PANADATA, 0))


o intrebare cum le introduc inainte de rularea programului, in data enviroment.. acolo la code adica la init?? casa nu mai fac greseli.

Multam



 4/21/2011 1:44:23 PM
User is offlineDumitru
172 posts
5th


Re: sunt blocat
 (N/A) Modified By Dumitru  on 4/21/2011 1:49:24 PM)
Salveza-le in obiectul principal al aplicatiei desi se calculeaza usor

objApp.AddProperty('dtstart',dtstart)
objApp.AddProperty('dtend',dtend)

sau daca folosesti mainScreen-ul fox-ului

_SCREEN.AddProperty('dtstart',dtstart)
_SCREEN.AddProperty('dtend',dtend)

si le accesezi cu _SCREEN.dtstart sau objApp.dtstart
 4/21/2011 1:49:59 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Asa cum ai declarat dtstart si dtend in header, se vor calcula cu valorile primei inregistrari din tabela, de aici ai erorile.
In header pui in cele doua campuri m.dtstart si m.dtend
Valorile trebuie calculate in detail in fiecare camp, deci acolo vei pune formula aceea pentru nr zile - in camp
Rulezi raportul cu comanda asta:
Faci un program care sa ruleze raportul
*!* procedure runraport
lparameters lnluna, lnAn
Private dtstart, dtend,
dtstart=date(lnAn,lnLuna,1)
dtend=gomonth(dtstart,1)-1
report form myreport
*

Se ruleaza asa:
do runraport with 5, 2011
sau
runaport(5,2011)



Daniel Buduru
 4/21/2011 2:57:09 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
aha super .. o sa am ce face pana la miezul nopti  mi-ai data tema buna   ... am incercat si eu ceva pare putin deplasat dar am creat repede in baza de date extra tabele dindata1, panadata1 si dindata1, panadata2 si le-am definit pt fiecare tip: "IIF(dindata1 -1>dtend or panadata1<dtstart, 0,MIN(dtend, panadata1)-MAX(dtstart,dindata1 -1))+iif(dindata1 -1<dtstart,0,0)"  si am reusit sa separ datele, avand in vedere ca am 3 tipuri de turisti. doar ce mai am de facut acolo unde este dindata  - panadata sa imi afiseze si dindata1 - panadata1.

 ... si tocmai am realizat ca nu mai trebuie fildurile  cnpas agentie, individual .. unde bagam zile manual ca totul se face prin "data".  /!\ ce prost am fost aveam raspunsurile in fata de cateva zile bune./!\

Va multumesc, oricum o sa te/va mai intreb cand o sa ma mai incurc, si cu siguranta va fi la trecerea la urmatoarea luna, adica dispar clenti de luna trecuta si vin/raman cei noi + cei care aveau diferenta de zile de luna trecuta.
Multumesc inca o data (ps sa nu inchizi topicu) (^.^)





sdfsdfsdf.png 
 4/21/2011 3:39:09 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A) Modified By Daniel Buduru  on 4/21/2011 3:41:40 PM)
Nu ai nevoie de mai multe campuri dindata - panadata, ci de un camp in care sa tii tipul serjului - cnpas, agentie, individual. Caracter (1), C = cnpas, A= agentie, I = Individual
In raport, ai cate un camp nr zile pe fiecare tip - cnpas agentie, individual
Pui cate un textbox pentru fiecare, in care pui formula aia pentru nr zile. Campul are si o clauza Print When, in care pui tip='A' in campul pentru agentie, tip='C'in campul cnpas si tip="I"in campul individual.


Daniel Buduru
 4/22/2011 10:27:38 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Am facut tot  ce miai spus merge super,   bazadedate suna asa Turistdoarta =  A=CNPAS, B=Agentie C=Individual  calculele mer super bine pe detail  cu valuarea prin when  nota 10 nu m-am gindit la asta nici odata.. am crezut ca avea legaturi cu altceva.

Acuma am o problema. cum calculez.. am folosit sum si print when A  dar nu afiseaza nimika .. si totusi am bagat un client cu 18 zile CNPAS... in detali imi da valuarea 9 cate zile are pana la finalul luni dar la suma nu arata numica cand fac totalul.

MS mult (^.^)


 Daniel Buduru wrote
Nu ai nevoie de mai multe campuri dindata - panadata, ci de un camp in care sa tii tipul serjului - cnpas, agentie, individual. Caracter (1), C = cnpas, A= agentie, I = Individual
In raport, ai cate un camp nr zile pe fiecare tip - cnpas agentie, individual
Pui cate un textbox pentru fiecare, in care pui formula aia pentru nr zile. Campul are si o clauza Print When, in care pui tip='A' in campul pentru agentie, tip='C'in campul cnpas si tip="I"in campul individual.

 4/22/2011 11:54:23 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
In textboxul de sub fiecare coloana, la expresie pui IIF(tip='A', IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata)),0), iar la calculate pui sum.
Evident, tip A, B, C in functie de coloana pe care faci totalul.
La total zile pui
IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata)), iar la calculate sum


Daniel Buduru
 4/26/2011 8:54:08 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
 Daniel Buduru wrote
In textboxul de sub fiecare coloana, la expresie pui IIF(tip='A', IIF(dindata>dtend or panadataEvident, tip A, B, C in functie de coloana pe care faci totalul.
La total zile pui
IIF(dindata>dtend or panadata


De inceput la multi ani, si ca sarbatorile pascale sa va fi adus bunastare, fericire si multe succese in viata.

O intrebare folosid expresia
IIF(tip='A', IIF(dindata>dtend or panadata.... pot sa  grupez pentru a afisa intr-un raport complet cu toti pacienti?  cum urmeaza :" IIF(tip='A,D,G', iif(... " adica sa filtrez mai multe valori din tabel, tinand cont ca ficare doctor are 3 litere desemnate;  A=cnpas, B=ag, C=individual  sunt pentru un doctor, iar D=cnpas,E=agentie,F=individual pentru alt doctor. cand folosesc valuarea print when tip= "A,D,G" nu imi afiseaza nici o valuare , iar cand creez variabila IIF(tip='A,D,G', iif(... tot la fel, dar daca folosesc doar o litera merge doar pentru un doctor :" IIF(tip='A', IIF(dindata>dt..."

sau sa adaug mai multe bande de detali ...una pentru fiecare doctor.
 
Multumesc
 4/26/2011 10:50:42 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
La multi ani!

In tabela, in loc de cate un camp pentru fiecare medic pui un singur camp, cu numele medic, in care scrii de fiecare data numele medicului (il alegi dintr-un combo).
Creaza in raport un grup pe medic, in group head pui numele medicului, in grup footer pui aceleasi campuri - cele cu IIF(tip='A' ..-, iar la calculate pui sum, iar la
reset based on alegi group:medic.
Lasa totalul general asa cum e acum

Ordoneaza tabela dupa medic, apoi ruleaza raportul.


Daniel Buduru
 4/27/2011 2:13:50 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
L-am finalizat ^.^ intr-un final.. sunteti scrisi in aboutbox, si o sa fiti trecuti si help file + eula. Posibil sa mai apara schimbari sper ca in viitor.
Acuma am ajus sa prelucrez aplicatia.. sa o fac mai frumoasa..un background, sa aranjez fildurile, tab order, etc,am creat combos si toate cele necesare pentru doctor,  tip, acuma am de facut date piker.. am mai incercat dar cand o conectez la tabela imi apare cu rosu (acolo la datasource)  si nu merge da erori . inca ma razboiesc cu el  folosesc Date time piker 6.0.

Va multumesc inca odata. ^.^
 4/27/2011 2:26:29 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
am scapat de erori la DTpiker 6.0 (sp4)dar mam lovit de o problema neastepta nu imi scrie data in tabel .. aici cum o pot rezolva??


 4/27/2011 3:31:14 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Datasource de la DTPicker astepata un obiect recordset, deci nu se poate lega la un camp dintr-un cursor vfp.
Poti accesa proprietatile dtpicker - altele decat cele oferite de intrefata vfp - prin dtpicker.object.
Nu mai stiu daca in vfp6 exista functiile ttod() si dtot()

Poti pune cod in metoda refresh  pentru incarcarea valorii - de ex,:
this.object.value=dtot(tabela.dindata)

Pentru a pune valoare in tabela:
In metoda change a dtpicker
replace tabela.dindata with ttod(tabela.dindata)



Daniel Buduru
 4/28/2011 9:20:46 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
"this.object.value=dtot(izoare.dindata)
error:1429
OLE Idispatch eception code 0 from DTpicker.
A date was specified that does not fall within mindate and maxdate proprieties.
Method: Refresh
line:2"

 Am mai intalnit aceasta eroare .. aici m-am si oprit data trecuta. Cand rulez aplicatia fara sa bag un pacient nou merge bine, nu da erori nimica imi arata data fiecarui pacient dar in format "mm/dd/yy" nu ar fi asta o problema, dar cand introduc un pacient nou atunci imi arata eroarea.

si inca o intrebare pot sa mai fac o aplicatie inclusa in acest program si sa il iau din quick start (adicaca un nou form dar sa fie cum e aboutbox-ul ceva mic nu prea complicat), unde sa imi pun butoane pentru raporte si cu datepiker unde sa setez intervalul de o luna dtstart si dtend si dupaia sa imi deschida raportul care il vreau ??.


Multumesc.
 4/28/2011 10:12:37 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
DTPicker nu accepta valori nule sau empty pentru data. Cand adaugi o inregistrare noua, data este empty, deci genereaza o eroare.
Poti completa automat data in valoarea default a campului, sau in codul din refresh:
this.object.value=dtot(evl(izvoare.data,date(1900,1,1)))
In acest caz, daca nu se alege/scrie o data in dtpicker, data curenta nu se salveaza.

Formatul datei se seteaza astfel:
DTPicker.Object.Format=3
DTPicker.Object.CustomFormat='dd-MM-yyyy'

Pentru configurarea unei aplicatii cu mai multe formuri uita-te pr forum, s-a discutat de mai multe ori.
Poti pune un menu in aplicatie, de unde sa alegi ce rulezi.
Sau un toolbar, eventual vertical, pe stanga, cu butoane pentru formurile pe care vrei sa le lansezi.

Pentru dtstart, dtend iti sugerez sa alegi luna si anul din combobox, apoi sa generezi dtstart si dtend, decat sa alegi zilele respective din dtpicker - e mai comod pentru utilizator.


Daniel Buduru
 4/29/2011 10:52:29 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
mnai am si eu o problema cu listbox, am dat true la multiple select dar cand am facut testul imi scrie doar o valuare in tabela nu scrie cele doua valori selectate.


Multumesc
 
 4/29/2011 11:55:02 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Niciun control nu inlocuieste mai mult decat o singura valoare in campul din controlsource.

Pentru a utiliza multiselect, se scaneaza lista si se testeaza proprietatea selected :

oList=thisform.list1
lcSelected=''
For lni=1 to olist.listcount
   if oList.Selected(lni)
      * cod aici, de ex:
     lcSelected=lcSelected+oList.List(lni)+','
   endif
Next
? lcSelected

Daniel Buduru
 5/4/2011 1:54:29 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
m-am mai lovit de una (programul merge de minune) dar deja am trecut la pacienti din luna asta totul ok la rapoarte, dar in raportdin luna curenta(asta) m-i arata si pe cei din luna trecuta care nu mai au zile, Iar cand ma uit la luna trecuta (anterioara) mi arata si pe cei din luna viitoare..
am setate remove line...if blank.. dar tot nimica nu se intampla...

va multumesc
.
 5/4/2011 3:08:53 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Vezi clauza FOR a comenzii report form:

Report form myreport FOR between(dindata, dtstart, dtend) OR between(panadata, dtstart, dtend)

Daniel Buduru
 5/23/2011 11:01:13 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Nu merge .. nu imi scoate pacienti...  dar in formula asta am variabila dtstart si dtend si poate nu o citeste, am incercat si am bifat remove line ween blank sa bag si data cam asa:
Report form raport.frx FOR between(dindata, date(2011,05,01),data(2011,05,31)) OR between(panadata, date(2011,05,01),data(2011,05,31)),
dar rezultatul e acelasi.
exista o alta varianta, decat aia de exportare .excel (ca evidenta, sa fie) +backup +stergere date cei care nu se mai afla in luna??


Va multumesc ^.^


 5/23/2011 11:54:40 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
A trecut ceva vreme si nu prea mai stiu ce nume de tabele si campuri ai pe acolo.
Incearca sa pui filtrul ala pe tabela, sau sa faci un select cu clauza where conditia de filtru, si vezi daca iti apar inregistrarile.
Daca apar, e o problema in raport.
Daca nu apar, e in date.


Daniel Buduru
 5/23/2011 11:56:43 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: sunt blocat
 (N/A)

Nu ar trebui sa cauti alta varianta - asta pe care o ai ar trebui sa mearga bine, cu o sintaxa de genul:

DataStart = {01.05.2011}
DataEnd = {31.05.2011}
Report form raport.frx for Between(dinData, DataStart, DataEnd) Or between(panadata, DataStart, DataEnd)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 5/23/2011 1:10:49 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
am incercat functia
&& Filtru-Lunar
dtstart = DATE(2011,05,01)
dtend = DATE(2011,05,31)

&& Filtru-lunar eliminare prs. care nu sunt in luna - bug nerezolvat(nu scoate prs. are nu se incadreaza)
SET REPORTBEHAVIOR 90
SET FILTER TO BETWEEN(dindata,dtstart,dtend) OR BETWEEN(panadata,dtstart,dtend)
m-am gandit sa filtrez in loc sa pun clauza...
rezultatul e ok .. norocul incepatorului.. sau pur noroc, dar nu mai merge filtrarea la field doctor.. m-i arata pe toti... o sa incerc cateva variante.

 5/23/2011 1:24:20 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A) Modified By Daniel Buduru  on 5/23/2011 2:22:39 PM)
De ce nu iti merge in raport, n-am cum sa stiu fara cod si date.

Ar trebui sa lasi raportul ala asa cum e, sa ii faci o copie si sa incepi sa lucrezi in raport cu un cursor obtinut cu select sql.
E mult mai simplu si iti poti verifica filtrele fara sa rulezi raportul.

Pentru filtrarea si dupa doctor:

lcDoctor="Ionescu"
dtstart=date(2011,5,1)
dtend=gomonth(dtstart,1)-1
Select * from izvoare where doctor like ?lcDoctor+"%" and ((dindata between ?dtstart and ?dtend)  OR (panadata between ?dtstart and ?dtend)) into cursor crsReport
** Browse last

In report inlocuiesti aliasul (cred ca izvoare este ) cu crsreport.
Apoi scoti clauzele print when in care intra dindata si panadata - raman doar cele care separa tipul sejurului.

PS Vezi in help, la select sql clauza like, nu mai stiu daca masca e * sau alt caracter.

Edit: masca in LIKE este %, si nu * cum am pus initial.

Daniel Buduru
 5/30/2011 10:57:44 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Cred a este ceva cu formula asta : "IIIF(Tarau.dindata-1>dtend or Tarau.panadata+1<dtstart,0,MIN(dtend,Tarau.panadata+1)-MAX(dtstart,Tarau.dindata-1))+iif(dindata-1<dtstart,0,0) " este introdusa la variabile si imi da eroare, (operator type mismath)
dar la ceailalta variabila "IIF(zileturist="A", IIF(Tarau.dindata-1>dtend or Tarau.panadata+1<dtstart,0,MIN(dtend,Tarau.panadata+1)-MAX(dtstart,Tarau.dindata-1)),0)" care desemneza tipul de turist merge perfect


 5/30/2011 11:06:38 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
 faq wrote
Cred a este ceva cu formula asta : "IIIF(Tarau.dindata-1>dtend or Tarau.panadata+1dar la ceailalta variabila "IIF(zileturist="A", IIF(Tarau.dindata-1>dtend or Tarau.panadata+1


Am uitat sa mentionez, am creat 2 local view`s cu filtru pus sa afiseze doar doctorul care am nevoie, si din local view am creat un raport (test - cu nume tarau.frx), am introdus in data enviroment, cursor1, la init codul "Report form tarau.trx FOR between(dindata, dtstart, dtend) OR between(panadata, dtstart, dtend)". dar tot aceasi problema.+ variabilele modificate, toate field-urile verificate de 2 ori. ca sa fie corete.
dar acelasirezultatnu m-i scoate pe cei are nu mai sunt in termen.

Acuma o sa incerc si ideea ta mentionata mai sus, sper sa reusesc, daca nu, cred ca e ceva de la date.
   Multumesc
 5/30/2011 11:12:53 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
idiot sunt, 

am uitat sa pun in data environment, cursour1 inainte de report from... dtstart DATE(2011,05,01) si dtend DATE(2011,05,31).
 6/1/2011 8:32:22 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Mai am si eu o intrebare,

rulez aplicatiain top level cum pot sa fac and dau print preview la raport, ma mi-l deschida separat de apliatia in sine ,ca o freastra noua fara sa mai fie atasata in interiorul top-level? si  pe unde s incep sa fac modificarea, cateva indici dacase poate.

Va multumesc,


 6/1/2011 11:00:12 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Descarca de aici reportpreviewx si vezi daca gasesti si un exemplu de utilizare, acum nu am tip sa pun nici macar o linie de cod :).

http://www.sweetpotatosoftware.com/spsblog/CommentView,guid,26acb331-c0fa-4e67-bd06-bb7569e2a3a3.aspx

Daca nu te dumiresti cum merge, revino cu intrebari.

Daniel Buduru
 6/6/2011 11:03:02 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
+1 merge super  ^.^ mia luat ceva pana m-am prins ce trebuia sa fac. dar daca nu incerci nu afli unde gresesti,

Acuma pasul urmator, am creat un set de butoane in aplicatie pentru raportari : fiecare buton are u anume raport de scos dar cu aceasi perioada in luna : local oRaport
PRIVATE oRaport
DEFINE WINDOW wRaport SYSTEM FROM 2,1 TO 13,75 TITLE 'Raport Dr.Tarau' NAME oRaport
oRaport.TitleBar=1
oRaport.WindowState=2 && maximize
oRaport.Show(1)

report form tarau.frx TO PRINTER PROMPT PREVIEW WINDOW wRaport

oRaport.Release
RELEASE oRaport 

vam atasat poza. bine inteles background-ul faut in paint si butoanele (date pe invisible hide). problema e ca as vrea sa fac un combo box(dropbox) in care sa scriu Raport doctorsi intervalul de luna ...cam 36 de intrari  si cand lam selectat pe cel dorit si sa apas un buton ca raport preview sa mil arate in luna dorita de mine.

sau o alta varianta sa aleg data si dupa sa folosesc butoanele care le am sa sa le dea preview.

Si a doua proble e backgroundul, cum pot sa il fac sa nu se mai repete...totin screen shot e vizibila problema.




screesdsd.JPG 
 6/6/2011 12:37:43 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Daca vrei o abordare mai flexibila a rapoartelor, faci o tabela in care tii denumirea raportului, numele fiserului frx si expresia filtrului de folosit (clauza FOR din comanda), dar fara nume hardcoded.
Afisezi intr-un listbox denumirea rapoartelor, alaturi pui un combo cu medicii, unul cu anul si altul cu luna. Combo cu medicii il populezi selectand medicul din tabela cu programari, la fel si anul, astfel incat sa nu iti apara pentru selectie decat optiuni care au sens - medici care nu au pacienti sau ani care nu exista in tabela.
Dupa ce se selecteaza tipul raportului si conditiile de filtru, mai ai nevoie de cate un buton de preview si print. Ca s anu scrii acelasi cod de doua ori, faci o metoda printreport in from pe care o apelezi din ambele butoane cu un parametru, lPreview. De ex, in butonul preview.click pui thidform.printreport(.t.) , iar in butonul print pui doar thisform.printreport()
In metoda printreport analizezi ce s-a selectat din lista si compui comanda report form si titlul ferestrei preview.
Apoi un if in care faci o data preview si o data print.

Ar trebui sa revezi formul ala, sa renunti la navigarea cu primul-ultimul, precedentul-urmatorul. Peste un an, nu prea vad cum mai folosesti asta.
Pune un listbox cu persoana, medicul si perioada, preluand datale din tabela respectiva. Cand te deplasezi in lista, pui un thisform.refresh in listbox.interactivechange si textbox-urile vor afisa datele persoanei respective.
Poti filtra lista dupa medic, luna, an limitand astfel numarul de inregistrari afisate.

In combo ala cu tipul turistului, puen pe prima coloana din combo denumirea in clar si pe a doua coloana codul, apoi setezi combo.boundcolum=2. Acelasi lucru e valabil si la lista despre care spuneam mai inainte.

Cu background-ul, m-ai lasat fara cuvinte :)
Ai in vfp line, shape si label cu care sa desenezi tot ce ai pus tu acolo in poza.
Daca vrei in background un gradient - sau orice imagine care sa nu se repete - pui poza intr-un control image, pe care il ancorezi de form sus/jos/stanga/dreapta, si care se va deforma odata cu formul. Ii setezi proprietatea stretch fie la izometric, fie la stretch. Controlul imagine il pui in spatele celorlalte controale din form. Vezi ca exista toolbarul layout cu care poti alinia si aseza in fata sau in spate obiectele. In menu, View/Toolbars.




Daniel Buduru
 6/7/2011 9:32:48 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Multam, deja sunt in lucrari cu el,

am observato problema cam ciudata cu Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata)) evariabila care imi face calculul de zile la turist, dar acum am observat ca imi calculeaza zilele  cam asa :  
30.04.2011 - 16.05.2011 = 15 zile (normal trebuie sa fie 16zile)
18.05.2011 - 27.05.2011 = 9 zile (normal trebuie 10zile)
31.05.2011 - 10.06.2011 = 0 zile (normal trebuie 1zi)

daca adaug +1 la panadata :
Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata+1)-MAX(dtstart,dindata))imi da asa
30.04.2011 - 16.05.2011 = 16 zile (corect)
18.05.2011 - 27.05.2011 = 10 zile (corect)
31.05.2011 - 10.06.2011 = 0 zile (normal trebuie 1zi)

daca mai adaug -1 la dindata Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata+1)-MAX(dtstart,dindata-1))imi da asa
30.04.2011 - 16.05.2011 = 16 zile (corect)
18.05.2011 - 27.05.2011 = 11 zile (normal trebuie 10zile)
31.05.2011 - 10.06.2011 = 1 zile (corect)

Nu prea inteleg...am verificat formula de100 de mi de ori  am mai adaugat la formula originala
IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))+iif(dindata<dtstart,0,0) tot nimica dupa care am mai adaugat +iif(panadata<dtend,0,0) tot acelasirezultat,
Chiar nu inteleg pe unde e buba. Va multumesc.

 6/7/2011 10:14:03 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Am mai discutat asta la inceput. E o problema de limite. Mai precis, daca prima sau ultima zi sunt incluse sau nu in interval.
La hotel, o zi se socoteste de la ora 12 pana la ora 12 a zilei urmatoare. O sedere la hotel de pe 2011.06.01 pana pe 2011.06.02 dureaza o zi.
Daca la tine o cura  care incepe la 2011.06.01 si se termina la 2011.06.10 are 10 zile, si nu 9 zile cat e diferenta intre date, inseamna ca socotesti fie ziua de venire, fie ziua de plecare ca zi intreaga.
In acest caz, nu modifica limitele, ci adauga o zi la numarul de zile calculat

Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))+1


Daniel Buduru
 6/9/2011 11:01:34 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Ormula e ok
Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))+1

acum am mai creat un feild in raport in care folosesc
Nrzile = IIF(dindata>dtend or panadata<dtstart, 0,MIN(dtend, panadata)-MAX(dtstart,dindata))+1-14 care sa imi scada zilele compensate de casade asiguari de sanatate- rezultaul e bun si ramane un rezultat dif, exemplu din 18 zile -14 = 4 zile (care le suporta hotelul)la cei din luna mi calculeaza perfec cei din luna urmatoare mi calculeaza cu minus iar cei din luna anterioara cu -1zi..

Multam

 6/9/2011 11:13:30 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A) Modified By Daniel Buduru  on 6/9/2011 12:05:32 PM)
Nu structurezi bine baza de date.
Compensarea de 14 zile se aplica la intreg sejurul, nu la perioada din sejur cuprinsa intr-o luna.
Considera un sejur compensat de 14 zile, si un sejur necompensat ca diferenta.
Sejurul compensat este intre date dindata, dindata+14_1,
Sejurul necompensat este dat de panadata-(dindata+compensat-1)+1, sau, simplificat, panadata-(dindata-compensat). panadata-(dindata+compensat).
Ai astfel doua sejururi pentru fiecare persoana, pe care le gestionezi distinct.

Daniel Buduru
 6/9/2011 11:33:45 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A)
Pune un camp pentru nr zile compensate, nu lucra direct cu 14 in calcule. Maine se schimba legea si refaci programul ...

Daniel Buduru
 6/9/2011 11:58:05 AM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
mersi mult  ^.^
 6/9/2011 12:17:03 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: sunt blocat
 (N/A) Modified By Daniel Buduru  on 6/9/2011 12:19:00 PM)
Satul meu este sa obtii un document scris, cum anume se calculeaza durata sejurului. Poti sa faci tu hartia, si sa obtii pe ea semnatura si parafa directiunii.
O zi are 24 de ore. Daca sejurrul incepe pe 01.06.2011 la ora 12 si se termina pe 10.06.2011 la ora 12, iar tu socotesti 11 zile de sejur, e ilegal.
Daca ai sejururi care incep in aceeasi zi in care se termina altele, pe acelsi spatiu de cazare, te gasesti in aceasta situatie.

Daniel Buduru
 6/9/2011 1:47:33 PM
User is offlinefaq
36 posts


Re: sunt blocat
 (N/A)
Era .. un fell de raportare interna.. sa avem noio idee de celtuielile care vor urma..
  Visual FoxPro  Cod, sintaxa si comenzi  sunt blocat...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement