mojaSymfonia FORUM
https://forum.mix-soft.pl/

pobieranie danych z KD
https://forum.mix-soft.pl/viewtopic.php?f=15&t=5737
Strona 1 z 1

Autor:  stopi [ 2014-04-17, 12:57 ]
Tytuł:  pobieranie danych z KD

Witam
Jeśli powtarzam temat to bardzo przepraszam ale skoro piszę to znaczy że nie znalazłem tematu który by mi pomógł w 100 %

potrzebuję pomocy odnośnie pobrania danych kadrowych

mam taki coś:

zestaw danych kadrowych składa się z kilku elementów
niektóre z nich są (element kadrowy zgrupowany) oraz (element kadrowy)
problem polega na tym że nie wiem jak odczytać wartość z (elementu kadrowego)
dodatkowo

przy wykorzystaniu
Kod:
   For p=1 to p>nCount
      mgr.GetComponent(comp,#p)
      aNazwyElem_STAM(p)=comp.GetName()

      message( "pozycja  -" +(using "%L",p )+   "    wierszy -   "+ (using "%L", comp.GetValuesCount())+   "    kolumny -   "+ (using "%L", comp.GetAttrCount()))

   next p


pozycje się zmieniają tyle ile jest elementów (OK)
wiersze za każdym razem wyświetla mi 0
natomiast kolumny czasem wyświetla wartość ile jest kolumn a czasem wyświetla 0 ( ale tego nie trzeba tłumaczyć dlaczego tak jest to oczywiste)



pytanie jest dlaczego dla każdego elementu wyświetla mi ilość wierszy 0
i w jaki sposób mogę pobrać te dane

Z góry wielkie dzięki za pomoc

Autor:  rafal [ 2014-04-17, 14:05 ]
Tytuł:  Re: pobieranie danych z KD

Użyj GetValue()

Autor:  stopi [ 2014-04-17, 14:13 ]
Tytuł:  Re: pobieranie danych z KD

Używam GetValue

według dokumentacji jest takie coś


Int GetValue( HRValue Value, int valindex, [int attrindex])
w przypadku zwykłych elementów kadrowych nie trzeba używać tego co jest w nawiasie [ ]) ok to do tablicy to zrozumiałe

tak więc zapisał bym to getvalue(value, nrwiersza )
ale na każdym wierszu mi wyświetla 0 więc nie wiem co bym miał podstawić za zmienną "int valindex"

Autor:  rafal [ 2014-04-17, 14:18 ]
Tytuł:  Re: pobieranie danych z KD

W przykładzie nie widzę, żeby było użyte GetValue().

Podaj cały kod, który można uruchomić i sprawdzić.

Autor:  stopi [ 2014-04-17, 14:37 ]
Tytuł:  Re: pobieranie danych z KD

podaję fragment kodu jeśli chcesz to zamieszczę cały ale muszę go pozmieniać do wersji czytelnej dla każdego nie tylko dla mnie( bałagan)


Kod:
while idprac
   
   DodajImieNazwisko(idprac)
   
   if !Pracownik(prac,idprac) then message sErrBlednyPrac : error " "

   mgr.LoadHRComponentsSet(zestaw)
   mgr.SetEmpId(idprac)

   nCount=mgr.GetCount()
      
   For p=1 to p>nCount
      mgr.GetComponent(comp,#p)
      aNazwyElem(p)= comp.GetName()

   next p

   i=i+1

   Tabela_ind(i)=using "%L",idprac
   

   tabela_oso(i)=(prac.Nazwisko)


   mgr.LoadHRComponentsSet(27889)

   mgr.SetEmpId(idprac)

   nCount = mgr.GetCount()


   For p=1 to p>nCount
      mgr.GetComponent(comp,#p)
      aNazwyElem_STAM(p)=comp.GetName()


      message (comp.GetValue(Value,comp.GetValuesCount()))  // Tutaj za każdym razem wywala mi komunikat argument po za zakresem


      message( "pozycja  -" +(using "%L",p )+   "    wierszy -   "+ (using "%L", comp.GetValuesCount())+   "    kolumny -   "+ (using "%L", comp.GetAttrCount()))

   next p
   

idprac = GetNext()
WEND

Autor:  rafal [ 2014-04-17, 14:55 ]
Tytuł:  Re: pobieranie danych z KD

Kolejność użycia

Kod:
1. GetComponent()
2. comp.GetValuesCount()
3. comp.GetValue()

poczytaj jeszcze w dokumentacji o GetValue i co powinieneś dawać jako jej parametry.

Możesz także skontaktować się z Ekspertem.

Autor:  stopi [ 2014-04-18, 12:31 ]
Tytuł:  Re: pobieranie danych z KD

Dzięki za zainteresowanie ale sprawdzałem w dokumentacji i w raporcie dane kadrowe i nie rozumiem tego

while idprac
DodajImieNazwisko(idprac)

if !Pracownik(prac,idprac) then message sErrBlednyPrac : error " "

mgr.LoadHRComponentsSet(zestaw) // zestaw =102
mgr.SetEmpId(idprac)

nCount=mgr.GetCount()

For p=1 to p>nCount
mgr.GetComponent(comp,#p)
aNazwyElem(p)= comp.GetName()

next p

i=i+1

Tabela_ind(i)=using "%L",idprac
tabela_oso(i)=(prac.Nazwisko)
mgr.LoadHRComponentsSet(27889)

mgr.SetEmpId(idprac)

nCount = mgr.GetCount()

For p=1 to p>nCount
mgr.GetComponent(comp,#p)
aNazwyElem_STAM(p)=comp.GetName()
message(using "%L",comp.GetValuesCount ())
message(using "%L",comp.GetAttrCount ())
next p

idprac = GetNext()
WEND


//--------------

użyłem tak jak napisałeś

1. GetComponent
2. comp.GetValuesCount () sprawdzając ile jest wierszy oraz comp.GetAttrCount () spawdzając ile jest kolumn
i w przypadku wierszy zawsze mam 0 a w przypadku kolumn to mi wartości wyświetla jeśli występują kolumny


sprawdzałem także z raportem dane kadrowe ale w tam jest
For j=1 to J>comp.GetValuesCount ()

i niestety ja mam stale wartość 0 wiec mi tej pętli nie wykona

Pytanie Gdzie robię błąd?

Autor:  rafal [ 2014-04-18, 12:56 ]
Tytuł:  Re: pobieranie danych z KD

Nie moge Ci pomoc bo kod ktory wkleiles nie dziala po przeklejeniu. Brak deklaracji zmiennych. Napewno jest to caly kod?

Autor:  stopi [ 2014-04-18, 13:22 ]
Tytuł:  Re: pobieranie danych z KD

nie to był jedynie fragment chodzi mi o te ilości wierszy

Kod:
#include "pdfparam.sci"
#include "hf_graf.sci"
#include "strings.sci"
#define OK 2
#define ANULUJ -1


HRMgr mgr
HRComponent comp
HRValue value

Infoprac prac
InfoSkladnik skl
InfoSchemat sch_ksi




long idgrupy = val (Arg0)
long typ = val (Arg1)




//----------------id zestawy
long zestaw = 102


if !idgrupy &&!!typ then message sErrTylkoZOknaPrac : error " "

if !SetGroup (idgrupy,typ,TR_PRACOWNICY) then message sErrBlednaGrupa : error " "


long idprac = GetFirst()

string datapoc = ""
string data1= ""
string dana



int p,i,ilosc,n,ilosc2,j, ilosci ,ilosci2


if !idprac then message sErrBrakPrac : error " "
mgr.LoadHRComponentsSet(zestaw)

int nCount = mgr.GetCount()


string aNazwyElement(nCount)
string aNazwyElem(nCount)


for p=1 to p>nCount
   mgr.GetComponent(comp,#p)
   aNazwyElement(p)=comp.GetName()

next p



while idprac

   DodajImieNazwisko(idprac)
   
   if !Pracownik(prac,idprac) then message sErrBlednyPrac : error " "

   mgr.LoadHRComponentsSet(zestaw)
   mgr.SetEmpId(idprac)

   nCount=mgr.GetCount()
      
   For p=1 to p>nCount
      mgr.GetComponent(comp,#p)
      aNazwyElem(p)= comp.GetName()

   next p

   i=i+1

   Tabela_ind(i)=using "%L",idprac


   tabela_oso(i)=(prac.Nazwisko)



   mgr.LoadHRComponentsSet(27889)//interesujący mnie id zestawu

   mgr.SetEmpId(idprac)

   nCount = mgr.GetCount()



//message (using "%L", nCount)


   For p=1 to p>nCount
      mgr.GetComponent(comp,#p)
      aNazwyElem_STAM(p)=comp.GetName()
         message(using "%L",comp.GetValuesCount ())
         message(using "%L",comp.GetAttrCount ())

   next p


idprac = GetNext()
WEND

for p=1 to p>i
print "id -  "
print Tabela_ind(p) + "  |  "
print tabela_oso(p)
print "\n"


next p

Autor:  rafal [ 2014-04-18, 15:09 ]
Tytuł:  Re: pobieranie danych z KD

Mogę zaproponować jedynie kontakt z Ekspertem.
Analiza problemu jest zbyt czasochłonna jak na forum.

Autor:  stopi [ 2014-04-22, 10:58 ]
Tytuł:  Re: pobieranie danych z KD

Zrobione

problem był w odczytywaniu danych ponieważ nie miałem mgr.LoadValues( datapoc, datakoniec) (chyba że się mylę ekspertem nie jestem w pisaniu raportów zwłaszcza w KD)
następnie tam gdzie jest element typu tablica używam comp.GetValue( value, nr_wiersz, nr_kolumny )
a w przypadku zwykłych elementów uzywam comp.GetValue( value, nr_wiersz)

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/