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.
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();