In der ISO3166 Codetabelle sind geographische Einheiten durch Kürzel aufgeführt. Auf Wikipedia findet sich hierzu ein sehr guter Artikel. Diese Codierung wird unter anderem in den von Windows bekannten Länderpulldowns verwendet. Will man z.B. die AD Attribute eines Benutzers per LDAP füllen oder ändern reicht es nicht nur den Namen des Landes anzugeben. Vielmehr ist hier eine Änderung von drei Attributen notwendig:
co c countryCode
co enthält den englischen Namen des Landes in Grossbuchstaben c enthält das ISO3166-1 alpha-2 Kürzel countryCode enthält den numerischen ISO3166-1 numeric Code
Für Deutschland würde das so aussehen: co=GERMANY c=DE countryCode=276
Um diese Werte einfach einbinden zu können habe ich eine .dll geschrieben, die hier kostenlos heruntergeladen werden kann. Die Quelle der Daten ist oben genannter Wikipedia- Artikel, der unter http://en.wikipedia.org/wiki/ISO_3166-1 zu finden ist.
Die Eckdaten sind: Namespace: rsCodelist Class: ISO3166 Funktionen: GetALPHA2, GetALPHA3, GetNUMERIC
Das Einbinden in VB.NET könnte nachdem die .dll referenziert wurde z.B. so aussehen:
... Dim ALPHA2 As String = nothing Dim CList As New rsCodelist.ISO3166() ALPHA2 = CList.GetALPHA2(Form1.Länderpulldownname.SelectedItem) ...
Dies würde den Alpha-2 Code, d.h. in obigem Beispiel das Kürzel DE zurückliefern. Analog dazu würden GetALPHA3 den Alpha-3 Code und GetNUMERIC den numerischen Wert zurückliefern.
Will man ein Pulldown mit den englischen Ländernamen erzeugen, so kann man z.B. folgendes Codeschnipsel verwenden:
... Dim CList As New rsCodelist.ISO3166() For Each country In CList.Fetch pCountry.Items.Add(country.Key) Next ...
Für die Richtigkeit der Daten und des Codes übernehm ich selbstverständlich keine Haftung. Eine kleine Warnung noch: Ich bin VB Einsteiger! ;-) Soll heissen: Wenn jemand Verbesserungsvorschläge hat- her damit! Ich lerne gern dazu. |