Funkcje dodatkowe programu Comarch ERP Optima pozwalają na zaimplementowanie w programie niestandardowych, przydatnych dla użytkownika funkcjonalności. Jedną z nich może być możliwość importu danych z plików np. cenniki, kartoteki itp.

Aby utworzyć własną "funkcję dodatkową" dla Comarch ERP Optima, która pozwoli na otwarcie i odczytanie pliku XLS, należy w programie dodać własny skrypt.

Przykładowy skrypt składa się z dwóch części - pierwsza SQL, która pozwala na wybranie  przez użytkownika pliku XLS, druga JS (nieco zmodyfikowana składnia JavaScript), która otworzy plik i odczyta wartości znajdujące się w pierwszej kolumnie arkusza o nazwie Arkusz1.

Modyfikacja kodu JS dla Comarch ERP Optima w stosunku do standardowych skryptów JS polega na użyciu zamiast znaków { i } odpowiednio znaków \{ i \}.

 

[SQL]
@PAR ?@Fs255(File, Open, 'Pliki Excel (*.xls)|*.XLS', *.*)|sNazwaPliku|&Wybierz plik:@? PAR@
Select NazwaPliku={_Q??sNazwaPliku}

[JS]
var shell = new ActiveXObject ('WScript.Shell')
var SciezkaDoPliku = Recordset.Fields("NazwaPliku").Value
var sqlConn = new ActiveXObject("ADODB.Connection")
var sqlRS = new ActiveXObject("ADODB.Recordset");

sqlConn.Provider = 'Microsoft.Jet.OLEDB.4.0'
sqlConn.ConnectionString = 'Data Source=' + SciezkaDoPliku + ';Extended Properties="Excel 8.0;HDR=YES;IMEX=1;"'

sqlConn.Open()

var sqlStm1 = "SELECT * FROM `Arkusz1$`"

try\{

sqlRS = sqlConn.Execute( sqlStm1 );

while (!sqlRS.EOF)
\{
shell.Popup(sqlRS.Fields(0).Value)
sqlRS.MoveNext()
\}

sqlRS.Close()

\}catch (e) \{
shell.Popup("Błąd: " + e.description)
\}

sqlConn.Close()

shell.Popup("Koniec")

Przykład ilustruje otwarcie pliku XLS za pomocą sterownika Microsoft Jet OLEDB 4.0, który jest standardowo wbudowany w system Windows. Za pomocą tego sterownika można również z powodzeniem otwierać pliki CSV oraz TXT (wymagana zmiana w connection string oraz zapytaniu SELECT).

W przykładzie warto zwrócić uwagę na wiersz inicjujący podłączenie do arkusza (connection string), w którym użyto parametrów: HDR - (HDR=YES oznacza, że w pierwszym wierszu arkusza zawarte są kolumny nagłówka) oraz IMEX (IMEX=1 oznacza, że wartości w komórkach arkusza będą odczytywane jako tekst).

Sterownik Microsoft Jet OLEDB 4.0 nie pozwala niestety na otwieranie plików XLSX. Aby otworzyć pliki XLSX należy zainstalować np. dodatkowy sterownik Microsoft.ACE.OLEDB.12.0 z pakietu AccessDatabaseEngine, który można pobrać ze stron Microsoft (wersja co najmniej 2007). W prezentowanym skrypcie należy wówczas zamienić 2 linie określające sterownik i "connection string" na następujące:

 

sqlConn.Provider = 'Microsoft.ACE.OLEDB.12.0'
sqlConn.ConnectionString = 'Data Source='+ SciezkaDoPliku +';Extended Properties="Excel 12.0 XML;HDR=YES;IMEX=1;"'

 

oraz dokonać korekty w sekcji SQL, która pozwoli na wybór pliku XLSX:

 

@PAR ?@Fs255(File, Open, 'Pliki Excel (*.xlsx)|*.XLSX', *.*)|sNazwaPliku|&Wybierz plik:@? PAR@

 

Więcej funkcji dodatkowych dla Comarch ERP Optima.

Więcej o rozwiązaniach autorskich.