mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
[FiK premium 2008] ambasic - porównywanie dat https://forum.mix-soft.pl/viewtopic.php?f=15&t=66 |
Strona 1 z 2 |
Autor: | user [ 2008-03-17, 12:42 ] |
Tytuł: | [FiK premium 2008] ambasic - porównywanie dat |
jest jakis sposob zeby pobrac rekordy z danej bazy z zakresu dat? pod forte mozna to zrobic zapytaniem sql a tu? getrec() tez albo mniejszy rowny albo wiekszy rowny.. nie ma dostepnego typu datowego, tylko pod stringa mozna podstawic a tu trochę zabawy zeby porównac daty... |
Autor: | rafal [ 2008-03-17, 13:19 ] |
Tytuł: | |
Mają tu znaczenie pola które są indeksowane i klucze. Chętnie odpowiem na przykładzie konkretnego przykładu. Napisz z jakiej tabeli jakie dane chcesz pobrać. |
Autor: | user [ 2008-03-17, 13:24 ] |
Tytuł: | |
transakcje z okreslonego zakresu dat, czyli z "transakcje" wg "data" pobrac np. "dokid" ale kryterium jest tez konto i narazie wg tego filtru tylko pobieram dane, trzeba jednak rekordy ograniczyc tylko do wybranego zakresu dat zakres wczytywany z formatki datedit-ami widzę ze poszczegolne lata sa w osobnych katalogach.. czyli jesli data bedzie miala zakres 2006-2008 to trzeba osobno otwierac bazy z poszczegolnych katalogow.. chyba ze o czyms nie wiem.. |
Autor: | rafal [ 2008-03-17, 23:00 ] |
Tytuł: | |
Istnieją przynajmniej trzy sposoby na dostanie się do bazy transakcji z poziomu AMBasic'a.
2. Za pomocą ODBC - jak się okazuje Pervasive nie jest niezbędny. 3. Za pomocą GetRec itd... 3. Najważniejsze jest aby dobrać taki klucz z istniejących, który najlepiej sprawdzi się w szukaniu wg. naszych zał. W tym przypadku użyjmy klucza "dataOkr". W kluczu tym mamy dwa pola - rozliczona // status transakcji 0-nierozliczona, 1-rozliczona - dataOkr // data okresu sprawozdawczego dokumentu Kod: int bTra = open KatalogFirmy() + "07trans.dat" for base "transakcje" BaseError( bTra, 4) string SzukajOd = "2005-01-01" string SzukajDo = "2005-06-31" int err SetKey(bTra,"dataOkr") SetKeySeg(bTra,"rozliczona",0) SetKeySeg(bTra,"dataOkr",SzukajOd) err = GetRec(bTra, GE) while !err && GetField(bTra,"dataOkr") >= SzukajDo // tu coś robimy ze znalezionymi transakcjami err = GetRec(bTra, NX) wend Cytuj: widzę ze poszczegolne lata sa w osobnych katalogach.. czyli jesli data bedzie miala zakres 2006-2008 to trzeba osobno otwierac bazy z poszczegolnych katalogow.. chyba ze o czyms nie wiem.. Poszczególne lata są w osobnych katalogach. Jednak tabela Transakcje jest w katalogu wpólnym dla wszystkich lat. I wystarczy otwarcie tak jak w przykładzie. |
Autor: | user [ 2008-03-19, 11:50 ] |
Tytuł: | |
zdaje się, że zeby się polączyc przez odbc potrzebny jest sterownik a ten instaluje się własnie z pervasivem. o obiekcie rozrachunki jakos nie widze informacji w dokumentacji programu.. właciwie moje błedne zalozenie ze porownywanie dat jako 2 stringow nie bedzie prawidłowe - dzięki za info :) a co do samych danych - nie wystarczą tylko "transakcje" bo potrzebne byly dane z dokumentow i z ksiąg i z bufora ale procedurka sparametryzowana załatwia temat. |
Autor: | rafal [ 2008-03-19, 15:58 ] |
Tytuł: | |
user pisze: zdaje się, że zeby się polączyc przez odbc potrzebny jest sterownik a ten instaluje się własnie z pervasivem. Jeżeli nie mamy pervasiva możemy dostać się do bazy przez ODBC. Wymaga to jednak instalacji sterownika ODBC. Jest to bezpłatne narzędzie Kod: ODBC Interface 2.04 for Windows 95 and Windows NT ODBC Interface 2.04 for Windows Release 1 February 1998 README.TXT (C) Copyright 1997, Pervasive Software Inc. All Rights Reserved do pobrania ze strony : http://www.goldstarsoftware.com/FTP/od32v204.zip UWAGA! Nie można używać tego narzędzia razem z Pervasivem. user pisze: o obiekcie rozrachunki jakos nie widze informacji w dokumentacji programu. Opis dostęny jest w dokumentacji obiektu integracji. Dokumentacja ta nie jest dostarczana z programem. do pobrania : http://forum.mojasymfonia.pl/dload.php?action=category&id=4 |
Autor: | user [ 2008-03-19, 18:41 ] |
Tytuł: | |
dzieki raz jeszcze |
Autor: | darek.007 [ 2008-04-02, 21:11 ] |
Tytuł: | |
user pisze: transakcje z okreslonego zakresu dat, czyli z "transakcje" wg "data" pobrac np. "dokid" ... BOGU dziękować transakcje są w jednej tabeli, rozliczenia również. To dokumenty i zapisy są w tabelach rocznych, a do tego jeszcze bufor i ksiegi... |
Autor: | user [ 2008-04-08, 16:02 ] |
Tytuł: | |
z tymi bazami z poszczegolnych lat mam problem z dostępem do danych: getrec zwraca bląd nr 9 (z dokument.: "Komunikat nr 9 Koniec pliku") wystarczy ze podstawię pod ten sam kod sciezke do jakiejs bazy z katalogfirmy a nie z podkatalogu roku np. kontrahenci i wszystko pięknie czyta :D zmieniałam klucze, parametr (ge, eq, fs) - doszłam ze nie w tym rzecz. teraz juz probuję na kluczu "id" i z parametrem fs zeby bylo uniwersalnie. czy ktos moze wie o co chodzi z tym błędem? aha, dziwi mnie ze na bazie demo działa ale na bazie firmowej wywala. |
Autor: | darek.007 [ 2008-04-08, 16:05 ] |
Tytuł: | |
może kawałek kodu - będzie łatwiej odpowiedzieć |
Autor: | user [ 2008-04-08, 18:51 ] |
Tytuł: | |
na demo działają obydwa. na bazie firmowej: ten nie działa (rok bez znaczenia) Kod: string dir2=katalogfirmy() +"2006\\" string dostep= dir2 + "07dokum.dat" int tr = Open dostep For Base "dokumenty" baseerror(tr,4) SetKey(tr,"id" ) SetKeySeg(tr,"id",0) int errtr=Getrec(tr,FS) if errtr!=0 then error using "Nr błędu: %d", errtr while !errtr print using "\n%s",getfield(tr,"skrot") errtr=getrec(tr,NX) wend ten działa Kod: string dir2=katalogfirmy() string dostep= dir2 + "08kontr.dat" int tr = Open dostep For Base "kontrahenci" baseerror(tr,4) SetKey(tr,"id" ) SetKeySeg(tr,"id",0) int errtr=Getrec(tr,FS) if errtr!=0 then error using "Nr błędu: %d", errtr while !errtr print using "\n%s",getfield(tr,"nazwa") errtr=getrec(tr,NX) wend |
Autor: | darek.007 [ 2008-04-08, 22:34 ] |
Tytuł: | |
Może dlatego, że w DEMO są zaksięgowane dokumenty a w Twojej firmie jeszcze nie Kod: int tr = Open katalogroku()+"07dok_b.dat" for base "buf_dokum" baseerror(tr,4) int errtr=Getrec(tr,FS) if errtr!=0 then error using "Nr błędu: %d", errtr while !errtr print using "\n%s",getfield(tr,"skrot") errtr=getrec(tr,NX) wend Ot poprostu otwierasz bazę dokumentów zaksiegowanych a nie tych w buforze. Spróbuj z tym powyżej... |
Autor: | user [ 2008-04-09, 00:35 ] |
Tytuł: | |
nie. ja wyraznie napisałam że problem dotyczy baz podzielonych na lata. przeciez nie bede podawala przykladow na wszystkie mozliwosci :D mial byc przyklad to byl - akurat ostatniej bazy jaką testowalam. generalnie w raporcie glownym wykrzacza się akurat na bazie 06zap_b.dat - zapisy w buforze. teraz testuję sobie tylko na tym małym fragmencie kodu bo tu lezy problem. tylko nie wiem w czym. |
Autor: | darek.007 [ 2008-04-09, 00:59 ] |
Tytuł: | |
Poprzedni kawałek naprawiłem. Teraz dlaczego się wykrzacza na zapisach w buforze - niewiem. Dopóki nie zobaczę nie będę mógł pomóc |
Autor: | user [ 2008-04-09, 11:51 ] |
Tytuł: | |
dobrze. napiszę jeszcze raz. Kod: int errtr string dir2=katalogfirmy() +"2006\\" string dostep= dir2 + "06zap_b.dat" int tr = Open dostep For Base "buf_zapisy" baseerror(tr,4) SetKey(tr,"virtualne" ) SetKeySeg(tr,"synt",502) SetKeySeg(tr,"poz1",7) errtr=GetRec(tr,GE) if errtr!=0 then error using "Nr błędu: %d", errtr while !errtr print using "%0.2f\n",getfield(tr,"kwota") errtr=getrec(tr,NX) wend a konkretnie to co naprawiłes? bo widzę tylko usunięte SetKey(tr,"id" ) SetKeySeg(tr,"id",0) co w rzeczy samej nie moze stanowic problemu bo jest ignorowane przez "fs". a w moim przykladzie jest, poniewaz docelowo nie chcę pobierac ilus-tam tysięcy rekordów, tylko je przefiltrować, wiec i tak te polecenia muszą byc zastosowane. no i zmieniles sciezkę, ale tu musi być string składany bo nie chodzi wylącznie o dane z katalogroku ale z róznych lat. i tez nie w tym rzecz, gdyby string byl zle złozony komunikat byłby inszy (np. o braku pliku). edit: aha, i z gory zaznaczam ze bląd jest bez względu na to czy podam wartosci wszystkich SetKeySeg w tym kluczu czy tylko te co w tym kodzie. jesli podam wszystkie poziomy analityki i date (a podaję zeby ograniczyc zakres danych) to i tak jest bląd. |
Strona 1 z 2 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |