Ok, das hier ist echt ein bisschen speziell. Jede Einrichtung die Leistungen nach dem SGB erbringt kann in Deutschland eine eindeutige Identifikationsnummer beantragen - die sogenannte IK-Nummer (siehe http://www.therapedia.de/wiki/index.php/IK-Nummer)
Eine IK-Nummer lässt sich auf Gültigkeit prüfen:
Die ersten 2 Ziffern (“Klassifikation”) kennzeichnen die Art der Einrichtung oder die Personengruppe
Die Ziffern 3 und 4 (“Regionalbereich”) kennzeichnen das Bundesland der Einrichtung
Die Ziffer 5 bis 8 (“Seriennummer”) werden fortlaufend vergeben
Die Ziffer 9 dient als Prüfziffer
Hier das Snippet für die Prüfung dieser Nummer:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public bool IstIKGueltig(string IKNr)
{
bool retVal = false;
int ik1 = Quersumme(Int32.Parse(IKNr.Substring(0, 1)) * 2);
int ik2 = Int32.Parse(IKNr.Substring(1, 1));
int ik3 = Quersumme(Int32.Parse(IKNr.Substring(2, 1)) * 2);
int ik4 = Int32.Parse(IKNr.Substring(3, 1));
int ik5 = Quersumme(Int32.Parse(IKNr.Substring(4, 1)) * 2);
int ik6 = Int32.Parse(IKNr.Substring(5, 1));
int ikSum = (ik1 + ik2 + ik3 + ik4 + ik5 + ik6);
string ikPruef = ikSum.ToString().Substring(ikSum.ToString().Length - 1, 1);
if (Int32.Parse(IKNr.Substring(6, 1)) == Int32.Parse(ikPruef))
retVal = true;
return retVal;
} |
Hier noch die Funktion zur Ermittlung der Quersumme:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| private int Quersumme(int iNumber)
{
string strNumbers = iNumber.ToString();
iNumber = 0;
List lstParts = new List();
foreach (char ch in strNumbers)
{
lstParts.Add(Convert.ToInt32(ch.ToString()));
}
foreach (int i in lstParts)
{
iNumber = iNumber + i;
}
return iNumber;
} |
Manchmal ist es wichtig, dass man die vergebene ID in einer Tabelle auf dem MS-SQL-Server kennt.
Das ist mit dem folgenden Statement möglich [id = auto increment Spalte]:
INSERT INTO TABELLE(meinfeld)
OUTPUT INSERTED.id
VALUES(‘meineintrag’)
Innerhalb von .NET-Source lässt sich das Statement mit dem OleDbReader / SqlReader problemlos ausführen und auswerten…
Die aktuelle Assembly-Version kann man wie folgt auslesen:
Windows-Forms-Anwendung
Application.Productversion
Windows-Service / DLL
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
Wer mal auf die Schnelle einen ConnectionString für einen Datenzugriff unter .NET braucht:
Auf dieser Webseite sind ConnStrings für jeden erdenklichen Zugriff zu finden…
http://www.connectionstrings.com
(Danke an Thomas Br. / Thomas G.)
Bei der Erstellung (Konvertierung) von TIF-Images kann man im Bereich der TIF-Kompression einiges einstellen. Allerdings bedarf es hier eines Encoders sowie einer EncoderInfo-Hilfsfunktion:
private static ImageCodecInfo GetEncoderInfo(string mimeType)
{
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (int i = 0; i < encoders.Length; i++)
{
if (encoders[i].MimeType == mimeType)
return encoders[i];
}
return null;
}
Die eigentliche Umsetzung ist dann relativ simple:
Image img = Image.FromFile(“C:\\TestDatei.jpg”);
//z.B. TIFF FAX G4 ERZEUGEN
ImageCodecInfo ImgCodecInfo = GetEncoderInfo(“image/tiff”);
Encoder ImgEnc = Encoder.Compression;
EncoderParameters ImgEncParas = new EncoderParameters(1);
EncoderParameter ImgEncPara = new EncoderParameter(ImgEnc, (long)EncoderValue.CompressionCCITT4);
ImgEncParas.Param[0] = ImgEncPara;
//SPEICHERN
img.Save(“C:\\NeuerDateiName.tif”, ImgCodecInfo, ImgEncParas);
Um einen Countdown in Minuten und Sekunden (25:37…25:36…) auf einem Windows Form zu erstellen brauchen wir:
- ein Label (label1)
- einen Timer (timer1)
- eine kleine Funktion (ConvertToTime)
Erstmal zwei kleine Variablen:
long CountDownTime = 1800;
//Sekunden, die heruntergezählt werden
int CountDownAbgelaufen = 0
//Lässt den Countdown negativ weiterlaufen
Jetzt die Funktion, die uns ein Wert in das passende Format zurlegt:
public string ConvertToTime(long tickCount)
{
long seconds = tickCount;
string val = (seconds / 60).ToString(“00″) + “:” + (seconds % 60).ToString(“00″);
return val;
}
Das Form_Load():
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = ConvertToTime(CountDownTime);
timer1.Enabled = true;
}
Das timer1_tick()-Event:
private void timer1_Tick(object sender, EventArgs e)
{
if (CountDownTime == 0)
CountDownAbgelaufen = 1;
if (CountDownAbgelaufen == 0)
CountDownTime–;
else
CountDownTime++;
if (CountDownAbgelaufen == 0)
label1.Text = ConvertToTime(CountDownTime);
else
{
label1.Text = “- “ + ConvertToTime(CountDownTime);
label1.ForeColor = Color.Red;
}
}
Fertig!
Während man innerhalb einer Windows-Forms-Anwendung den aktuellen Pfad zur EXE-Datei über
Application.StartupPath;
abrufen kann, steht diese Funktion in einer DLL nicht zur Verfügung, da der Namespace System.Windows.Forms natürlich nicht genutzt werden kann…
Hier hilft diese Syntax:
typeof(MyClassName).Assembly.Location;