mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
HM wyciągnięcie z bazy nagłowek ransakcji i jej pozycji https://forum.mix-soft.pl/viewtopic.php?f=15&t=963 |
Strona 1 z 2 |
Autor: | lechu [ 2009-06-30, 12:42 ] |
Tytuł: | 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ć!!! |
Autor: | rafal [ 2009-06-30, 13:03 ] |
Tytuł: | |
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 |
Autor: | lechu [ 2009-06-30, 14:02 ] |
Tytuł: | |
Raport omija pętlę Kod: while errMG != 0 nie pobiera pozycji, wnioskuję, że nie spełnione jest to wyrażenie |
Autor: | rafal [ 2009-06-30, 14:53 ] |
Tytuł: | |
w takim razie pomyliłem się Kod: while errMG == 0 |
Autor: | lechu [ 2009-06-30, 15:30 ] |
Tytuł: | |
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?? |
Autor: | rafal [ 2009-06-30, 15:55 ] |
Tytuł: | |
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") |
Autor: | lechu [ 2009-07-01, 09:25 ] |
Tytuł: | |
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 |
Autor: | rafal [ 2009-07-01, 11:11 ] |
Tytuł: | |
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"? |
Autor: | lechu [ 2009-07-02, 09:29 ] |
Tytuł: | |
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 |
Autor: | rafal [ 2009-07-02, 11:57 ] |
Tytuł: | |
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 |
Autor: | lechu [ 2009-07-03, 14:46 ] |
Tytuł: | |
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. |
Autor: | rafal [ 2009-07-03, 22:53 ] |
Tytuł: | |
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" |
Autor: | lechu [ 2009-07-14, 12:32 ] |
Tytuł: | |
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 |
Autor: | lechu [ 2009-08-26, 09:40 ] |
Tytuł: | |
Rozwiązałem już ten problem. Dziękuję za pomoc! |
Autor: | tomas [ 2009-08-27, 20:57 ] |
Tytuł: | |
TEŻ MAM TAKI PROBLEM. NAPISZ JAK TO ROZWIĄZAŁEŚ. |
Strona 1 z 2 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |