Net-Base Magazyn

11.04.2026

Zastąpienie Borland BDE przez FireDAC: Przewodnik po bezpiecznej modernizacji Delphi bez Big Bang

Wiele istniejących aplikacji Delphi nadal korzysta z Borland Database Engine (BDE) – często stabilnej, lecz z rosnącymi zagrożeniami przy wdrażaniu, 64‑bit, bezpieczeństwie i nowoczesnej strategii bazodanowej. Ten artykuł pokazuje, jak firmy mogą krok po kroku i w kontrolowany sposób zastąpić BDE przez FireDAC...

11.04.2026

Wielu przedsiębiorstwom Borland Database Engine (BDE) do dziś towarzyszy w krytycznych dla biznesu aplikacjach Delphi: utrwalona logika domenowa, dostęp do danych blisko UI z użyciem TTable/TQuery, częściowo nadal Paradox/dBase, częściowo wczesne instalacje Client/Server. Często rzeczywistość wygląda tak: oprogramowanie działa, użytkownicy znają procesy i w codziennej pracy nie ma bezpośredniej potrzeby „czegokolwiek dotykać”. Jednocześnie zmienia się techniczna podstawa: systemy operacyjne są wzmacniane, wdrożenia standaryzowane, oczekuje się 64‑bitów, a przechowywanie danych ma odbywać się na serwerach bazodanowych z uporządkowanym konceptem uprawnień i backupów.

W tym miejscu „Zastąpienie Borland BDE przez BDE‑Ablösung z natywnym podłączeniem” staje się strategicznym zadaniem modernizacyjnym. BDE-Ablosung mit nativer Anbindung jest w aktualnych wersjach Delphi ustalonym sposobem dostępu do nowoczesnych baz danych. Dostarcza spójne zachowanie, solidne sterowniki, wsparcie Unicode, monitoring/tracing oraz architekturę obsługującą zarówno klienty desktopowe, jak i serwisy oraz REST‑serwery. Przejście rzadko jest jednak jedynie zamianą komponentu 1:1 — szczególnie, gdy aplikacja dziedziczna przez lata „uwzględniała” zachowania specyficzne dla BDE (założenia transakcyjne, formaty danych, filtry/sortowania, Cached Updates, raporty stron trzecich).

Ten artykuł skupia się na praktycznym podejściu: jak zastąpić BDE FireDAC‑em, nie narażając logiki biznesowej i bez wymuszania big‑bangowego releasu? Otrzymują Państwo wykonalny model, techniczne obrazy docelowe i wskazówki dotyczące typowych newralgicznych obszarów w eksploatacji korporacyjnej.

Dlaczego dziś zastąpienie BDE to więcej niż konserwacja techniczna

Dopóki aplikacja oparta na BDE działa, wymiana może wyglądać jak zwykłe „sprzątanie kodu”. W praktyce jednak presja zwykle wynika z kwestii operacyjnych i ryzyka.

Deployment, security‑baselines i „No‑Touch”‑klienci

BDE historycznie bazuje na lokalnej konfiguracji (BDE Administrator, definicje aliasów, NetDir, wspólne pliki konfiguracyjne). W nowoczesnych środowiskach kroki ręczne i ustawienia obowiązujące dla maszyny trudno pogodzić z dystrybucją oprogramowania, utwardzaniem i audytowalnością. FireDAC umożliwia znacznie bardziej kontrolowalne wdrożenia, ponieważ parametry połączenia i ustawienia sterowników mogą być zarządzane blisko aplikacji.

64‑Bit, modernizacja Windows i nowe cele platformowe

Najpóźniej gdy aplikacja musi działać w 64‑bit (zapotrzebowanie pamięci, ekosystem sterowników/Office, nowy sprzęt, strategie terminalowe), BDE staje się faktycznym blokującym elementem. FireDAC wspiera spójnie 32/64‑bit i jest zatem kluczowym elementem każdej modernizacji Delphi, która technicznie nie może ugrzęznąć na dostępie do danych. Przy okazji tematy takie jak Windows 11 ARM64 i hybrydowe architektury klient/serwis stają się w ogóle planowalne.

Strategia bazy danych: odejście od plików ku serwerom

Wiele aplikacji BDE nosi jeszcze ciężar z czasów Paradox/dBase. Te plikowe bazy danych są w środowisku wieloużytkownikowym bardziej podatne, trudniejsze do zabezpieczenia administracyjnie i słabo pasują do dzisiejszych wymagań (role/uprawnienia, szyfrowanie, monitoring, wysoką dostępność). FireDAC nie jest „nowym sterownikiem Paradox”, ale jest nowoczesnym dostępem do SQL Server, PostgreSQL, MariaDB i Firebird. W praktyce zastąpienie BDE często jest sygnałem do profesjonalizacji przechowywania danych i eksploatacji.

Utrzymanie i zdolność diagnozy w eksploatacji

Niedocenianym kosztem jest poszukiwanie błędów: sporadyczne blokady, niespójne zachowanie kursorów, trudno śledzalne konwersje parametrów czy problemy sieciowe/ścieżek. FireDAC oferuje logowanie, monitoring i jaśniejsze zachowanie typów, co daje lepsze punkty zaczepienia do odtwarzalnej analizy błędów. Dla firm, które chcą długoterminowo eksploatować aplikację i ją punktowo rozszerzać, to bezpośrednia korzyść.

BDE vs. FireDAC: różnice istotne przy migracji

Na papierze komponenty można odwzorować. W rzeczywistości chodzi o zmiany zachowania, które mogą wywołać skutki po stronie domeny. Krótkie orientacyjne zestawienie:

Mapowanie komponentów (jako punkt startowy)

  • TDatabase (BDE) → TFDConnection (FireDAC)
  • TQuery (BDE) → TFDQuery
  • TTable (BDE) → TFDTable (w modernizacjach często lepsze: dostęp oparty na Query/View)
  • TStoredProc (BDE) → TFDStoredProc

Najczęstsze różnice w zachowaniu

  • Parametry i typy danych: FireDAC działa precyzyjniej. „Jakoś pójdzie”‑SQL wychodzi szybciej na jaw (np. daty jako stringi, implikowane konwersje, niejasna nullowalność).
  • Transakcje: W kodzie dziedziczonym często występują ukryte założenia o commitach (zamknięcie zestawu danych, wzorce podobne do AutoCommit, Cached Updates). Przy FireDAC warto świadome sterowanie transakcjami, bo poprawia to spójność biznesową.
  • Kursor/Fetch: FireDAC ma inne domyślne ustawienia i więcej możliwości konfiguracji. Niewydajne wzorce (duże resultsety dla list w UI) stają się bardziej widoczne, ale można je celowo optymalizować.
  • Unicode: W nowoczesnych wersjach Delphi Unicode jest standardem. Łańcuch FireDAC (biblioteka kliencka, opcje połączenia, kolacja DB, typy pól) musi być spójny, inaczej grożą problemy z znakami i porównaniami.
  • Deployment: W zależności od DB potrzebne są biblioteki klienckie (np. libpq dla PostgreSQL). Trzeba to zaplanować wcześnie, by uniknąć niespodzianek w środowisku produkcyjnym.

Obraz docelowy architektury FireDAC: stabilna, testowalna, rozszerzalna

Zastąpienie BDE nie powinno kończyć się „FireDAC gdzie popadnie”. Utrzymalny obraz docelowy jest szczególnie wartościowy, jeśli aplikacja ma być dalej rozwijana lub osadzana w serwisach/portalach.

Cel minimalny: jednolita warstwa połączeń

Zamiast rozproszonego tworzenia połączeń w formularzach zaleca się centralny connection‑layer:

  • Tworzenie i konfiguracja TFDConnection w jednym miejscu
  • Jednolite timeouty, encoding/CharacterSet, obsługa błędów
  • Przełączanie Dev/Test/Prod bez ręcznej ingerencji
  • Opcjonalnie: centralne włączenie tracingu/monitoringu dla przypadków diagnostycznych

Rekomendacja: wyraźne granice transakcji w logice biznesowej

Wiele aplikacji legacy rozprosza zmiany danych po eventach UI. Zwiększa to ryzyko częściowych aktualizacji i utrudnia testy. Stabilne podejście FireDAC to: Use Case (serwis/logika) zaczyna i kończy transakcję, nie UI. Nawet w czystej aplikacji VCL daje to solidne jądro, które później łatwiej przekształcić w serwis lub API.

Możliwość rozszerzenia w kierunku serwisów i REST

Ci, którzy później dodadzą REST‑serwer, będą uruchamiać serwisy Windows lub Linux‑services albo integrować portal klienta, skorzystają z czystej warstwy danych. FireDAC nadaje się do tego, pod warunkiem że zarządzanie połączeniami, obsługa błędów i — w zależności od obciążenia serwera — pooling są przynajmniej jako obraz docelowy przemyślane. Nie trzeba tego wdrażać od razu, ale architektura nie powinna tego blokować.

Strategia migracji: stopniowe wprowadzanie FireDAC, kontrolowane wycofywanie BDE

W środowiskach B2B big‑bang rzadko jest realistyczny: zbyt wiele procesów biznesowych, odpowiedzialność operacyjna, słaba akceptacja długich przestojów. Stopniowe zastąpienie BDE jest zwykle bezpieczniejszą ścieżką.

Faza 1: inwentaryzacja i mapa ryzyka

Przydatna inwentaryzacja liczy nie tylko komponenty, ale ocenia zachowania i powiązania:

  • Jakie bazy danych są używane: Paradox/dBase, Firebird/InterBase, SQL Server, PostgreSQL, MariaDB?
  • Gdzie są dostępny TTable, gdzie SQL używany przez TQuery, gdzie Stored Procedures?
  • Jak dziś realizowane są transakcje (jawne, ukryte, Cached Updates, mieszane wzorce)?
  • Jakie raporty/eksporty oczekują specyficznych właściwości datasetu (sortowanie, filtry, pola obliczane)?
  • Jakie komponenty zewnętrzne lub własne frameworki są zależne od BDE?

Z tej mapy wynika, czy zastąpienie dotyczy „tylko” warstwy dostępu, czy równocześnie sensowna lub konieczna jest przebudowa bazy danych (np. Paradox → SQL Server/PostgreSQL/MariaDB).

Faza 2: fundament FireDAC (bez zmian UI)

Zanim migrują Państwo ekrany, FireDAC powinien być technicznie solidnie przygotowany:

  • Centralne DataModule lub klasa serwisowa z TFDConnection
  • Model konfiguracji Connection Stringów (np. INI/JSON) i porządne zarządzanie sekretami
  • Standardyzowana obsługa błędów (przekształcenie wyjątków DB w zrozumiałe, logowalne komunikaty)
  • Opcje tracingu/monitoringu dla pilota (włączalne selektywnie, nie permanentnie „głośne”)

Ważne, by z tego powstały wiążące standardy: konwencje nazewnictwa, reguły parametrów, schemat logowania, domyślne ustawienia per baza danych.

Faza 3: moduł pilotażowy o rzeczywistej wadze biznesowej

Dobry obszar pilotażowy jest wyodrębniony funkcjonalnie, ale rzeczywiście używany. Cel: wypracować i zweryfikować wzorce.

  • TQueryTFDQuery (włącznie z parametryzacją i typizacją)
  • Zdefiniować ramy transakcyjne i uwidocznić je w kodzie
  • Udowodnić równość rezultatów (porównać merytorycznie istotne wynikowe zbiory danych)
  • Zmierzyć wydajność (czasy odpowiedzi, obciążenie DB, ruch sieciowy)

Na koniec pilota powinna powstać wewnętrzna lista kontrolna, według której migrowany będzie każdy kolejny moduł. To zmniejsza ryzyko i czyni nakład pracy bardziej planowalnym.

Faza 4: migracja na szeroką skalę i porządkowanie deploymentu

Po pilocie moduły są konwertowane. Równolegle BDE jako zależność operacyjna jest usuwana:

  • Usuń skrypty instalacyjne i dokumentację konfiguracji BDE
  • Usuń definicje aliasów, konfigurację NetDir i specjalne ścieżki
  • Dostosuj pipeline build/release do nowych zależności (biblioteki klienckie, sterowniki)

Szczególnie ten wycof jest kluczowy: dopóki elementy BDE pozostają w deploymentcie, ryzyko operacyjne trwa.

Punkty potknięć: częste przyczyny skutków ubocznych po stronie domeny

Wiele migracji nie zawodzi z powodu FireDAC, lecz z powodu ukrytych założeń w starym kodzie. Te obszary warto wcześnie priorytetyzować.

Dialekty SQL i historycznie ukształtowane zapytania

Aplikacje BDE często zawierają SQL, który „przypadkowo” działał z danym sterownikiem: implikowane joiny, niejednolite użycie aliasów, funkcje specyficzne dla DB, niejednoznaczne sortowania. Przy migracji:

  • Uczyń SQL eksplicytnym (JOIN zamiast implikowanego łączenia w WHERE)
  • Sprawdź słowa zastrzeżone i identyfikatory (np. DATE, USER, ORDER jako nazwy pól)
  • Ujednolić lub hermetyzować funkcje daty/czasu i stringów

FireDAC oferuje możliwości dopasowania, ale trwałe rozwiązanie to zgodny z DB, czytelny SQL.

Mapowanie typów danych: Boolean, data/czas, Memo/Blob, NULL

BDE w praktyce dużo interpretował. FireDAC jest dokładniejszy – to zaleta, ale wymaga reguł. Typowe tematy:

  • Boolean: BIT/SMALLINT/CHAR(1) – jasno zdefiniować semantykę, bez implikowanych konwersji
  • Data/Czas: DATETIME vs. DATETIME2, milisekundy, logika sortowania/porównywania; kwestie stref czasowych w systemach rozproszonych
  • Memo/Blob: Zachowanie fetchu (OnDemand), encoding, zużycie pamięci po stronie klienta
  • NULLability: Stary kod mieszający puste stringi i NULL prowadzi do trudnych do wykrycia błędów logicznych

Sprawdza się lekkatalog typów danych: dla każdej istotnej tabeli/kolumny określić docelowe typy (DB i Delphi) oraz reguły dla NULL, wartości domyślnych i formatowania.

Transakcje: od ukrytych do świadomie orkiestrujących

W projektach legacy powszechny jest błąd polegający na poleganiu systemu na implikowanych commitach („zamykam dataset, więc jest zapisane”). FireDAC oferuje jasne API (StartTransaction, Commit, Rollback). Korzyść modernizacji pojawia się, gdy transakcje rozumiane są jako ramy biznesowe:

  • Use Case rozpoczyna transakcję
  • Wiele aktualizacji wykonuje się w ramach tego samego połączenia
  • Commit/Rollback wykonuje się centralnie z czytelnym handlingiem błędów

To redukuje niespójności i jest kluczowe, jeśli aplikacja ma być później rozszerzana o serwisy lub interfejsy.

Cached Updates i obsługa konfliktów (konkurencja)

Wiele aplikacji BDE używa Cached Updates jako mechanizmu „offline edit”. FireDAC może zaoferować podobne mechanizmy, ale reguły muszą być jawne:

  • Jakie pola są kluczami, jakie służą do sprawdzania konkurencji?
  • Jak rozwiązywane są konflikty (RowVersion/Timestamp, „last write wins”, decyzja użytkownika)?
  • Co się dzieje przy częściowych błędach w operacji wsadowej?

W modernizacjach często sensowne jest przeniesienie logiki konfliktów bliżej logiki biznesowej lub do warstwy serwisowej, zamiast ukrywania jej w zachowaniu datasetu w UI.

Aplikacje mocno zależne od TTable/Paradox: FireDAC to nie jedyne zadanie

Jeśli aplikacja silnie polega na dostępie plikowym (TTable przeciw Paradox), „zastąpienie BDE przez FireDAC” to tylko część prawdy. FireDAC jest przede wszystkim przeznaczony do baz SQL. Kluczowe pytanie: czy przechowywanie ma zostać zmodernizowane na DB‑serwer?

  • Migracja do SQL Server, PostgreSQL lub MariaDB
  • Wprowadzenie koncepcji ról/uprawnień oraz porządnych procedur backup/restore
  • Stabilny tryb wieloużytkownikowy bez problemów z blokowaniem plików

Jeżeli natychmiastowa zmiana bazy jest organizacyjnie niemożliwa, często pragmatyczne jest podejście dwuetapowe: najpierw ustabilizować warstwę dostępu i zmniejszyć powiązanie z UI, potem przeprowadzić migrację danych z jasną strategią testów i cutoveru.

Raportowanie, eksporty i komponenty zewnętrzne

Raporty często zależą od detali: sortowania, kolejności filtrów, pól obliczanych, zachowania master/detail. Dla kontrolowanej zmiany:

  • zidentyfikować krytyczne raporty i traktować je jako zestaw regresyjny
  • generować zbiory danych do raportów deterministycznie (views/stored procedures lub jasno zdefiniowane zapytania)
  • ograniczyć łańcuchy filtrów po stronie UI, które zależą od zachowania datasetu

Celem jest odtwarzalna zgodność wyników, zwłaszcza dla analiz podlegających audytowi.

Uaktualnienie architektury w trakcie migracji FireDAC: pragmatyczne odseparowanie

Zastąpienie BDE to dobra okazja, by wydobyć dostęp do danych z formularzy i handlerów zdarzeń. Nie oznacza to konieczności pełnego projektu re‑architektury. Nawet umiarkowane działania często przynoszą duży efekt.

Pragmatyczna struktura docelowa (łatwo podłączalna do architektury warstwowej‑3)

  • Connection/Unit‑of‑Work: zarządza połączeniem i transakcją, dostarcza obiekty Query
  • Repository/DAO: kapsułkuje SQL i dostęp do danych dla danego obszaru domenowego
  • Service/Use Case: orkiestruje logikę, walidacje i ramy transakcyjne

Ta struktura jest zgodna z późniejszą architekturą warstwową‑3 i ułatwia kolejne projekty: REST‑API, serwisy tła, wieloplatformowych klientów czy integrację z portalami.

Ważny efekt: mniej globalnych efektów ubocznych

Wiele projektów BDE pracuje z globalnymi data‑modulami i implikowanymi stanami. FireDAC działa też w takim modelu, ale modernizacja będzie bardziej stabilna, gdy stany zostaną zlokalizowane: jasny lifecycle Connection/Transakcji, odtwarzalne ścieżki błędów, mniej „skutków ubocznych” wynikających z globalnego stanu.

Wydajność i stabilność: celowa konfiguracja FireDAC

FireDAC jest wydajny, ale wydajność to kombinacja SQL, indeksowania, strategii fetchowania i zarządzania połączeniami. W migracjach często wychodzi na jaw, że BDE maskowało niewydajne wzorce, bo wcześniej zbiory danych były mniejsze lub system działał lokalnie.

Strategie fetchowania i listy w UI

  • Ładować w listach tylko potrzebne kolumny (nie SELECT *)
  • Sortowanie po stronie serwera i celowane filtry zamiast łańcuchów po stronie klienta
  • Przy dużych zbiorach: paging lub przyrostowe doładowywanie
  • Pola LOB (Memo/Blob) ładować dopiero, gdy są naprawdę potrzebne

FireDAC oferuje odpowiednie opcje; kluczowa jest decyzja biznesowa, które dane użytkownik rzeczywiście potrzebuje w danym kontekście.

Prepared Statements i parametryzacja

Parametryzowane zapytania to nie tylko standard bezpieczeństwa (zapobieganie SQL‑Injection), ale też poprawa ponownego użycia planu w wielu bazach. Dodatkowo ujawnia się nieścisłość typów w starym kodzie i można ją naprawić. W dojrzałych systemach to zysk jakościowy przekładający się na mniej wyjątków i lepszą diagnostykę.

Zarządzanie połączeniami: desktop kontra serwis/REST

W klasycznych klientach desktopowych często praktyczna jest trwała, długa sesja połączenia per klient. W serwisach lub serwerach REST obowiązują inne wzorce: krótsze żądania, równoległe dostępy, pooling połączeń. Jeśli zastąpienie BDE traktowane jest jako część większej modernizacji, warto uwzględnić te różnice w obrazie docelowym, aby późniejsze rozszerzenia nie zaczynały od nowa przy dostępie do danych.

Strategia testów i odbioru: udowodnienie równości wyników

Główne ryzyko przy zastąpieniu BDE rzadko polega na „aplikacja nie startuje”, częściej to ciche różnice funkcjonalne: sortowania, zaokrąglenia, obsługa NULL, granice transakcji, efekty uboczne triggerów/constraintów w nowoczesnych DB. Solidna strategia testowa obejmuje:

  • Regresję SQL: uruchomić krytyczne zapytania na zdefiniowanych danych testowych i porównać resultsety
  • Testy przypadków użycia: sprawdzić kluczowe procesy (np. księgowanie, zatwierdzanie, storno, import/eksport) z oczekiwanymi wartościami
  • Testy wieloużytkownikowe/stabilności: zachowanie blokad, deadlocki, time‑outy, czas trwania transakcji
  • Logowanie/observability: strukturalne rejestrowanie błędów DB (kody błędów, kontekst, dotknięte zapytanie), nie tylko „okno błędu”

Firmy zyskują tu podwójnie: testy zabezpieczają migrację i tworzą podstawę do kontrolowanego wdrażania późniejszych zmian w modelu danych lub interfejsach.

Bazy docelowe w projektach FireDAC: typowe opcje

FireDAC jest świadomie szeroki, ale każda baza ma własne reguły. W modernizacjach częste cele to:

SQL Server

Typowy wybór w środowiskach zdominowanych przez Windows. Istotne punkty: spójne typy Unicode (NVARCHAR), nowoczesne typy czasu (DATETIME2), jasna strategia Identity/Sequence, zdefiniowane poziomy izolacji i poprawne obchodzenie się z blokadami.

PostgreSQL

Mocny w zakresie integralności i funkcji. W migracjach ważne: case‑sensitivity identyfikatorów, typy danych (boolean/uuid/jsonb) i różnice dialektu. FireDAC może produkcyjnie łączyć się z PostgreSQL, jeśli biblioteki klienckie i deployment są właściwie zorganizowane.

MariaDB/MySQL

Częste, gdy desktopowe oprogramowanie współdziała z komponentami webowymi lub portalowymi. Ważne: konsekwentne użycie utf8mb4, InnoDB jako silnik, przemyślana strategia transakcji i indeksowania. FireDAC wspiera MariaDB/MySQL solidnie, jeśli parametry i typy są jasno określone.

Niezależnie od celu: zastąpienie BDE będzie najbardziej stabilne, jeśli równolegle powstaną standardy DB (wersjonowanie schematu, skrypty migracyjne, role/uprawnienia, backup/restore, monitoring).

Rekomendacje praktyczne dla planowalnej migracji FireDAC

Zmniejszyć zależności, zanim masowo wymienią komponenty

Jeśli SQL i logika datasetów rozproszone są po wielu formularzach, każda zmiana będzie kosztowna. Krok pośredni, grupujący SQL w kilku klasach dostępowych, znacznie redukuje powierzchnię migracji. Potem właściwa zmiana na FireDAC często przebiega szybciej i z mniejszym ryzykiem.

Wcześnie zmigrować transectionalny proces rdzeniowy

„Proste listy” są wygodne jako start, ale mniejszym ryzykiem jest wcześnie przenieść proces zawierający rzeczywiste aktualizacje i zależności. Gdy tam transakcje, typy danych i ścieżki błędów są uporządkowane, reszta migracji staje się bardziej przewidywalna.

Traktować deployment jako pracę równorzędną

Zamiana kodu to tylko połowa sukcesu. Wyjaśnijcie wcześnie:

  • Jakie biblioteki klienckie/sterowniki są potrzebne dla każdej bazy?
  • Jak będą wersjonowane i podpisywane te biblioteki (jeśli istotne) oraz jak je wdrażać?
  • Jak będą zarządzane parametry połączeń i kto będzie mógł je zmieniać?
  • Jaki jest proces wsparcia, gdy dostęp do DB zawiedzie?

Wykorzystać FireDAC jako kotwicę modernizacji – bez zaczynania od zera

Zastąpienie to okazja do wdrożenia istotnych ulepszeń jakościowych: parametryzacja, granice transakcji, logowanie, jednolite teksty błędów. To obniża koszty eksploatacji i sprawia, że późniejsze rozszerzenia (interfejsy, serwisy) będą znacznie mniej ryzykowne, bez konieczności reinventowania funkcjonalności aplikacji.

Podsumowanie: zastąpienie BDE FireDAC‑em to kontrolowana modernizacja — jeśli potraktuje się ją jako zagadnienie architektoniczne

BDE przez lata obsługiwała wiele aplikacji Delphi. Dziś stanowi jednak strukturalne ryzyko: dla 64‑bit, dla standaryzowanego deploymentu, dla współczesnych wymagań bezpieczeństwa i dla podłączenia do nowoczesnych baz danych. FireDAC to odpowiedni następca, ale nie jako „wymiana komponentu z dnia na dzień”. Bezpieczna ścieżka to stopniowa migracja z solidnym fundamentem, modułem pilotażowym, wiążącymi regułami dla typów danych i transakcji oraz testami potwierdzającymi równość wyników.

Jeśli chcą Państwo zaplanować zastąpienie BDE w sposób uporządkowany – włącznie z analizą stanu, ścieżką migracji i docelową architekturą FireDAC – najbardziej sensownym następnym krokiem jest techniczne porównanie warunków ramowych: https://net-base-software-gmbh.de/kontakt/