Delphi/Baza danych - przeniesienie z Excel

Delphi/Baza danych - przeniesienie z Excel
BJ
  • Rejestracja:ponad 16 lat
  • Ostatnio:2 miesiące
0

Witam,
Panie, Panowie,
Przychodzę do Was z problemem (dla mnie dużym), chciałbym wrócić do programowania w Delphi (przestałem programować z 15 lat temu) ponieważ chciałbym przenieść program który napisałem w Excelu (jeżeli tak to można nazwać) do normalnej aplikacji czyli napisanej w Delphi.
Zrobiłem grafik w Excelu (poniżej wrzucam ScreenShot) który w głownym oknie ma zapisanych ludzi, ma policzone dla każdego ile dni był w pracy, ile się nalezy urolpu za te dni itp, jest widoczny każdy dzień. Jak na załączonym obrazu poniżej. Bez tytułu.jpg
Ogólnie ten Excel działa dobrze, no ale to jest Excel, jeżeli używa tego kilka komórek, to każdą poprawkę w kodzie musze nanieść na każdą kopie osobiście, no i oczywiście sama stabilność Excela się kłania, często się krzaczy.
Czy ktoś z Was mógłby mnie naprowadzić na rozwiązanie w Delphi (komponent?) w którym mógłbym zrobić coś podobnego? Jaką baze danych wybrać? Najlepiej taka która nie jest zależna od maszyny(nie trzeba instalować - w pracy nie mamy uprawnień admina na instalacje czego kolwiek - nawet tapety nie można zmienić :) )
Może opisałem trochę chaotycznie ale myśle że zrozumiecie oco chodzi.
Pozdrawiam
Boro
P.S
A co sądzicie żeby napisać ten program nie w Komercyjnym Delphi ale w darmowym Lazarus czy też CodeTyphon? dało by rade czy szkoda czasu na przesiadkę?

edytowany 1x, ostatnio: BorekJs
szatkus1
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 19 godzin
1

Ogólnie ten Excel działa dobrze, no ale to jest Excel, jeżeli używa tego kilka komórek, to każdą poprawkę w kodzie musze nanieść na każdą kopie osobiście, no i oczywiście sama stabilność Excela się kłania, często się krzaczy.

A próbowałeś wrzucić po prostu arkusz do chmury? Bo to w sumie powinno rozwiązać ten problem o ile nie wykorzystujesz w arkuszu jakichś funkcji, których nie ma w Excelu 365.

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

Czy ktoś z Was mógłby mnie naprowadzić na rozwiązanie w Delphi (komponent?) w którym mógłbym zrobić coś podobnego?

Komponentu jako takiego nie dasz rady znaleźć który robi dokładnie to samo co Twój Excel. Jednak możesz użyć np, TStringGrid'a do prezentacji danych i mieć podobną graficznie formę. Natomiast same obliczenia już zaszyć w programie.

BorekJs napisał(a):

Jaką baze danych wybrać? Najlepiej taka która nie jest zależna od maszyny(nie trzeba instalować - w pracy nie mamy uprawnień admina na instalacje czego kolwiek - nawet tapety nie można zmienić :) )

Ze swojej strony polecę https://www.firebirdsql.org/ Ma on wersję Embedded którą to wrzucasz po prostu jako kilka plików *.dll i łączysz się do bazy i już. Nie potrzeba niczego instalować, konfigurować. A jeśli byś chciał kiedyś zmienić bazę na działającą w sieci by kilka komputerów mogło korzystać na raz z jednej bazy, to też nie będzie z tym problemu. Po prostu wskażesz bazę danych na serwerze i działa bez zmiany programu.

BorekJs napisał(a):

A co sądzicie żeby napisać ten program nie w Komercyjnym Delphi ale w darmowym Lazarus czy też CodeTyphon? dało by rade czy szkoda czasu na przesiadkę?

Myślę, że nie ma co tylko spróbuj napisać coś takiego. Excel sam w sobie jest fajnym narzędziem, ale czasami analiza i szukanie błędów w takich arkuszach jest problematyczne, więc napisanie programu w jakimkolwiek sensownym języku programowania będzie o wiele lepsze. Dodatkowo stabilność powinna być większa, skalowalność tak samo. Utrzymanie tego programiku też dla mnie by było o wiele prostsze niż klepanie regułek w Excelu. Dodatkowo przekazanie tego komuś innemu czy dołączenie się do rozwoju będzie łatwiejsze.

Moim zdaniem da się napisać taki program nawet w darmowym Lazarusie.

edytowany 1x, ostatnio: Mr.YaHooo
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 8 godzin
0

To więcej pracy niż się wydaje a efekt będzie jeszcze gorszy niż excel. Jak działa to bym został przy excelu.
Jak wyżej ktoś zaproponował - wrzuć do chmury plus dodatkowo jeśli chcesz formuły aktualizować tylko w jednym miejscu to teoretycznie możliwe jest zrobić template z formułami a potem w nowych dokumentach linkować komórki do innego skoroszytu, wtedy aktualizujesz formułę w szablonie i wszystkie zależne dokumenty też się zaktualizują.

BorekJs napisał(a):

Przychodzę do Was z problemem (dla mnie dużym), chciałbym wrócić do programowania w Delphi (przestałem programować z 15 lat temu)

Jeśli już koniecznie chcesz zrobić z tego aplikację to polecam przejść za projektantem Delphi na jego nowszy twór czyli C# - będziesz mógł użyć lepszego, darmowego IDE, mieć dostęp do większej ilości współczesnych komponentów i wsparcia; dużo idei które pamiętasz może jeszcze z delphi będziesz mógł odnaleźć w c#. Delphi w zasadzie umarło właśnie jakieś 15 lat temu.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 4x, ostatnio: obscurity
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około godziny
  • Postów:1595
0

No dobra to ja spróbuję nieco bardziej merytorycznie bo kilka takich projektów już robiłem (excel na aplikację webową, excel na bazę i klienta w delpi, excel na aplikację mobilną - to był hardcore).

Wspomniałeś o tym, że to jest excel w firmie i masz wiele "komórek" - jak rozumiem komórek organizacyjnych - w takim wypadku musisz rozważyć porządnie architekturę rozwiązania

  1. Tworzysz aplikację (klienta) w delphi i ten klient posiada również swoją bazę. W takim wypadku baza typu firebird, sqlite lub portable postgresql. Niestety to rozwiązanie w dłuższej perspektywie utrzymaniowej ma te same wady do excel. Różnica jest tylko taka, że każda aplikacja ma swoją instancję bazy więc nie ma problemu z blokowaniem czegokolwiek. Natomiast utrzymanie, rozwój, rozbudowa czy to bazy czy aplikacji jest uciążliwa bo trzeba to robić na każdym kompie gdzie ta aplikacja z bazą stoi. Oczywiście możesz do tego napisać autoupdater zarówno aplikacji jak i bazy ale dalej będziesz miał problem z np replikacją danych między klientami/komórkami. W dodatku autoupdater zadziała tylko wtedy gdy z każdego komputera w firmie będzie dostęp do jakiegoś udziału sieciowego (czy to wewnątrz LAN czy to na zewnątrz) z którego pobierze się paczka aktualizacyjna.
  2. Tworzysz aplikacje (klientów) w delphi ale na jednym centralnym serwerze w firmie stoi jedna wspólna baza danych. Do tego celu najlepiej nada się postgresql. To rozwiązanie ma w zasadzie tylko zalety pod względem utrzymaniowym i rozwojowym bo w 1 bazie masz wszystkie informacje. Możesz spokojnie wyciągać dowolne informacje w dowolnym dziale z dowolnego działu, łączyć je we wspólne raporty itd. Ktoś doda pracownika w dziale X, automatycznie pojawi się u wszystkich. Niestety to podejście wymaga nieco pracy administracyjnej bo trzeba taką bazę postawić i do każdego kompa w firmie dać dostęp sieciowy. Ponadto sama instalacja i konfiguracja postgresa wymaga nieco doświadczenia. Serwer bazodanowy też wymaga konserwacji, backupowania itd. Natomiast sam postgres posiada szerego dodatkowych funkcji jak np PostgREST więc w delphi masz możliwość połączenia bezpośredniego lub strzelania/czytania po restach. Sam REST umożliwi Ci też ewentualne przyszłościowe rozbudowanie systemu o nowe funkcjonalności typu microserwisy/web/mobilki
  3. Oba powyższe rozwiązania opierają się o ten sam system operacyjny (np Windows) gdzie tworzysz sobie klienta w delphi. Natomiast w firmie jak to w firmie przyjdzie nowy dyrektor i zażyczy sobie mcbooka i jesteś w szarej ... Możesz kupić delphi z kompilatorem crossplatformowym i dziergać w FMX lub skorzystać z czegoś darmowego typu Lazarus natomiast zaraz ktoś przyjdzie z pomyslem, że chce na telefonie się połączyć albo na linuxie i znowu ból głowy murowany. Ja osobiście byłem w takiej sytuacji i postawiłem na bazę danych z pkt 2 + gui webowe. Niestety to podejście mimo, iż najbardziej uniwersalne dla użytkownika końcowego, przynajmniej dla mnie było najbardziej uciążliwe zarówno od strony administracyjnej jak i programistycznej. Po pierwsze baza danych. W zależności od tego co wybierzesz (ja wybrałem wordpress'a) to tutaj np zmuszony byłem skorzystać z mariadb. Raczej proponuję użyć gotowego frameworka do WWW niż tworzyć od 0 bo to jest gigantyczna ilość pracy, a taki wordpress np udostępnia Ci cały CMS do zarządzania i w zasadzie z klocków budujesz sobie stronę. Panel administracyjny, zarządzanie stroną, użytkownikami, treścią wszystko jest. Niestety to czego nie ma, a to co byś potrzebował trzeba wydziergać samemu. Tu zostaje Ci HTML,CSS, JS w przypadku wordpress dodatkowo PHP w innych narzędziach różnie. Także o delphi możesz zapomnieć. W dodatku serwer WWW podobnie jak serwer bazodanowy wymaga opieki. Tu z plusów jest na pewno to, że u wszystkich działa. Tam gdzie jest przeglądarka z dostępem do danego serwera masz pewność, że się uruchomi. Może się gdzieś coś źle przeskalować ale np w takim wordpress silnik sam o to dba jak zrobisz to dobrze.
  4. Niby 4 ale tak naprawdę chyba 3.a. Są narzędzia typu apex.oracle.com, które udostępniają po pierwsze bazę, po drugie gotowy CMS do tworzenia WWW w opraciu o tą bazę. Na tym serwerze masz już wszystko skonfigurowane, uruchomione i działające. Są jednak 2 minusy. Baza danych jest wspólna więc o prywatności danych możesz zapomnieć. Drugim jest niestety odrobina wiedzy na temat oracle i apex aby zacząć. Natomiast możesz oracle xe postawić u siebie i doinstalować do tego apexa. Wtedy strony tworzysz jak chcesz, a cały kod upychasz w pl/sql.

Co do samej kwestii wizualnej. To co w tym excelu masz to w czystym delphi tak łatwo nie zrobisz. W przypadku komponentów typu DB to są to raczej proste narzędzia natomiast istnieją też narzędzia płatne. Z tego screena wynika, że najlepiej sprawdziłby Ci się cxGrid. W przypadku WWW funkcjonalność cxGrida próbowałem zrobić przy użyciu JQuery i DataGrida ale tam też sporo dziergania i też nie wszystkie funkcjonalności tegoż excela uzyskasz. Są też inne technologie jak node js lub react i tam sporo gotowych narzędzi ale ja z nimi nie miałem doświadczenia niestety.

Zastanów się tak naprawdę czego potrzebujesz policz co jest dla Ciebie najlepsze pod względem czasu wytworzenia i późniejszego utrzymania. Sorki za długi post ale liczę, że dość obrazowo przedstawiłem Ci problemy, z którymi będziesz musiał się zmierzyć.

edytowany 1x, ostatnio: woolfik
obscurity
wydaje mi się że pisząc "komórka" miał na myśli excelową "komórkę"
woolfik
zasugerowałem się tym osobiście: no ale to jest Excel, jeżeli używa tego kilka komórek, to każdą poprawkę w kodzie musze nanieść na każdą kopie osobiście
obscurity
zakładam że chodzi o komórki w różnych skoroszytach. Jeśli zajdzie potrzeby zmiany to każdą poprawkę trzeba nanieść w każdej kopii
obscurity
czytając to drugi raz jednak myślę że jest tylko jeden skoroszyt i chodzi o kopie formułki w różnych komórkach, choć dalej mi nie pasuje słowo "osobiście"
BJ
  • Rejestracja:ponad 16 lat
  • Ostatnio:2 miesiące
0

Dzięki wszystkim za odpowiedzi.
Na razie zostanę przy Excelu, poprawie tylko wydajność itp.
Jeżeli chodzi o komórki to chodziło mi o komórki organizacyjne, w jednej takiej komórce jest powiedzmy 100 pracowników, a w drugiej 150. Ten arkusz który jest na załączonym obrazku to jest tylko jeden z wielu, ten jest tak jakby główny w którym znajdują się informacje na temat przepracowanych dni, urlopów itp... (w postaci np.: 1, 1P, 1U i tak dalej, excel później zlicza)
Jako że jako tako kasy z tego nie mam, zrobiłem to z czystej przyjemności i chęci pomocy dla osoby która zajmuje się tym zliczaniem, nie widzę sensu w kupowaniu jakiegokolwiek komponentu czy też IDE, więc mając na uwadze Wasze odpowiedzi spróbuje może w C# i WPF (jest za free a jeżeli uda mi się to zrobić, to nikt nie przyczepi się że napisałem program w jakimś lewym IDE czy coś) - ale to i tak tylko z czystej mojej fantazji żeby zająć czymś głowę 😀
Jeszcze raz dzięki za odpowiedzi.
Pozdrawiam
Wesołych Świąt
Boro

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)