śledzenie zapytań do bazy przez DB Monitor

śledzenie zapytań do bazy przez DB Monitor
MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

Witam. Mimochodem dowiedziałem się u mnie w pracy, że aby program kadrowo-płacowy naliczał pracownikowi urlop wypoczynkowy w wymiarze 26 dni, powinien być uzupełniony w tymże programie tzw. słownik poziomów wykształcenia. Dopiero wtedy, jeśli dany pracownik będzie miał na swojej kartotece wpisane np. wykształcenie wyższe, a w słowniku poziomów wykształcenia przy opisie "wykształcenie wyższe magisterskie", będzie wypełnione pole "Rodzaj" jako "Wyższe", to system będzie naliczał pracownikowi wymiar urlopu 26 dni.

w DB Monitorze widać, że program wywołuje jakąś kwerendę związaną z poziomami wykształcenia, ale w uszczegółowieniu nic nie ma.(zrzut)

screenshot-20200228132552.png

Przy czym nie wiem w jaki sposób program potrafi na formatce wpisywania urlopów, wziąć dane z tego słownika poziomów wykształcenia, skoro na bazie tego nie widać.(zrzut) bo jest tylko dodany kolejny urlop dla danego pracownika.

screenshot-20200228132641.png

Mam nadzieję, że wyraziłem sie jasno i wiadomo mnie więcej o co chodzi. Moje pytanie brzmi: jak sprawdzić, w którym miejscu/momencie program sprawdza te poziomy wykształcenia, przy naliczaniu pracownikowi urlopu?

edytowany 3x, ostatnio: malwersant
AK
A dlaczego sądzisz, że uchwycisz moment naliczenia na poziomie SQL? Byłby to fatalny program (może i jest - np gdyby był pozbawiony warstw.)
AK
Większość obliczeń wynikających z polskiego prawa pracy nie jest do wyrażenia w deklaratywnym języku SQL. Jest "tak, o ile, za wyjątkiem." SQL, który by to wyrażał byłby rozpaczliwy
abrakadaber
abrakadaber
KOMENTARZE NIE SĄ DO ODPOWIADANIA NA POSTY!
MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

tzn. mam rozumieć, że ten moment jest w jakimś innym środowisku, z którego korzysta programista (Delphi czy coś w ten deseń?)

edytowany 1x, ostatnio: malwersant
AK
Całkiem może tak być. Akurat 95% programów w deplhi nie podejrzewam o rzetelny projekt w warstwach, raczej szycie eventów na GUI
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 7 godzin
  • Postów:3870
1

Moje pytanie brzmi: jak sprawdzić, w którym miejscu/momencie program sprawdza te poziomy wykształcenia, przy naliczaniu pracownikowi urlopu?

To jest pytanie do producenta, a nie na forum.

MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0
Panczo napisał(a):

Moje pytanie brzmi: jak sprawdzić, w którym miejscu/momencie program sprawdza te poziomy wykształcenia, przy naliczaniu pracownikowi urlopu?

To jest pytanie do producenta, a nie na forum.

Zgadzam się w całej rozciągłości. Tylko, że wolałbym na razie nie roztrząsać tego problemu u producenta. Dlatego pytam tutaj na forum, licząc na jakieś rady mądrzejszych ode mnie.

YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 11 godzin
  • Postów:2368
1
malwersant napisał(a):

Zgadzam się w całej rozciągłości. Tylko, że wolałbym na razie nie roztrząsać tego problemu u producenta. Dlatego pytam tutaj na forum, licząc na jakieś rady mądrzejszych ode mnie.

Jak wszystko zawiedzie to może czas zerknąć do dokumentacji produktu? Nie wiem czy ktoś ma pojęcie o jakim programie piszesz i tym bardziej jak ów program działa. Kontakt z producentem wydaje się najrozsądniejszym kierunkiem działania.

Być może silnik bazodanowy, z którego korzysta program, zapamiętuje N ostatnich przetwarzanych zapytań i da się wypruć jakie zapytania leciały do bazy i przeanalizować, że w tabelce X brakuje wpisu, dlatego pojawia się NULL w zapytaniu Y.

Jako ostateczne rozwiązanie logowałbym ruch sieciowy od klienta do bazy (zakładając, że klient komunikuje się z bazą po sieci, a nie przez mechanizmy IPC) i patrzył co faktycznie jest przesyłane do bazy. Można skorzystać z narzędzia Wireshark. Tyle, że to schodzenie niżej niż poziom pracy DB Monitora. Takie podejście wyłapie wszystko i wyeliminuje ryzyko, że nie posługujesz się DB Monitorem swobodnie i jakieś zapytanie Ci "uciekło"

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 7 godzin
  • Postów:3870
0

Moje pytanie brzmi: jak sprawdzić, w którym miejscu/momencie program sprawdza te poziomy wykształcenia, przy naliczaniu pracownikowi urlopu?

Podałeś screeny, ale nie podałes najważniejszego, z jakiego silnika korzysta baza

Mimochodem dowiedziałem się u mnie w pracy, że aby program kadrowo-płacowy naliczał pracownikowi urlop wypoczynkowy w wymiarze 26 dni, powinien być uzupełniony w tymże programie tzw. słownik poziomów wykształcenia. Dopiero wtedy, jeśli dany pracownik będzie miał na swojej kartotece wpisane np. wykształcenie wyższe, a w słowniku poziomów wykształcenia przy opisie "wykształcenie wyższe magisterskie", będzie wypełnione pole "Rodzaj" jako "Wyższe", to system będzie naliczał pracownikowi wymiar urlopu 26 dni.

Czegoś nie rozumiem, wiesz co trzeba zaznaczyć, aby było 26 dni, a szukasz tego w bazie, zakladam, że ta wiedza wynika z dokumentacji programu. Co da Ci wiedza, gdzie to siedzi w bazie?

Zgadzam się w całej rozciągłości. Tylko, że wolałbym na razie nie roztrząsać tego problemu u producenta. Dlatego pytam tutaj na forum, licząc na jakieś rady mądrzejszych ode mnie.

Skoro dzialanie jest niezgodne z dokumentacją to tylko producent Ci pomoże. Chyba, że nie masz wykupionego abomanemntu/wsparcia (co w przypadku KadrPłac jest strzałem w stopę).
Oczywiście można śledzić skąd te dane się biorą, mozna nawet zmodyfikować bazę, aby działała wg. Twoich oczekiwań, ale nigdy nie wiesz co zepsujesz po drodze i raczej nie jest to dobry kierunek.

Przy czym nie wiem w jaki sposób program potrafi na formatce wpisywania urlopów, wziąć dane z tego słownika poziomów wykształcenia, skoro na bazie tego nie widać.(zrzut) bo jest tylko dodany kolejny urlop dla danego pracownika.

Moze te słowniki pobiera wcześniej, albo caschuje je gdzieś lokalnie, albo są zhardkodowane w programie? Wiele mozliwości.

MY
  • Rejestracja:ponad 9 lat
  • Ostatnio:3 dni
  • Postów:1082
0
Panczo napisał(a):

Podałeś screeny, ale nie podałes najważniejszego, z jakiego silnika korzysta baza

Kolega założył, że jak ktoś rozpozna IBExperta to będzie wiedział, że używa na 95% Firebirda ;)

Moim zdaniem najlepiej by było to sprawdzić za pomocą takiego narzędzia jak FBScanner ewentualnie jeśli mamy Firebirda 2.5+ to udostępnia on odpowiednie API do tego celu.

PA
Nie używam dbexperta i nie wiem jak wygląda, wspomina o db monitorze i sprawdziłem na stronie producenta, że wspiera całkiem sporo silników...
MY
@Panczo ależ ja się nie dziwię. Gdybym sam tego nie używał to bym tez nie wiedział. Niestety kolega słabo zadaje pytania. Popatrz na poprzedni Jego temat...
MA
Masz rację-słabo. Ale nie jestem informatykiem, nie wiem na co zwracać uwagę. Pracuję w tej firmie 3 miesiące, a wcześniej nigdy nie zajmowałem się obsługą takich programów od strony producenta; jedynie od strony użytkownika.
MY
@malwersant, a to zmienia nieco postać rzeczy. Trzeba było napisać wcześniej o tym, że nie jesteś informatykiem :)
MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0
Panczo napisał(a):

Czegoś nie rozumiem, wiesz co trzeba zaznaczyć, aby było 26 dni, a szukasz tego w bazie, zakladam, że ta wiedza wynika z dokumentacji programu. Co da Ci wiedza, gdzie to siedzi w bazie?

Generalnie chodzi o to, że na przykład user zgłasza błąd, że w program źle działa, bo nie nalicza urlopu w wymiarze 26 dni. Ja-jako wdrożeniowiec-muszę zweryfikować, czy błąd jest rzeczywiście po stronie programu, czy nieprawidłowego działania użytkownika, czy środowiska na jakim user pracuje. W tym przypadku było tak, że opisałem ten przypadek jako błąd programistyczny i przekazałem do programisty. Programista mi to odrzucił, bo wskazał że program działa prawidłowo, tylko user nie wypełnił odpowiednio tych słowników, o których pisałem wcześniej. Czyli zasadniczo to był mój błąd. I stąd moje pytanie, żeby na przyszłość wystrzegać się takich błędów. Niestety nie jestem informatykiem, ani specjalistą ds baz danych, dlatego próbuję to rozumieć po swojemu. Niestety programista nie przekazał mi informacji gdzie mam szukać tych powiązań, a może szkoda mu było czasu na takiego laika.
W instrukcji obsługi programu też nie ma takich informacji.

Mr.YaHooo napisał(a):
Panczo napisał(a):

Podałeś screeny, ale nie podałes najważniejszego, z jakiego silnika korzysta baza

Kolega założył, że jak ktoś rozpozna IBExperta to będzie wiedział, że używa na 95% Firebirda ;)

Chyba rzeczywiście tak pomyślałemm;)

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 7 godzin
  • Postów:3870
1

Generalnie chodzi o to, że na przykład user zgłasza błąd, że w program źle działa, bo nie nalicza urlopu w wymiarze 26 dni. Ja-jako wdrożeniowiec-muszę zweryfikować, czy błąd jest rzeczywiście po stronie programu, czy nieprawidłowego działania użytkownika, czy środowiska na jakim user pracuje.

Czyli wiemy, że wdrażasz program i ludzie zgłaszaja Ci błędy

W tym przypadku było tak, że opisałem ten przypadek jako błąd programistyczny i przekazałem do programisty. Programista mi to odrzucił, bo wskazał że program działa prawidłowo, tylko user nie wypełnił odpowiednio tych słowników, o których pisałem wcześniej. Czyli zasadniczo to był mój błąd.

Skoro poznales juz jakie słowniki i wartości musisz wypełnic aby to było 26 dni urlopu, to nie szukasz tego w bazie tylko w programie. W końcu musisz wiedzieć gdzie to jest, aby przekazać użytkownikowi w którym konkretnie miejscu ma to wypełnić, aby naliczało mu te 26 dni

I stąd moje pytanie, żeby na przyszłość wystrzegać się takich błędów. Niestety nie jestem informatykiem, ani specjalistą ds baz danych, dlatego próbuję to rozumieć po swojemu. Niestety programista nie przekazał mi informacji gdzie mam szukać tych powiązań, a może szkoda mu było czasu na takiego laika.

Zaczynasz od złej strony, jak pisałem wyżej nie jest Ci do niczego potrzebna wiedza gdzie to siedzi w bazie, tylko jak to uzupełnienić w programie już wiesz co:

Dopiero wtedy, jeśli dany pracownik będzie miał na swojej kartotece wpisane np. wykształcenie wyższe, a w słowniku poziomów wykształcenia przy opisie "wykształcenie wyższe magisterskie", będzie wypełnione pole "Rodzaj" jako "Wyższe", to system będzie naliczał pracownikowi wymiar urlopu 26 dni.

Jak uzupełnisz wg. tych wytycznych i nadal nie będzie 26 dni to zgłaszaj jeszcze raz.

W instrukcji obsługi programu też nie ma takich informacji.

Jeżeli jest jakiś support to zgłoś do nich, że przeczytałeś instrukcje obsługi i nie możesz znaleźć gdzie to wstawić w programie i poproś o materiały. Bazę jednak zostaw w spokoju.

MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0
Panczo napisał(a):

Zaczynasz od złej strony, jak pisałem wyżej nie jest Ci do niczego potrzebna wiedza gdzie to siedzi w bazie, tylko jak to uzupełnienić w programie już wiesz co:

Niby masz rację, ale tak jak napisałem, chciałbym wiedzieć czy po stronie bazy danych jest możliwość sprawdzenia tego, żeby na przyszłość nie popełniać tego rodzaju błędów. Jest wiele miejsc w programie, gdzie są wykorzystywane słowniki lub jakieś inne parametry i user zgłasza coś jako błąd, a okazuje się że to jest jego błąd. Znając powiązanie w bazie danych-o ile takie są (tak jak w tym przypadku)-mogę sam rozwiązać problem, a nie angażować w to programistę.

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 7 godzin
  • Postów:3870
1

Wdrożenie programu polega na tym, że ma on działać, Jako wdrożeniowiec masz mieć wiedzę co i gdzie wpisać w programie, aby działało zgodnie z oczekiwaniami. Pewnie można sprawdzić jakie wartości są wybrane bo na 99,9% siedzi to w bazie. Pytanie tylko po co?

Jeżeli w tytułowym wątku odpowiesz użytkownikowi np. tak:

To nie działa bo w tabeli KD_Pracownicy w polu P_Poziom_wyksztalcenia ma byc wpisana 2, a jest 1 to nie przybliżysz go do rozwiązania problemu. Mam wrażenie, że zbyt się przejmujesz, że popełniłeś "błąd". W praktyce dojdziesz do sytuacji, że poprowadzisz użytkownika "za rękę" po interfejsie programu, aby Ci sprawdził wpisane wartości.

Znając powiązanie w bazie danych-o ile takie są (tak jak w tym przypadku)-mogę sam rozwiązać problem, a nie angażować w to programistę.

Nie, jako wdrożeniowiec posługujesz się tymi samymi narzędziami co użytkownik, tylko bardziej świadomie. To jest wiedza z tego, jak dziala system, a nie jaki jest projekt bazy. I tu rola wdrożeniowca: sprawdza czy ustawienia w programie są poprawne, jeśli tak to zgłasza błąd bo coś nie diała zgodnie z dokumenacją. Nie mart się nie ty jeden zgłaszasz błąd, który nim nie jest

MA
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 2 lata
  • Postów:75
0

OK.dzięki za info. Chciałbym tak na to patrzeć, ale z drugiej strony wiem że tyle zmian się wykonuje u usera po bazą, więc też chciałbym wiedzieć co i jak. I to nie dotyczy tylko i wyłącznie programu kadry i płace, ale wszystkich modułów tej firmy, a jest ich około 40.

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 7 godzin
  • Postów:3870
0

Spokojnie, dojdziesz do takiej wiedzy, ale najpierw poznaj program, później przyjdzie czas na zagłębianie się w DB

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)