SOG-Helpcenter Logo SOG Business - Software

Sql-Befehle auf Basis von Objektlisten


Um mit einer Liste von Objekten SQL-Befehle auszuführen wurde die Klasse MappedObjectBulkCopyConnector geschaffen.
Sie bietet Funktionen um zum Beispiel die objektliste in eine Temp-Tabelle zu laden, oder auch eine where-Bedingung auf diese Objekte zu formulieren.

 

Dabei wird die Objektliste immer in eine Temp-Tabelle geladen. Dieser Vorgang basiert immer auf einem Spaltenmapping.

Dieses bestimmt, wie die Temp-Tabelle aufgebaut ist, und welche Werte aus den Objekten in der Tabelle landen.


Wofür kann das verwendet werden?

 

Ist es notwendig, alle Vorgangspositionen zu einer liste von Artikeln zu ermitteln, ist das wie folgt machbar:

 

IEnumerable<Artikelstamm> artikelListe =...

 

SOGDbCmd cmd = new SOGDbCmd();

 

// Stellt dar, welche Spalten im Ziel an welche Eigenschaft im Objekt gebunden werden.

ColumnMap<Artikelstamm>[] map =

{

    new ColumnMap<Artikelstamm>(AuftragsPosition.C_FIRMA, artikel => artikel.m_firma),

    new ColumnMap<Artikelstamm>(AuftragsPosition.C_SA2, artikel => artikel.m_sa),

    new ColumnMap<Artikelstamm>(AuftragsPosition.C_ART, artikel => artikel.m_art)

};

 

MappedObjectBulkCopyConnector.ExistsInObjects(cmd, artikelListe, AuftragsPosition.TABLENAME, map);

 

 

AuftragsPositionDataSet positionen = Dbs.GetTable<AuftragsPositionTable>().ListObjects(new SOGGetRefObjectListEventArgs(cmd));

 

 

Oder einfach nur Daten in eine Temp-Tabelle laden

 

IEnumerable<Artikelstamm> artikelListe =...

 

SOGDbCmd cmd = new SOGDbCmd();

 

// Stellt dar, welche Spalten im Ziel an welche Eigenschaft im Objekt gebunden werden.

ColumnMap<Artikelstamm>[] map =

{

    new ColumnMap<Artikelstamm>(Artikelstamm.C_FIRMA, artikel => artikel.m_firma),

    new ColumnMap<Artikelstamm>(Artikelstamm.C_SA, artikel => artikel.m_sa),

    new ColumnMap<Artikelstamm>(Artikelstamm.C_ART, artikel => artikel.m_art)

};

 

// Angabe des Tabellennamen zum Schluss, um die Spalteninformationen zu ermitteln (für Datentypen und eventuelle Indizes)

string tempTable = MappedObjectBulkCopyConnector.WriteToTempTable(artikelListe, map, Artikelstamm.TABLENAME);