CurrentRecordSetCopy

Beschreibung:

Liefert das aktuelle RecordSet für einen Container zurück. Hierbei werden etwaig angewandte Container-Filter und aktive Sortierungen beachtet. Werden im Container keine Datensätze angezeigt, liefert die Methode Null bzw. Nothing zurück.

Hinweis: Wir empfehlen, nach Erzeugung eines RecordSet-Objektes zunächst mittles Aufruf der Methode "MoveFirst" die Existenz mindestens eines Record-Objektes zu überprüfen.

 

Wichtiger Hinweis für die Verwendung des Parameters CursorModel mit dem Wert 2 (forward-only) unter Microsoft SQL Server: Die Datensätze eines forward-only-RecordSets müssen nach dessen Erstellung direkt und unmittelbar über eine "GotoNext"-Schleife ohne Interaktion vollständig durchlaufen werden. Anderenfalls kann es, wenn das RecordSet viele Zeilen enthält, am Datenbankserver zu einem ASYNC_NETWORK_IO-Wartezustand kommen, der dann andere Abfragen (vor allem Änderungen) auf dieselbe Tabelle blockiert.

Parameter:

Parametername

Typ

Beschreibung

CursorModel

Long

Optional.

Ermöglicht die Spezifikation des Datenbankcursormodells, das für den zurückgegebenen RecordSet genutzt werden soll.

 

Werte:

0 (Standardwert): Erzeugt ein RecordSet mit einem Datenbankcursormodell, welches innerhalb der combit CRM-Projektdatei spezifiziert werden kann:

 

...

<!-- DATA -->

<profile>

 <list name="">

  <list name="ExtendedSettings">

   <item name="COMRecordSetCursorDefault">2</item>

  </list>

...

 

Wird in der combit CRM-Projektdatei keine Eigenschaft COMRecordSetCursorDefault gefunden, so wird immer ein fully-dynamic RecordSet erzeugt. Mögliche Werte für die Eigenschaft sind: 1 – fully-dynamic RecordSet, 2 – forward-only RecordSet.

 

1: Erzeugt ein RecordSet mit fully-dynamic Datenbankcursor.

 

2: Erzeugt ein RecordSet mit forward-only Datenbankcursor. Ermöglicht deutliche Performance-Gewinne, insbesondere bei großen Datenmengen und komplexen Filterausdrücken, erlaubt aber lediglich das einmalige Durchlaufen in Vorwärtsrichtung durch den RecordSet.

 

Die Methoden RecordSet.DialogSelectRecord, RecordSet.DialogSelectRecordMultiple, RecordSet.SendBulkMail (bei anzuzeigendem integrierten Mail-Editor), RecordSet.MovePrevious, RecordSet.MoveLast, InputForm.DialogSelectRecordDropDown werden einen Scriptfehler werfen, wenn diese für einen forward-only RecordSet genutzt werden. Für diese Methoden muss der RecordSet explizit ohne forward-only (Werte 0 oder 1) erzeugt werden.

Rückgabewert:

RecordSet oder Null/Nothing

Beispiel VBScript:

' Gibt die Kommentare mehrerer Aktivitäten-Datensätze aus. Basis ist hierbei der Aktivitäten-Container der Kontakte-Ansicht einer combit_Large-Solution.

 

Dim oContainer : Set oContainer = cRM.CurrentProject.ActiveViews.ActiveView.CurrentInputForm(2).Containers.ItemByName("ID.Aktivitäten.ContactID#{ADD84570-956B-4079-8DE4-2B992DB3AEFE}")

Dim oCurrentRecordSet, oCurrentRecord

Set oCurrentRecordSet = oContainer.CurrentRecordSetCopy

 

If oCurrentRecordSet.MoveFirst Then

 

    Set oCurrentRecord = oCurrentRecordSet.CurrentRecord

    Dim sComment : sComment = ""

    Dim nCount : nCount = 0

 

    Do

        sComment = sComment & vbCrlf & vbCrlf & CStr(oCurrentRecord.GetContentsByName("Comment"))

        nCount = nCount + 1

    Loop Until Not oCurrentRecordSet.MoveNext

   

    Set oCurrentRecord = Nothing

    Call cRM.DialogMessageBox("Kommentar: " & sComment & vbCrlf & nCount, "Container.CurrentRecordSetCopy", vbOkOnly)

   

End If

Set oCurrentRecordSet = Nothing
Set
oContainer = Nothing

Beispiel C#-Script:

// Gibt die Kommentare mehrerer Aktivitäten-Datensätze aus. Basis ist hierbei der Aktivitäten-Container der Kontakte-Ansicht einer combit_Large-Solution.

 

ListContainers containers = cRM.CurrentProject.ActiveViews.ActiveView.CurrentInputForm(2).Containers;

Container container = containers.ItemByName("ID.Aktivitäten.ContactID#{ADD84570-956B-4079-8DE4-2B992DB3AEFE}");

RecordSet containerRecordSet = container.CurrentRecordSetCopy();

Record containerRecord;

 

if (containerRecordSet.MoveFirst())

{

    containerRecord = containerRecordSet.CurrentRecord;

    string comment = string.Empty;

    int count = 0;

 

    do

    {

        comment = comment + "\r\n" + "\r\n" + containerRecord.GetContentsByName("Comment");

        count++;

    } while (containerRecordSet.MoveNext() == false);

 

    containerRecord.Dispose();

 

    cRM.DialogMessageBox("Kommentar: " + comment + "\r\n" + count, "Container.CurrentRecordSetCopy", 0);

}

 

containerRecordSet.Dispose();