Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-04-20, 12:57x



Odpowiedz w temacie  [ Posty: 17 ]  Przejdź na stronę 1, 2  Następna
HM wyciągnięcie z bazy nagłowek ransakcji i jej pozycji 
Autor Wiadomość

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post HM wyciągnięcie z bazy nagłowek ransakcji i jej pozycji
Witam!

Mam taki problem, dopiero zapoznaję się z językiem raportów.

Opiszę co chcę zrobić:

Mam w Handlu zaznaczony dokument MM (dowolnie - czy +), chcę napisać raport, który wyśle do jednego pliku txt podstawowe dane nagłówka, a do drugiego pliku txt w poszczególnych wierszach pozycje tej MM-ki.

Udało mi się ustalić potrzebne dane do pliku nagłówka, które chcę wyeksportować z pliku mg.
To samo z dla pozycji z pliku mz (nie mogę tylko znaleźć gdzie jest rodzaj do którego jest przypisany towar).

Raport pobiera mi dane nagłówka dowolnej zaznaczonej MM-ki, ale nie chce pobrać jej elementów pozycji, próbowałem na różne sposoby i nie wiem gdzie tkwi błąd!?

Oto urywek raportu:
Kod:
//Otwarcie bazy i czytanie danych.
String sciezka1=KatalogFirmy() + "51mg.dat"
Int baza_mg=Open sciezka1 For Base "mg"
baseError (baza_mg, 4)

//Otwarcie bazy i czytanie danych.
String sciezka2=KatalogFirmy() + "51mz.dat"
Int baza_mz=Open sciezka2 For Base "mz"
baseError (baza_mz, 4)

long czy_zaz_dok = settaggedpos(fs)

//Ustawienie rekordu bazy do odczytu
SetKey (baza_mg, "ID")
SetKeySeg (baza_mg, "ID", getlineid())

SetKey ( baza_mz,"super" )
SetKeySeg( baza_mz,"super",getlineid() )
SetKeySeg( baza_mz,"lp",0)


//Odczytanie rekordu bazy
GetRec (baza_mg, EQ)
baseError (baza_mg, 4)

//Sprawdzenie zapisanych w rekordzie informacji
pid=getfield(baza_mg,"id")

//Odczytanie rekordu bazy
GetRec (baza_mz, EQ)
baseError (baza_mz, 4)

//Sprawdzenie zapisanych w rekordzie informacji

p4a=getfield (baza_mg, "kod")

ep2=getfield (baza_mz, "lp")
ep3=getfield (baza_mz, "kod")
ep5=getfield (baza_mz, "opis")
ep8=getfield (baza_mz, "ilosc")
ep9=getfield (baza_mz, "jm")
ep10=getfield (baza_mz, "iloscjedn")
ep12=getfield (baza_mz, "cena")

Print # Numer_pliku1; pid;p4a;"a"
Print # Numer_pliku2; nr_id;",";ep2;",";ep3;",";"rodzaj towaru";",";ep5;",";
Print # Numer_pliku2; "\"\",\"\",";ep8;",";ep9;",";ep10;",";
Print # Numer_pliku2; "0.00,";ep12

Proszę o pomoc jak to rozwiącać!!! :cry:


Ostatnio zmieniony 2009-06-30, 12:52 przez lechu, łącznie zmieniany 1 raz



2009-06-30, 12:42
Wyświetl profil
Autor Wiadomość
 


Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
Kod:
// Odczytanie pozycji dokumentu magazynowego

SetKey ( baza_mz,"super" )
SetKeySeg( baza_mz,"super",getlineid() )
SetKeySeg( baza_mz,"lp",0)

int errMG = GetRec( baza_mz, GE )

while errMG != 0
   if GetField( baza_mz, "super") != getlineid() then exit
   
   // tu odczytujemy poszczególne pozycje i np:. zapisujemy do pliku poleceniem print

errMG = GetRec( baza_mz, NX )
wend

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-06-30, 13:03
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
Raport omija pętlę

Kod:
while errMG != 0


nie pobiera pozycji, wnioskuję, że nie spełnione jest to wyrażenie


Ostatnio zmieniony 2009-07-01, 07:31 przez lechu, łącznie zmieniany 1 raz



2009-06-30, 14:02
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
w takim razie pomyliłem się
Kod:
while errMG == 0

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-06-30, 14:53
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
SUPER DZIAŁA !!!
DZIĘKI!!!

Mam jeszcze pytanie jak zrobić:
dla pozycji z pliku mz (nie mogę tylko znaleźć gdzie jest rodzaj do którego jest przypisany towar).

chcę podać rodzaj towaru, do którego jest on przypisany, a w bazie mz nie mogę tego znaleźć, czy jest on w innym pliku ... towary??


2009-06-30, 15:30
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
pobieranie id_rodzaju
Kod:
basetw tw
tw.GetRecById(id_towaru)
id_rodzaju = tw.GetField("rodzaj")


pobieranie nazwa_rodzaju
Kod:
basext xt
xt.GetRecById(id_rodzaju)
nazwa_rodzaju = xt.GetField("kod")

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-06-30, 15:55
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
Po wpisaniu tego do raportu, zamyka Handel z błędem.
Jak modyfikuję to mam zapytanie co to jest

GetRecById ???

nie mogę znaleźć tego polecenia w języku raportów systemu Symfonia


2009-07-01, 09:25
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
lechu pisze:
Po wpisaniu tego do raportu, zamyka Handel z błędem.
Jak modyfikuję to mam zapytanie co to jest

GetRecById ???

nie mogę znaleźć tego polecenia w języku raportów systemu Symfonia


a czy przypadkiem nie wklejasz tego do pętli "while"?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-07-01, 11:11
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
Wklejam do pętli, bo pętlą pobieram poszczególne pozycje transakcji. Do poszczególnej pozycji transakcji (bo tam jest podany towar), chcę dodać rodaj tego towaru. Spróbowałem jako podprogram, ale wtedy wywala błąd.

Kod:
p4a=GetField (baza_mg, "kod")

String pocz1 = p4a
Buf = pocz1   <----------
Delete "/09/MM-"
p4 = Buf
return


Jak zaczyna już działać, to wywala komunikat:
niemożliwa konwersja z record na string
(wskazując wiersz, tam gdzie zaznaczyłem strzałkę)

i wywala mi te komunikat na wszystkich podprogramach, a jest ich kilka


Ostatnio zmieniony 2009-07-02, 11:59 przez lechu, łącznie zmieniany 1 raz



2009-07-02, 09:29
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
No właśnie. Przyjżyj się dokładnie. Jest tam deklaracja zmiennej xt i tw.
Nie można robić deklaracji w pętlach :)

Najlepiej deklaracje przenieść na początek raportu
Kod:
basetw tw
basext xt
....


a w pętli

Kod:
tw.GetRecById(id_towaru)
id_rodzaju = tw.GetField("rodzaj")
...
xt.GetRecById(id_rodzaju)
nazwa_rodzaju = xt.GetField("kod")


Cytuj:
String pocz1 = p4a
Buf = pocz1 <----------
Delete "/09/MM-"
p4 = Buf
return


a z tym to zupełnie nie wiem o co Ci chodzi

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-07-02, 11:57
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
zdefiniowałem bazy przed pętlą

Kod:
String sciezka3=KatalogFirmy() + "51tw.dat"
Int baza_tw=Open sciezka3 For Base "tw"
baseError (baza_tw, 4)


mam komunikat nie znana zmienna GetRecById

Starałem się te podpowiedzi jakoś przerobić:

Pobieram z bazy mz pole idtw
potem muszę ustawić bazę

Kod:
SetKey ( baza_tw,"id" )
SetKeySeg( baza_tw,"id",getlineid() )
SetKeySeg( baza_tw, "rodzaj" ,0)

id_rodzaju = getfield(baza_tw, "rodzaj")


potem ustawiam bazę xt

Kod:
SetKey ( baza_xt,"id" )
SetKeySeg( baza_xt,"id",getlineid() )
SetKeySeg( baza_mz,"kod",0 )

ep4 = GetField(baza_xt, "kod")


ten kod powinien być moją nazwą rodzaju towaru.

Ale dostaję komunikat podczas wykonywania raportu

Klucz 'id' w bazie 'TW' nie ma pola 'rodzaj'

Coś musiałem źle napisać w tym raporcie

Mam jeszcze jedno pytanie.
Pobieram zaznaczony dokument i potem jego pozycje towarowe -> to działa
Teraz chcę pobierać naraz kilka dokumentów z ich pozycjami.

Robię to tak:

dane pobieranego nagłówka

Kod:
p4a=GetField(baza_mg, "kod")
p5=GetField(baza_mg, "seria")
p6a=GetField(baza_mg, "datasp")
p7a=getfield(baza_mg, "khkod")
p1618=GetField(baza_mg, "netto")
p22=GetField(baza_mg, "osoba")


i wpisuję do pliku

ALE raport wpisuje mi poprawne pozycje wszystkich zaznaczonych dokumentów, ale nagłówki dokumentu od kodu do khkod pozostawia z poprzedniego dokumentu, a od netto i osoba już podaje prawidłowo nagłówek następnego dokumentu.

Odczytuję nagłówki dokumentów:

Kod:
long czy_zaz_dok = settaggedpos(fs)
while czy_zaz_dok
... tu ustawiam bazy, pobieram dane, gosuby, ...
czy_zaz_dok = settaggedpos(nx)
wend


Cały przyszły tydzień nie będę miał chyba dostępu do internetu, to ewentualnie odezwię się jak będę już go miał.
Dziękuję za obecną pomoc.


Ostatnio zmieniony 2009-07-03, 22:44 przez lechu, łącznie zmieniany 1 raz



2009-07-03, 14:46
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 3983
Pomógł: 445
Post 
lechu pisze:
zdefiniowałem bazy przed pętlą

Kod:
String sciezka3=KatalogFirmy() + "51tw.dat"
Int baza_tw=Open sciezka3 For Base "tw"
baseError (baza_tw, 4)


mam komunikat nie znana zmienna GetRecById


zadziała dopiero jak będziesz otwierał bazy za pomocą
Kod:
baseTw tw


a nie
Kod:
String sciezka3=KatalogFirmy() + "51tw.dat"
Int baza_tw=Open sciezka3 For Base "tw"

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-07-03, 22:53
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
Zrobiłem tę zamianę z mojej definicji bazy na basetw tw.
Raport wtedy idzie, ale podaje jakieś rodzaje dla transakcji wz WZ, dla pz WZ, dla mm MM-, to wszystko jako rodaj każdego towaru na poszczególnych pozycjach transakcji, a nie rodzaje towaru.

Mam pytanie: otwieram konkretną bazę danych zgodnie z pomocą do języka raportów

//Określenie położenia pliku bazy
String sciezka=KatalogFirmy() + "TW.DAT"
//Otworzenie bazy danych
Int nrBazy=Open sciezka For Base "TW"
BaseError (sciezka, 4)

i to mi działa.

Dlaczego podałeś, że mam dokonać tej zamiany na basetw tw

//Uworzenia struktury definicji bazy danych
BaseDef bDef

chyba to dobrze rozumię? Czy nie wystarczy tylko otworzyć bazę, żeby pobrać z niej dane?

Jak dokonałem tej zamiany to polecenie

tw.GetRecById(id_towaru)

zadziałało, co to za polecenie, bo nie ma go w tej pomocy do języka raportów.
Znalazłem, że to polecenie VB, czy w raportach można używać również polecenia z VB? Jak tak, to czy wszystkich, czy tylko poszczególne.

Jak pobrać kolejną zaznaczoną transakcję z pozycjami, bo to co ja próbuję użyć daje część danych z pierwszej transakcji (nagłówek), a część z drugiej transakcji (te mają być).
Tak to robię:

long czy_zaz_dok = settaggedpos(fs)
while czy_zaz_dok
... tu ustawiam bazy, pobieram dane, gosuby, ...
czy_zaz_dok = settaggedpos(nx)
wend


2009-07-14, 12:32
Wyświetl profil

Rejestracja: 2009-06-22, 14:08
Posty: 11
Post 
Rozwiązałem już ten problem.
Dziękuję za pomoc! ;-)


2009-08-26, 09:40
Wyświetl profil

Rejestracja: 2007-11-15, 15:22
Posty: 55
Post 
TEŻ MAM TAKI PROBLEM. NAPISZ JAK TO ROZWIĄZAŁEŚ.


2009-08-27, 20:57
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 17 ]  Przejdź na stronę 1, 2  Następna
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Dane o urlopie - wyciągnięcie z bazy

w Programy Kadrowo Płacowe

Radek7C4

5

3873

2014-04-18, 07:41

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki Wyciągnięcie dnia i miesiąca z daty dokumentu

w Programy Handlowe

zz

11

4631

2010-04-29, 15:46

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Załączniki nagłówek raportu

w Programowanie

mlodszy2

5

3540

2016-02-03, 21:27

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Nagłówek raportu

w Programowanie

artur17

4

3379

2009-06-30, 12:24

rafal Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 8 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant