Synchronizacja danych z pliku EXCEL przez ODBC – łączenie stringów (kilku kolumn w jedną)
W wersjach AMODIT od 220630 lub nowszych może wystąpić problem z łączeniem danych liczbowych z danymi tekstowymi podczas korzystania ze źródła danych jakim jest plik Excel podłączony przez sterownik ODBC. W artykule podajemy wskazówki, jak obejść ten problem.
Przedstawienie problemu
Załóżmy, że w konfiguracji słownika zewnętrznego lub źródła danych wprowadziliśmy zapytanie SQL następującej treści:
Select [Dostawca SAP ID] , [Nazwa dostawcy] + ' <'+ [Dostawca SAP ID] + '>' as Nazwa_dostawcy, [Kod podatkowy 1]+'|'+[Dostawca SAP ID]+'|'+ [Miejscowość] +'|'+ [Kod pocztowy] +'|'+ [Kraj1] as Opis from [Arkusz1$]
Kolumna [Dostawca SAP ID] zawiera liczbowy identyfikator. W takiej sytuacji podczas synchronizacji słownika lub źródła danych w logu systemowym AMODIT może być rejestrowany następujący błąd:
ERROR [22018] [Microsoft][ODBC Excel Driver] Data type mismatch in criteria expression.
Proponowane rozwiązanie
Dla ‘ODBC Excel Driver’ należy dodać konwertowanie takich liczb na tekst za pomocą funkcji CSTR(). Skorygowane powyższe zapytanie wygląda następująco:
Select [Dostawca SAP ID] , [Nazwa dostawcy] + ' <'+ CSTR([Dostawca SAP ID]) + '>' as Nazwa_dostawcy, [Kod podatkowy 1]+'|'+CSTR([Dostawca SAP ID])+'|'+ [Miejscowość] +'|'+ [Kod pocztowy] +'|'+ [Kraj1] as Opis from [Arkusz1$]
Dla innych źródeł danych, np. zapytanie do bazy danych MS SQL, należy użyć funkcji: CAST(), CONVERT().