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;
}