FindRecordByDupeCheckCriteria

Beschreibung:

Führt den Online-Dublettencheck anhand der übergebenen Werte und den definierten Kriterien für Dubletten aus.

Hinweis: Vor dem Aufruf von FindRecordByDupeCheckCriteria müssen die benötigten Felder per ViewConfig.DupeCheckCriteria ausgelesen werden.

Parameter:

Parametername

Typ

Beschreibung

sRecordID

String

ID des Datensatzes, welcher vom Dubletten-Check ausgeschlossen werden soll. Wenn dieser Parameter leer übergeben wird, dann werden alle Datensätze einbezogen.

sFieldContents1

String

Inhalt des ersten Kriteriums für den Dublettencheck.

sFieldContents2

String

Optional, Inhalt des zweiten Kriteriums für den Dublettencheck.

sFieldContents3

String

Optional, Inhalt des drittens Kriteriums für den Dublettencheck.

sFieldContents4

String

Optional, Inhalt des vierten Kriteriums für den Dublettencheck.

sFieldContents5

String

Optional, Inhalt des fünften Kriteriums für den Dublettencheck.

sFieldContents6

String

Optional, Inhalt des sechsten Kriteriums für den Dublettencheck.

sFieldContents7

String

Optional, Inhalt des siebten Kriteriums für den Dublettencheck.

sFieldContents8

String

Optional, Inhalt des achten Kriteriums für den Dublettencheck.

bUseCurrentQuery

Bool

Optional (Voreinstellung: False), gibt an, ob lediglich innerhalb des aktuellen Filters gesucht werden soll.

Rückgabewert:

RecordSet

Beispiel VBScript:

Dim sFieldsDupeCheck : sFieldsDupeCheck = cRM.CurrentProject.ActiveViews.ActiveView.Config.DupeCheckCriteria

Dim dicFieldsDupeCheck : Set dicFieldsDupeCheck = CreateObject("Scripting.Dictionary")

Dim aFieldsDupeCheck : aFieldsDupeCheck = Split(sFieldsDupeCheck, vbTab)

Dim sField, sUserInput

 

For Each sField in aFieldsDupeCheck

    sUserInput = cRM.DialogInputBox("Welcher Inhalt soll für das Feld """ & sField & """ für den Dublettencheck verwendet werden?", "RecordSet.FindRecordByDupeCheckCriteria")

   

    If (sUserInput <> "$CANCEL$") Then

        Call dicFieldsDupeCheck.Add(sField, sUserInput)

    Else

        Exit For

    End If

Next

 

Dim sUserInputInDictionary

Dim sFieldContent1 : sFieldContent1 = ""

Dim sFieldContent2 : sFieldContent2 = ""

Dim sFieldContent3 : sFieldContent3 = ""

Dim sFieldContent4 : sFieldContent4 = ""

Dim sFieldContent5 : sFieldContent5 = ""

Dim sFieldContent6 : sFieldContent6 = ""

Dim sFieldContent7 : sFieldContent7 = ""

Dim sFieldContent8 : sFieldContent8 = ""

Dim nCounter : nCounter = 0

 

If (dicFieldsDupeCheck.Count > 0) Then

    For Each sUserInputInDictionary in dicFieldsDupeCheck.Keys

        nCounter = nCounter + 1

       

        Select Case nCounter

            Case 1

                sFieldContent1 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 2

                sFieldContent2 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 3

                sFieldContent3 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 4

                sFieldContent4 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 5

                sFieldContent5 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 6

                sFieldContent6 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 7

                sFieldContent7 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

            Case 8

                sFieldContent8 = dicFieldsDupeCheck.Item(sUserInputInDictionary)

       End Select

    Next

End If

 

Set dicFieldsDupeCheck = Nothing

 

Dim oRecordSet : Set oRecordSet = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSetCopy

Call oRecordSet.FindRecordByDupeCheckCriteria("", sFieldContent1, sFieldContent2, sFieldContent3, sFieldContent4, sFieldContent5, sFieldContent6, sFieldContent7, sFieldContent8, False)

 

If (Not oRecordSet Is Nothing) Then

 

    If (oRecordSet.RecCount > 0) Then

       

        Call cRM.DialogMessageBox("Es wurde mindestens eine Dublette gefunden.", "RecordSet.FindRecordByDupeCheckCriteria", vbOkOnly)

       

    End If

 

End If

 

Set oRecordSet = Nothing

Beispiel C#-Script:

string fieldsDupeCheckCriteria = cRM.CurrentProject.ActiveViews.ActiveView.Config.DupeCheckCriteria;

System.Collections.Generic.Dictionary<string, string> dicFieldsDupeCheck = new System.Collections.Generic.Dictionary<string, string>();

string[] fieldsDupeCheck = fieldsDupeCheckCriteria.Split('\t');

string userInput = null;

 

foreach (string field in fieldsDupeCheck)

{

    userInput = cRM.DialogInputBox(@"Welcher Inhalt soll für das Feld """ + field + @""" für den Dublettencheck verwendet werden?", "RecordSet.FindRecordByDupeCheckCriteria");

 

    if (userInput != "$CANCEL$")

    {

        dicFieldsDupeCheck.Add(field, userInput);

    }

    else

    {

        break;

    }

}

 

int counter = 0;

string fieldContent1 = null;

string fieldContent2 = null;

string fieldContent3 = null;

string fieldContent4 = null;

string fieldContent5 = null;

string fieldContent6 = null;

string fieldContent7 = null;

string fieldContent8 = null;

RecordSet recordSet = null;

 

if (dicFieldsDupeCheck.Count > 0)

{

    foreach (var item in dicFieldsDupeCheck)

    {

        counter++;

 

        switch (counter)

        {

            case 1:

                fieldContent1 = item.Value;

                break;

            case 2:

                fieldContent2 = item.Value;

                break;

            case 3:

                fieldContent3 = item.Value;

                break;

            case 4:

                fieldContent4 = item.Value;

                break;

            case 5:

                fieldContent5 = item.Value;

                break;

            case 6:

                fieldContent6 = item.Value;

                break;

            case 7:

                fieldContent7 = item.Value;

                break;

            case 8:

                fieldContent8 = item.Value;

                break;

            default:

                break;

        }

    }

 

    recordSet = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSetCopy();

    recordSet.FindRecordByDupeCheckCriteria("", fieldContent1, fieldContent2, fieldContent3, fieldContent4, fieldContent5, fieldContent6, fieldContent7, fieldContent8, false);

 

    if (recordSet != null)

    {

        if (recordSet.RecCount > 0)

        {

            cRM.DialogMessageBox("Es wurde mindestens eine Dublette gefunden.", "RecordSet.FindRecordByDupeCheckCriteria", 0);

            recordSet.Dispose();

        }

    }

}