Zum Hauptinhalt springen
Version: Classic

Generic SQL

Konfiguration​

<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside generic SQL address provider -->
<AddressProvider id="7E50AA46-A035-4F11-B44F-BBCBAB4780B7" Title="My DB Soure">
<SearchParameters>
<SearchParameter Name="firstName" Label="Vorname/Name" Type="String" Length="100" Sort="1" />
</SearchParameters>
<ConnectionString>{ConnectionString}</ConnectionString>
<ConnectionProvider>System.Data.SqlClient</ConnectionProvider>
<Query>
SELECT * FROM Users WHERE FirstName Like '%' + @firstName + '%'
</Query>
<Mapping>
<Map Source="CompanyName" Target="Company_Name" />
<Map Source="Title" Target="Person_Title" />
<Map Source="FirstName" Target="Person_FirstName" />
<Map Source="LastName" Target="Person_LastName" />
<Map Source="Birthday" Target="Person_BirthDate" />
<Map Source="Street" Target="Company_Street" />
<Map Source="Zip" Target="Company_ZipCode" />
<Map Source="City" Target="Company_City" />
<Map Source="FaxBusinessDirect" Target="FaxDirect" />
<Map Source="EmailBusinessDirect" Target="EmailDirect" />
<Map Target="Company_CountryShortCode">
<Map.SourceExpression>
function main()
{
switch(source('Country'))
{
case 'Albanien': return 'AL';
case 'Andorra': return 'AD';
case 'Aserbaidschan': return 'AZ';
case 'Belgien': return 'BE';
case 'Bosnien und Herzegowina': return 'BA';
case 'Bulgarien': return 'BG';
case 'Dänemark': return 'DK';
case 'Deutschland': return 'DE';
case 'Estland': return 'EE';
case 'Finnland': return 'FI';
case 'Frankreich': return 'FR';
case 'Georgien': return 'GE';
case 'Griechenland': return 'GR';
case 'Irland': return 'IE';
case 'Island': return 'IS';
case 'Italien': return 'IT';
case 'Kasachstan': return 'KZ';
case 'Kosovo': return 'XK';
case 'Kroatien': return 'HR';
case 'Lettland': return 'LV';
case 'Liechtenstein': return 'LI';
case 'Litauen': return 'LT';
case 'Luxemburg': return 'LU';
case 'Malta': return 'MT';
case 'Mazedonien': return 'MK';
case 'Republik Moldau': return 'MD';
case 'Monaco': return 'MC';
case 'Montenegro': return 'ME';
case 'Niederlande': return 'NL';
case 'Norwegen': return 'NO';
case 'Österreich': return 'AT';
case 'Polen': return 'PL';
case 'Portugal': return 'PT';
case 'Rumänien': return 'RO';
case 'Russland': return 'RU';
case 'San Marino': return 'SM';
case 'Schweden': return 'SE';
case 'Schweiz': return 'CH';
case 'Serbien': return 'RS';
case 'Slowakei': return 'SK';
case 'Slowenien': return 'SV';
case 'Spanien': return 'ES';
case 'Tschechien': return 'CZ';
case 'Türkei': return 'TR';
case 'Ukraine': return 'UA';
case 'Ungarn': return 'HU';
case 'Vatikanstadt': return 'VA';
case 'Vereinigtes Königreich': return 'GB';
case 'Weißrussland': return 'BY';

default: return 'CH';
}

return '';
}
</Map.SourceExpression>
</Map>
</Mapping>
</AddressProvider>
</AddressProvider>

Parameter​

  • id 7E50AA46-A035-4F11-B44F-BBCBAB4780B7
  • SearchParameter Liste mit allen Eingabemöglichkeiten
    • Name Eindeutige Id für den Parameter. Entspricht den Named Parameter für den Sql Query
    • Label Angezeigter Text vor dem Eingabefeld
    • Type Eingabetyp: String (Text), Long (Zahl), Boolean (Ja/Nein) oder Date (Datum)
    • Length Maximale Länge für Strings
    • Sort Sortierungswert gegenüber den anderen Parametern
  • Mapping Mapping auf primedocs Kontaktfelder, siehe Mapping
  • ConnectionString ConnectionString. Kann verschlüsselt sein.
  • ConnectionProvider System.Data.Odbc, System.Data.SqlClient, MySqlConnector, Oracle.ManagedDataAccess.Client
  • Title Der Titel, der dem Benutzer angezeigt wird.
  • Icon Base64-Icon, das dem Benutzer im Empfängerdialog angezeigt wird.

Query​

Der SQL Query muss in dem Format für die jeweilige Zieldatenbank sein. Da alle Suchparameter als SQL Parameter behandelt werden, muss der jeweilige SQL Parameter Syntax der Zieldatenbank eingehalten werden.

Beispiel: MS SQL​

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE '%' + @firstName + '%' AND LastName LIKE '%' + @lastName + '%'

Beispiel: MySQL​

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE Concat('%', @firstName, '%') AND LastName LIKE Concat('%', @lastName, '%')
warnung

ACHTUNG
Bei Oracle, Odbc und PostgreSQL muss die Reihenfolge der Platzhalter in der Query mit der Reihenfolge der "SearchParameters" übereinstimmen!

Beispiel: Oracle​

SELECT FirstName, LastName from Users
WHERE UPPER(NVL(FirstName, ' ')) Like UPPER('%' || :firstName || '%') AND UPPER(NVL(LastName, ' ')) Like UPPER('%' || :lastName || '%')

Beispiel: Odbc​

SELECT FirstName, LastName FROM Users
WHERE FirstName LIKE '%' + ? + '%' AND LastName LIKE '%' + ? + '%'

Beispiel: PostgreSQL​

SELECT FirstName, LastName FROM Users
WHERE UPPER(FirstName) LIKE UPPER('%' || ? || '%') AND UPPER(LastName) LIKE UPPER('%' || ? || '%')
warnung

ACHTUNG
Die Einschränkung der Reihenfolge hat zur Folge, dass ein Parameter in der Query genau einmal verwendet werden kann.

Folgende MS SQL Query kann nicht direkt zu Oracle oder Odbc übersetzt werden:

SELECT FirstName, MiddleName, LastName FROM Users
WHERE FirstName LIKE '%' + firstName + '%' OR MiddleName LIKE '%' + firstName + '%'

Wenn ein Parameter auf mehr als eine Spalte verglichen werden muss, dann können diese Spalten im SELECT mittels der jeweiligen Funktion des Datenbanksystems kombiniert werden:

Beispiel: Odbc​

SELECT STRING(FirstName, ' ', MiddleName) AS CompleteName, LastName FROM Users
WHERE CompleteName LIKE '%' + ? + '%'