Prüfen ob eine Resulttable vorhanden ist, einen Datensatz hat und mindestens ein Feld

Hintergrund der Prüfung: Das Abholen über Primärschlüssel liefert bei Nicht-Enthalten des Schlüssels eine Tabelle mit einem Datensatz aber ohne Felder

Der unten stehende Code kann verwendet werden um über die Script If Bedingung zu prüfen ob der Datensatz vorhanden ist.


// Nur wenn die Ergebnistabelle vorhanden ist

var idList = access.GetResultTable("IdList");

if (idList == null) return false;


// Nur wenn mind ein Datensatz vorhanden ist

if (idList.RecordCount == 0) return false;

var currentRecord = idList.GetRecord(0);


// Und mindestens ein Feld enthalten ist

return (currentRecord.Fields.Length > 0);



Zugreifen auf Result-Table

ResultTable table = access.GetResultTable("FFSearchResult");

if (table.RecordCount > 0)

{…}




Wert aus Result-Table lesen

WorkflowRecord Suggest = table.GetRecord(0);
  if (Suggest.GetValue("Similarity") == "100")
  {…}


Neue Spalte hinzufügen

record.Add("FoundRecord","");




Letztes Zeichen entfernen

if (record["text"].EndsWith(",") && record["text"].Length > 1)

{

    record["text"] = record["text"].Substring(0, record["text"].Length - 1);

}




Erstes Zeichen entfernen

if (record["text"].StartsWith(",") && record["text"].Length > 1)
{
    record["text"] = record["text"].Substring(1);
}


Prüfen ob Zeichen enthalten

if(record["text"].Contains(",,")) .....




Alle Feldinhalte ins LOG schreiben

String message = "";
foreach (var kvp in record)
{
message += kvp.Key + ":" + kvp.Value + ", ";
}
logger.Info("Admin","DoWorkflow",0,message);





Überflüssige Leerzeichen aus einem Feld entfernen

record["Feld"] = record["Feld"].Replace(" ","");




MD5 Hash aus Text berechnen


System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

byte[] textToHash = System.Text.Encoding.Default.GetBytes (record["Input"]);
byte[] result = md5.ComputeHash(textToHash);

record["Output"] = System.BitConverter.ToString(result).Replace("-","");

 
Tipp: Wenn ihr in TSQL die Funktion hashbytes() auf ein nvarchar Feld verwendet, dann müsst ihr in .NET ein System.Text.Encoding.Unicode.GetBytes verwenden, um vergleichbare Ergebnisse zu bekommen.



In ResultTableSequence Activity:

record["Name des Feldes in neuem Record"] = context.Parent.Record["Name des Feldes im alten Record"];




Pause in Workflow (ms):

System.Threading.Thread.Sleep(100);




Ein Feld bis zu einem bestimmten Zeichen (z.B. Komma) auslesen:

if (record["Feldname"].Contains(","))
{
    record["Feldname"]= record["Feldname"].Substring(0,record["Feldname"].IndexOf(","));
}




AddressDoctor Problem mit mehreren Stadtnamen (Ort, Teilort, usw.) in Rückgabe bei bestimmten Ländern beheben:


record["city"] = (record["city"].Contains(",") ? record["city"].Substring(0, record["city"].IndexOf(',')) : record["city"]);

Oder:

record["city"] = record["city"].Split(',')[0];


Ein Feld bis zu einer Zahl auslesen (z.B. bei AddressDoctor Ortsnamen Rückgabe mit Zahlen, wie "Bern 22" ):

var value = record["Feldname"];
var hasDigit = false;
var position = 0;
for(var index = 0; index < value.Length; index++)
{
  if(char.IsDigit(value[index]))
  {
    hasDigit = true;
    position = index;
    break;
  }
}
if(hasDigit)
{
    record["Feldname"]= record["Feldname"].Substring(0,position);
}

Oder als Einzeiler:

record["Feldname"] = record["Feldname"].Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' })[0].Trim();


Prüfen, ob ein Feld eine Zahl beinhaltet:

if (record["Feldname"].Any(x=> char.IsDigit(x))) 


Prüfen, ob ein Feld einen Buchstaben beinhaltet:

if (record["Feldname"].Any(x=> char.IsLetter(x)))


IBAN Format und Checksumme prüfen:

// Check IBAN Format and Checksum
// Language: C#
// Last editied by: friedel.voelker@omikron.net, 2017-04-24

public static bool IsIBAN(this string strIBAN) {
    if (String.IsNullOrEmpty(strIBAN)) {
        // check for empty input
        return false;
    } else if (!(System.Text.RegularExpressions.Regex.IsMatch(strIBAN, @"^[a-zA-Z]{2}[- 0-9a-zA-Z]"))) {
        // check format       
 return false;
    } else {
// clear blanks and swap country + checksum from head to tail
        string ibanCleared = strIBAN.ToUpper().Replace(" ","").Replace("-","");
        string ibanSwapped = ibanCleared.Substring(4) + ibanCleared.Substring(0,4);
        // calculate checksum
        string sum = ibanSwapped.Aggregate("", (current, c) => current + (char.IsLetter(c) ? (c - 55).ToString() : c.ToString()));
        var d = decimal.Parse(sum);
        return ((d % 97) == 1);
    }
}



Bundesland aus dem Kreisgemeindeschlüssel erzeugen:

if (record["OMI_Municipalitycode"] != "")

{
record["OMI_Municipalitycode"] = record["OMI_Municipalitycode"].Substring(0,2);
}


switch (record["OMI_Municipalitycode"])

{
case "01":

record["State"] = "Schleswig-Holstein";

break;

case "02":

record["State"] = "Hamburg";

break;

case "03":

record["State"] = "Niedersachsen";

break;

case "04":

record["State"] = "Bremen";

break;

case "05":

record["State"] = "Nordrhein-Westfalen";

break;

case "06":

record["State"] = "Hessen";

break;

case "07":

record["State"] = "Rheinland-Pfalz";

break;

case "08":

record["State"] = "Baden-Württemberg";

break;

case "09":

record["State"] = "Bayern";

break;

case "10":

record["State"] = "Saarland";

break;

case "11":

record["State"] = "Berlin";

break;

case "12":

record["State"] = "Brandenburg";

break;

case "13":

record["State"] = "Mecklenburg-Vorpommern";

break;

case "14":

record["State"] = "Sachsen";

break;

case "15":

record["State"] = "Sachsen-Anhalt";

break;

case "16":

record["State"] = "Thüringen";

break;
}
  • No labels