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

Eksport danych do txt lub połączenie ODBC
https://forum.mix-soft.pl/viewtopic.php?f=15&t=4654
Strona 1 z 2

Autor:  bzyq26 [ 2013-01-26, 18:50 ]
Tytuł:  Eksport danych do txt lub połączenie ODBC

Witam,

przez ostatnie dni zmagam się z Symfonia Handel 12.2.8.0 (2012.b). Mam zamiar przenieść dane do oracla, w celu tworzenia analiz, jednak nie za bardzo mogę podpiąć się do bazki aplikacji.
Ściągnąłem demo, które stoi na Btrieve 6.15.430, zainstalowałem sterownik ODBC wersji 2.04, wygenerowałem pliki DDF, wskazałem je przy tworzeniu źródła ODBC, jednak cały czas dostawałem błąd przy próbie zapisu tegoż źródła informującym o błędzie logowania (login i hasło podałem takie, jak przy logowaniu do aplikacji).

Mam więc pytanko, czy komuś udało się podpiąć do bazy Symfonii (bardzo proszę o jakieś wskazówki). Ewentualnie, w jaki sposób wyeksportować dane z symfonii, używając "Raportów" i składni AmBasic'a ? Chcę wyeksportować dane wszystkich głównych obszarów do osobnych plików txt/csv/xls. Dla ułatwienia, może to być polecenie eksportujące wszystkie dane z tabel, bez filtrów.

Będę wdzięczny za pomoc.
Pozdrawiam.

Autor:  krzysiek [ 2013-01-27, 15:24 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Proponuje jednak podpinać się mając za motor bazy Pervasive a nie MC. To działa.

Autor:  bzyq26 [ 2013-01-27, 16:19 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Dzięki za odpowiedź.
Prawdopodobnie potrzebowałbym kupić licencję na Pervasiva żeby mieć możliwość upgradu z Btrieve 6.15?
Podpięcie się do aktualnej bazy przez klienta Pervasiva również nie zadziała albo nie potrafię tego skonfigurować...
Obecnie próbuję stworzyć raport w AmBasicu, wyrzucający potrzebne dane do plików txt, używając składni z IORec...jednak nie należy to do najbardziej przyjemnych i intuicyjnych rzeczy jakie robiłem.
Czy w tym temacie mógłbym liczyć na jakąś pomoc? Może opis struktury bazy żebym wiedział do jakich obiektów się zwrócić żeby pobrać potrzebne dane ?

Pozdrawiam.

Autor:  wrob [ 2013-01-27, 21:06 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

No ale najpierw musisz napisac jakie dane potrzebujesz - "wszystkie główne obszary" to określenie nie należy do najbardziej intuicyjnych jakie słyszałem.
Zresztą czasem nie warto wyważać otwartych drzwi - jest przecież parę gotowych rozwiązań analitycznych do handlu - poszukaj na google np. pulpit menedżerski do handlu

Autor:  bzyq26 [ 2013-01-28, 15:43 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Chodzi o rozwiązanie zbierające dane nie tylko z symfonii (kilku modułów) ale również z innego ERP/CRM.
Mówiąc o obszarach mam na myśli Kontrahentów, Sprzedaż/Faktury (razem z liniami), Towary, Zakupy, Magazyn, Finanse itd.
Celem mojego działania jest uzyskanie danych zrzuconych z tych obszarów do osobnych plików tekstowych, gdzie kolumny rekordu będą oddzielone np. średnikiem.

Udało mi się napisać kawałek procedury w AmBasicu, który wyrzuca mi do pliku pierwsze 1000 segmentów (?) z pliku, w którym jest baza kontrahentów (mam nadzieję, że dobrze to ująłem). Problem w tym, że do pliku trafiają przeróżne dane... Magazyny, Banki, kontrahenci, osoby kontaktowe, urzędy skarbowe.
Nie wiem na razie w jaki sposób zidentyfikować rekordy zawierające dane kontrahentów.

Poniżej procedura (raport):

#include "Eksport kontrahentów"
//#include "Zasoby"

String test
Int nrBazy1
Int Nr_pliku
String Plik
Int jest
Int Seg
Int Licznik = 1

Int id
String znacznik
String kod
String nazwa
String miejscowosc
String ulica
String dom
String lokal
String kodpocz
String nip

Plik = "C:\\Symfonia\\Raporty\\test9.txt"
Nr_pliku = Open Plik for output

nrBazy1 = Open "C:\\Symfonia\\Demo_hm\\51kh.dat" for Base "KH"

for Licznik=1 to Licznik > 1000
SetKey (nrBazy1, "ID")
SetKeySeg (nrBazy1, "ID", Licznik)

jest=GetKey (nrBazy1, EQ)

//Sprawdzenie zawartości wybranego segmantu klucza ustawionego rekordu
Seg=GetKeySeg (nrBazy1, "ID")
Print "Segment ID klucza wybranego rekordu ma wartość: ", Seg; LF

//Odczyt zawartości rekordu
GetRec(nrBazy1, NX)

//Sprawdzenie zapisanych w rekordzie nowych informacji
// id=GetField (nrBazy1, "id") + ";"
znacznik=GetField (nrBazy1, "znacznik") + ";"
kod=GetField (nrBazy1, "kod") + ";"
nazwa=GetField (nrBazy1, "nazwa") + ";"
miejscowosc=GetField (nrBazy1, "miejscowosc") + ";"
ulica=GetField (nrBazy1, "ulica") + ";"
dom=GetField (nrBazy1, "dom") + ";"
lokal=GetField (nrBazy1, "lokal") + ";"
kodpocz=GetField (nrBazy1, "kodpocz") + ";"
nip=GetField (nrBazy1, "nip") + ";"

// Print # Nr_pliku; id
Print # Nr_pliku; znacznik
Print # Nr_pliku; kod
Print # Nr_pliku; nazwa
Print # Nr_pliku; miejscowosc
Print # Nr_pliku; ulica
Print # Nr_pliku; dom
Print # Nr_pliku; lokal
Print # Nr_pliku; kodpocz
Print # Nr_pliku; nip
Print # Nr_pliku; LF
NEXT Licznik

Close Nr_pliku

Autor:  bzyq26 [ 2013-01-28, 15:45 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Próbowałem użyć typu IORec oraz procedur ExportXX (ExportKH), jednak nie wiem jak tego użyć tak, żeby działało. Procedura wykonuje się bez zwrócenia jakiegokolwiek komunikatu o błędzie lub sukcesie...

Autor:  wrob [ 2013-01-28, 15:47 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Cytuj:
Nie wiem na razie w jaki sposób zidentyfikować rekordy zawierające dane kontrahentów.


id >65535 albo tez rozne fajne pola np typi :)

Autor:  bzyq26 [ 2013-01-28, 16:06 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Dzięki serdeczne za szybką odpowiedź.
Dodałem do zwrócenia kolumny id,typ,rodzaj (pierwsze 3 kolumny), dodałem warunek na id=65535 i otrzymałem coś takiego:

-1;99;90;0;Odbiorcy zagraniczni;;
-1;103;6000;0;DD;Dariusz Dejmek;
-1;0;90;68;Ulrich von J und Sohn;Ulrich von J und Sohn;
-1;0;90;0;Herr Flueck;Herr Flueck;
-1;0;3100;0;TP SA;TP SA;
-1;0;3100;0;MATRIX;MATRIX.PL SA;
-1;0;3100;0;BIZNESPARTNER;BIZNESPARTNER.PL SA;
-1;0;3100;0;Nowak Jan;Nowak Jan;
-1;106;470;65;Kowalska Anna;Kowalska Anna;
-1;106;470;65;Zawadzki;Zawadzki Artur;
-1;106;471;67;Bolkowski;Bolkowski Zdzisław;
-1;99;470;0;Pracownicy etatowi;;
-1;99;471;0;Pracownicy na zlecenie i o dzieło;;
-1;99;472;65;Urzędy Skarbowe;;
-1;99;473;67;Urzędy Gminy;;
-1;99;474;66;Zakłady Ubezpieczeń Społecznych;;
-1;107;473;66;ZUS Warszawa;Zakład Ubezpieczeń Społecznych Inspektorat Warszawa Wola;
-1;107;473;67;Urząd Skarbowy Warszawa;Urząd Skarbowy Warszawa - Wola;
-1;107;473;67;Urząd m. st. Warszawa - Wola;Urząd Miasta Stołecznego Warszawy Dzielnica Wola;
-1;0;3100;0;SAGE SYMFONIA;SAGE SYMFONIA Sp. z o.o.;

Jak widzisz nadal są dane wszystkiego co popadnie. Nie mogę tego na razie zrozumieć. Przecież Symfonia w jakiś magiczny sposób identyfikuje te wiersze, więc powinna być kolumna z jakąś flagą...

Aha warunek id>65535 nie zwrócił nic :(

Autor:  wrob [ 2013-01-28, 16:51 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

tam w kodzie jakoś dziwnie (bezsensownie) używasz setkeysegment stad i id dostajesz jakies -1 a nie poprawnie kolejne numerki rekordow

Autor:  bzyq26 [ 2013-01-28, 16:54 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Czy wiesz może jak sprawdzić jakie pola ma dana baza ?

Co do SetKeySeg szczerze mówiąc robiłem to na wyczucie przerabiając przykłady...Czy jesteś w stanie mi powiedzieć jak powinienem zmodyfikować procedurę?
Największe wątpliwości mam co do właśnie SetKeySeg oraz w GetRec parametru "NX"...

Autor:  wrob [ 2013-01-28, 17:03 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

W dokumentacji :)


przejrzyj jeszcze raz przykłady - setkeysegment wogole nie działa tak jak sobie wymyśliłeś - on służy do wyboru pola z indeksu (jeśli indeks jest wielopolowy) (a nie do skakania po rekordach - jeżeli używasz pola id które jest w pierwszej pozycji każdego indeksu to wogole możesz pominąć setkeysegment

a nx działa tak jak każdy nx - ustawia się na kolejny rekord w tabeli zgodnie z użytym indeksem

Autor:  bzyq26 [ 2013-01-28, 17:13 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Chcecie się nade mną poznęcać... :) Nakłanianie do nauki/poznawania tej "bazy" + czytanie dokumentacji ambasica jest znęcaniem się i powinno być karane :)

Proszę Was o odrobinę dobrej woli i pomoc w tym przykładzie a z następnymi na pewno sobie już dam radę sam.

Autor:  wrob [ 2013-01-28, 17:32 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Sam jesteś masochista (a my ci tylko pomagamy sie w tym realizowac) skoro wybrałeś eksportowanie przez amabsic nie znając struktury bazy itp :)
Moze prościej - spróbuj jednak przez ODBC

Autor:  bzyq26 [ 2013-01-28, 17:45 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Próbowałem ... AmBasic jest ostatnią rzeczą, za którą chciałem się zabierać.
Tak jak pisałem w pierwszym poście, zainstalowałem sterowniki, uzupełniłem wszystkie atrybuty do utworzenia DSN w Win7, jednak bez efektu. A jakiejkolwiek pomocy w necie ze świecą szukać.

Autor:  bzyq26 [ 2013-01-28, 17:47 ]
Tytuł:  Re: Eksport danych do txt lub połączenie ODBC

Zresztą na szukaniu struktury bazy też można stracić cały dzień i się nie znajdzie...
Pozostała metoda prób i błędów, która i tak częściowo się sprawdziła, chociaż nie należy do najbardziej efektywnych. Ale cóż zrobić...

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