Zum Inhalt

Vorgänge und Wandeln

Die Vorgangsverwaltung ist ein zentraler Bestandteil der microtech COM-Aktiv-Schnittstelle. Über das SpecialObject AutoVorgang erstellen, bearbeiten und buchen Sie Vorgänge wie Angebote, Bestellungen oder Rechnungen programmatisch. Dieses Kapitel führt Sie durch den gesamten Workflow: vom Anlegen eines Vorgangs über das Hinzufügen von Positionen und Berechnungen bis hin zum Buchen, Stornieren und Wandeln.

Das Vorgangsobjekt wird wie alle SpecialObjects über GetSpecialObject bezogen:

Vorgangsobjekt erstellen
Set Vorgang = BpApp.GetSpecialObject(soVorgang) ' soVorgang = 1

Vorgänge erstellen und bearbeiten

Neuen Vorgang anlegen (Append)

Mit Append erstellen Sie einen neuen Vorgang. Als Parameter übergeben Sie die Vorgangsart (als numerischen Wert) und die Adressnummer des Kunden oder Lieferanten.

Vorgang anlegen (VBA)
Set Vorgang = BpApp.GetSpecialObject(1)
Call Vorgang.Append(Vorgangsart, AdressNummer)
Call Vorgang.Positionen.Add(Menge, Packungseinheit, ArtikelNummer)
Vorgang.Post

Die Vorgangsart entspricht der Nummer, die Sie in der microtech Software unter Bearbeiten > Parameter > Auftragsverwaltung > Vorgänge und Zwischenbelege > Arten finden.

Append + Cancel

Nach einem Append gefolgt von Cancel wird der Vorgang nicht gelöscht. Cancel verwirft lediglich die noch nicht gespeicherten Änderungen.

Bestehenden Vorgang bearbeiten (Edit)

Mit Edit öffnen Sie einen vorhandenen Vorgang anhand seiner Belegnummer zur Bearbeitung:

Vorgang bearbeiten (VBA)
Set Vorgang = BpApp.GetSpecialObject(1)
Call Vorgang.Edit(Belegnummer)
Call Vorgang.Positionen.Add(Menge, Packungseinheit, ArtikelNummer)
Call Vorgang.Post

Speichern und Verwerfen (Post / Cancel)

Nach dem Anlegen oder Bearbeiten eines Vorgangs stehen zwei Abschlussoperationen zur Verfügung:

Post schreibt alle Änderungen am Vorgang fest. Erst nach dem Aufruf von Post sind die Daten persistent gespeichert.

Cancel setzt den Vorgang auf seinen ursprünglichen Zustand zurück. War Post bereits aufgerufen, bleibt Cancel wirkungslos.

Zugriff auf das Vorgangs-DataSet

Über die Eigenschaft DataSet erhalten Sie nach einem Append oder Edit direkten Zugriff auf die Vorgangstabelle als AutoDataSet. Dies ist nützlich, wenn Sie Felder setzen müssen, die nicht direkt über das Vorgangsobjekt abgedeckt werden - etwa Rabattkennzeichen, Währung oder Umsatzsteuerkategorie.

Felder über das DataSet setzen
' Rabattkennzeichen deaktivieren
Vorgang.DataSet.Fields("RabKz").AsBoolean = False

' Generellen Rabattsatz setzen
Vorgang.DataSet.Fields("RabKz").AsBoolean = True
Vorgang.DataSet.Fields("RabSz").AsFloat = 9.98  ' Angabe in Prozent

Während Sie den Vorgang erstellen, können Sie über die DataSets jederzeit eingreifen und weitere erforderliche Informationen hinterlegen.

Protokolleinträge für Vorgänge

Ab Build 4094 können eigene Beschreibungen in die Protokolle eines Vorgangs eingebracht werden. Dazu wird über das NestedDataSet VPtk auf die Protokolltabelle zugegriffen.

Folgende Protokolltypen stehen zur Verfügung (numerische Werte 50–63): Erstellt (50), Geändert (51), Geprüft und Ok (52), Geprüft und Stopp (53), Frage (54), Info (55), Warnung (56), Fehler (57), Plus (58), Minus (59), Ok (60), Abbruch (61), Zurückgestellt (62), Geld (63). Die Typen „Erstellt" und „Geändert" haben einen Vorgabetext; alle anderen sind ohne Standardtext.

Jeder Eintrag kann im Feld NestedDataSet[VPtk].Fields['InfoLang'].Text mit bis zu 100 Zeichen beschrieben werden.

Protokolleinträge schreiben (Delphi)
hDataSet := FComApp.DataSetInfos['Vorgang'].CreateDataSet;
try
  hProtokoll := hDataSet.NestedDataSets['VPtk'];
  try
    hDataSet.First;
    hDataSet.Edit;
    try
      for i := 50 to 63 do
      begin
        hProtokoll.Append;
        hProtokoll.Fields['InfoImg'].Text := i;
        hProtokoll.Fields['InfoLang'].Text := 'Com Test ' + IntToStr(i);
        hProtokoll.Fields['Art'].AsInteger := Vorgangsart;
        hProtokoll.Fields['BelegNr'].AsString := BelegNr;
        hProtokoll.Post;
      end;
      hProtokoll.PostNestedDataSet;
      hDataSet.Post;
    except
      hProtokoll.Cancel;
      hDataSet.Cancel;
    end;
  finally
    hProtokoll := nil;
  end;
finally
  hDataSet := nil;
end;

Hinweis

Der Zugriff auf Protokollfelder muss über Field.Text erfolgen. Die Felder Art und BelegNr müssen ebenfalls gefüllt sein, damit alle Informationen und Aktionen im Protokoll zur Verfügung stehen.

Positionen bearbeiten

Über die Eigenschaft Positionen des Vorgangsobjekts erhalten Sie Zugriff auf das AutoVorgangPositionen-Objekt. Damit lassen sich Artikelpositionen hinzufügen, einfügen und konfigurieren.

Positionen hinzufügen (Add / Insert)

Add hängt eine neue Position am Ende der Positionsliste an. Insert fügt eine Position an der aktuellen DataSet-Position ein.

Beide Methoden erwarten drei Parameter: die Menge (als Gleitkommawert), die Einheit (z. B. "Stk", "Kiste" oder "Blatt") und die Artikelnummer.

Positionen hinzufügen
' Position am Ende anhängen
Call Vorgang.Positionen.Add(2, "Stk", "100")

' Position an aktueller Stelle einfügen
Call Vorgang.Positionen.Insert(1, "Stk", "200")

In vielen Fällen sind die bei Add bzw. Insert übergebenen Informationen ausreichend. Für weitergehende Anpassungen steht das Positions-DataSet zur Verfügung (siehe unten).

Zwischensummen einfügen

Mit InsertZwischenSumme wird an der aktuellen Position eine Zwischensummenposition eingefügt. Die Methode erwartet keine Parameter.

Zwischensumme einfügen
Call Vorgang.Positionen.InsertZwischenSumme

Platzhalter in der Vorgangsbezeichnung ersetzen (Format)

Wenn in der Vorgangsbezeichnung Platzhalter per #p definiert sind, kann die Methode Format diese gegen die Inhalte eines kommaseparierten Strings austauschen.

Platzhalter ersetzen
Call Vorgang.Positionen.Format("Wert1,Wert2,Wert3")

Stücklisten auflösen

Für Stücklistenpositionen stehen mehrere Methoden zur Verfügung, die analog zu den gleichnamigen Funktionen in der Vorgangserfassung arbeiten. Im Erfolgsfall liefern sie True zurück, bei einem Fehler oder wenn keine Stückliste vorhanden ist False.

StkListeAufrollen - Stückliste aufrollen (Unterpositionen wieder zusammenfassen).

StkListeEinrollen - Stückliste einrollen.

StkListeAufloesen - Stückliste vollständig auflösen.

StkListeAufloesenArtikel - Stückliste nach Artikeln auflösen.

StkListeAufloesenersteEbene - Nur die oberste Ebene der Stückliste auflösen.

Über die Eigenschaft StaFertigungsartikel (Boolean) kann eine Stücklistenposition als Fertigungsartikel ausgewiesen oder geprüft werden. Das DataSet muss sich dafür im Browse-Modus befinden.

Artikelpreise und -bezeichnungen einladen

ArtikelPreiseEinladen lädt die aktuellen Preise aller Artikelpositionen im Vorgang neu aus der Datenbank. Eventuell manuell geänderte Preise werden dabei verworfen. Wenn der Vorgang eine Meldung produziert (z. B. weil ein Preis unter dem Mindestverkaufspreis lag), ist der Rückgabewert False. Der Meldungstext steht dann in LastArtikelPreisMeldung bzw. ausführlicher in LastArtikelPreisMeldungLang.

ArtikelBezEinladen lädt die Bezeichnungen aller Artikelpositionen neu aus der Datenbank. Manuell geänderte Texte werden verworfen.

Lieferbarkeit und Bestandsinformationen

Auf Positionsebene stehen umfangreiche Bestandsinformationen als Nur-Lese-Eigenschaften zur Verfügung. Die Werte entsprechen den Tooltips der Spalte „L.Info" (Lieferinfo) in der Vorgangserfassung.

LieferbarStatus - Gibt den Lieferstatus einer einzelnen Position zurück: 0 (Undefiniert), 1 (nicht lieferbar), 2 (teillieferbar), 3 (lieferbar).

Verfuegbar - Anzahl der als verfügbar bestimmten Artikel im Lagerbestand.

Bestand - Gesamtanzahl der Artikel im Bestand.

Kundenbestellung - Anzahl der Artikel in Kundenbestellungen.

Reserviert - Anzahl der als reserviert geltenden Artikel.

Bestellt - Anzahl der als bestellt geltenden Artikel.

Bestelleingang - Anzahl der Artikel im Bestelleingang.

ErwarteterBestelleingang - Anzahl des erwarteten Bestelleingangs.

ErwarteterBestelleingangDatum - Datum des erwarteten Bestelleingangs (gibt 0 zurück, wenn kein Eingang erwartet wird).

Über StaReserviert (Boolean, les- und schreibbar) kann eine Position als reserviert markiert oder der Reservierungsstatus gelesen werden. Das DataSet muss sich im Browse-Modus befinden.

Position reservieren (Delphi)
SpecialObj := BpApp.GetSpecialObject(1);
try
  SpecialObj.Append(30, '10000');
  SpecialObj.Positionen.Add(1, 'Stk', '1');
  SpecialObj.Positionen.StaReserviert := True;
  Result := SpecialObj.DataSet.Fields['BelegNr'].AsString;
  SpecialObj.Post;
finally
  SpecialObj := nil;
end;

Auf Vorgangsebene gibt LieferbarStatus (Methode des Vorgangsobjekts) den Aufzählungstyp LieferbarStatus zurück, der die Gesamtlieferbarkeit des Vorgangs beschreibt. Die Rückgabe enthält nur dann einen Wert, wenn folgende Bedingungen zutreffen:

  • Die Vorgangsart gehört zur Gruppe „Bestellung vom Kunden".
  • In den Parametern der Vorgangsart ist das Kennzeichen „Teillieferbarinfo-Felder bereitstellen (rechenintensiv)" aktiv.
  • Der Vorgang verfügt über keine abgearbeiteten, aktiven Buchungsparameter.

Zugriff auf das Positions-DataSet

Über Positionen.DataSet erhalten Sie die Positionstabelle als AutoDataSet. Damit können Sie Felder setzen, die über Add/Insert nicht direkt angesprochen werden - etwa individuelle Einzelpreise oder positionsbezogene Rabattsätze.

Einzelpreis über das Positions-DataSet setzen (VBA)
Call Vorgang.Positionen.Add(1, "", "100")
Vorgang.Positionen.DataSet.Edit
Set Betrag = Vorgang.Positionen.DataSet.Fields("EPr").GetEditObject(etBetragGrp)
Betrag.Clear
Betrag.GesBrutto = 10
Betrag.Save
Vorgang.Positionen.DataSet.Post
Positionsbezogenen Rabatt setzen
Vorgang.DataSet.Fields("RabKz").AsBoolean = True
Vorgang.Positionen.DataSet.Edit
Vorgang.Positionen.DataSet.Fields("RabSz").AsFloat = 5.86  ' Angabe in Prozent
Vorgang.Positionen.DataSet.Post

Berechnungen im Vorgang

Das Vorgangsobjekt stellt mehrere Berechnungsfunktionen bereit (ab Build 2685). Diese Funktionen können optional aufgerufen werden - wird keine davon manuell ausgelöst, führt die microtech Software die jeweilige Berechnung automatisch beim Speichern (Post) durch.

Wird eine der Berechnungsfunktionen hingegen explizit aufgerufen, wird der zugehörige Automatismus für diesen Vorgang deaktiviert. Das ist nützlich, wenn Sie eine Berechnung gezielt verhindern oder kontrolliert durchführen möchten.

Rabattberechnung (CalculateRabatt)

CalculateRabatt berechnet Rabatte unter Berücksichtigung der in der microtech Software hinterlegten Mindestverkaufspreise und Rabattkonditionen. Die Funktion umfasst dabei die Funktionalität von CalculatePreis und berechnet die maximal möglichen Abweichungen.

Typischer Anwendungsfall: Rufen Sie CalculateRabatt direkt nach Append auf, um die automatische Rabattberechnung beim Speichern zu deaktivieren. Anschließend können Sie Preise manuell setzen, ohne dass die Software sie beim Post überschreibt.

Preisberechnung (CalculatePreis)

CalculatePreis rechnet die Beträge des aktuellen Vorgangs aus den vorhandenen Werten neu durch. Es werden dabei keine neuen Vorgabewerte aus Stammdaten ermittelt - nur die vorhandenen Positionswerte werden neu aufsummiert.

Steuerberechnung (CalculateSteuer)

CalculateSteuer berechnet die Steuer im Vorgang neu. Diese Funktion ist sinnvoll, wenn sich die Zieladresse des Vorgangs geändert hat - beispielsweise wenn die abweichende Lieferadresse nicht innerhalb der EU liegt und eine andere Steuerregelung greift.

Frachtberechnung (CalculateFracht)

Ab Build 3010. CalculateFracht ermittelt die Versandarten erneut mit den aktuellen Werten des Vorgangs. Hat sich z. B. die Postleitzahl oder das Land des Empfängers geändert, kann so die Fracht neu berechnet werden. Die Funktion entspricht der Neuberechnung in der Vorgangseingabemaske.

Währungsberechnung (CalculateWaehrung)

CalculateWaehrung rechnet den Vorgang in eine bestimmte Währung um. Es werden die im Programm hinterlegten Wechselkurse verwendet. Setzen Sie vorher das Währungsfeld im DataSet:

Währungsumrechnung
SpO.DataSet.Fields('Waehr').Text := 'USD';
SpO.CalculateWaehrung;

DoCalculateOnPost

Ab Build 5052. Die Eigenschaft DoCalculateOnPost (Boolean) steuert, ob beim Post eine automatische Korrektur von Rabatt und Preis durchgeführt wird. Setzen Sie den Wert auf False, um die Nachberechnung zu unterbinden - z. B. wenn Sie lediglich die Stückliste auf- oder einrollen möchten.

Wichtig

Der Wert muss nach jedem Edit oder Append erneut gesetzt werden.

Vollständiges Beispiel: Vorgang mit Berechnungen (Delphi)
BpApp := CreateOleObject('BpNT.Application');
BpApp.Init('Mandantenname', '', 'Anmeldename', 'Passwort');
BpApp.SelectMand('Ihr Mandant');

SpO := BpApp.GetSpecialObject(1);    // soVorgang
SpO.Append(70, '10000');

// Automatische Rabattberechnung beim Speichern deaktivieren
SpO.CalculateRabatt;

SpO.Positionen.Add(2, '', '1');
SpO.Positionen.Add(2, '', '2');

// Einzelpreis manuell setzen
SpO.Positionen.DataSet.Edit;
BGrp := SpO.Positionen.DataSet.Fields('Epr').GetEditObject(2);
BGrp.GesNetto := 9;
BGrp.Save;
SpO.Positionen.DataSet.Post;

SpO.Positionen.Add(2, '', '3');
SpO.Positionen.DataSet.Edit;
BGrp := SpO.Positionen.DataSet.Fields('Epr').GetEditObject(2);
BGrp.GesNetto := 5;
BGrp.Save;
SpO.Positionen.DataSet.Post;

// Preise neu berechnen
SpO.CalculatePreis;

// Währung umrechnen
SpO.DataSet.Fields('Waehr').Text := 'USD';
SpO.CalculateWaehrung;

// Steuer für EU-Ausland neu berechnen
SpO.DataSet.Fields('UStKat').AsInteger := 2;
SpO.DataSet.Fields('UStKatMKz').AsBoolean := True;
SpO.CalculateSteuer;

SpO.Post;
Vorgang ohne Rabatte erstellen (VBA)
Dim BpApp As BpNT.Application
Dim Vorgang As BpNT.AutoVorgang
Dim Betrag As BpNT.IAutoBetragGrp

Set BpApp = CreateObject("BpNT.Application")
Call BpApp.Init("Ihr Firmenname", "", "Ihr Anmeldename", "Ihr Passwort")
Call BpApp.SelectMand("1")

Set Vorgang = BpApp.GetSpecialObject(1)
Call Vorgang.Append(70, "10000")

' Rabattkennzeichen deaktivieren
Vorgang.DataSet.Fields("RabKz").AsBoolean = False

Call Vorgang.Positionen.Add(1, "", "100")
Vorgang.Positionen.DataSet.Edit
Set Betrag = Vorgang.Positionen.DataSet.Fields("EPr").GetEditObject(etBetragGrp)
Betrag.Clear
Betrag.GesBrutto = 10
Betrag.Save
Vorgang.Positionen.DataSet.Post

Call Vorgang.Positionen.Add(1, "Stk", "101")
Vorgang.Positionen.DataSet.Edit
Set Betrag = Vorgang.Positionen.DataSet.Fields("EPr").GetEditObject(etBetragGrp)
Betrag.Clear
Betrag.GesBrutto = 15
Betrag.Save
Vorgang.Positionen.DataSet.Post

Call Vorgang.Post

Set Betrag = Nothing
Set Vorgang = Nothing
Set BpApp = Nothing

Buchen und Stornieren

Vorgänge buchen

Ab Build 1860. Die Methode Buchen bucht den aktuellen Vorgang. Dabei werden die für diesen Vorgang hinterlegten Buchungsparameter abgearbeitet. Der Vorgang muss zuvor über Edit oder Append geöffnet worden sein.

Der Rückgabewert ist True bei erfolgreicher Buchung, False bei einem Problem - in letzterem Fall sollte der Datensatz überprüft werden.

Vorgang buchen (Delphi)
SpecialObj := BpApp.GetSpecialObject(1);
SpecialObj.Edit('Meine_Belegnummer');
if SpecialObj.Buchen then
  Showmessage('gebucht');
SpecialObj.Post;

Lagerplatzbewegungsvorschläge

Ab Build 5000 steht die Methode BucheLagerplatzbewegungsvorschlag zur Verfügung (siehe Lagerverwaltung).

Stornoarten ermitteln und stornieren

Vor dem Stornieren können Sie mit PossibleStorno und PossibleStornoStrings ermitteln, welche Stornoarten für den aktuellen Vorgang verfügbar sind:

PossibleStorno gibt eine kommaseparierte Liste der möglichen Vorgangsnummern zurück (z. B. "90," oder "90, 10,").

PossibleStornoStrings gibt eine kommaseparierte Liste der Vorgangsarten-Bezeichnungen zurück (z. B. "Gutschrift," oder "Gutschrift, Freier Typ").

Die Methode Stornieren erwartet drei Parameter:

Archiv (Boolean) - Soll der ursprüngliche Datensatz nach dem Stornieren ins Archiv verschoben werden?

Gutschrift (Boolean) - Soll eine Gutschrift erstellt werden? Wenn False, wird der Parameter GutschriftArt ignoriert.

GutschriftArt (Long) - Vorgangsnummer der Gutschrift-Vorgangsart. Die verfügbaren Nummern finden Sie unter Bearbeiten > Parameter > Vorgänge und Zwischenbelege > Arten.

Der Rückgabewert ist True bei erfolgreicher Stornierung.

Stornieren (Delphi)
SpecialObj := BpApp.GetSpecialObject(1);
SpecialObj.Edit('Meine_Belegnummer');

// Mögliche Stornoarten prüfen
Showmessage(SpecialObj.PossibleStorno);
Showmessage(SpecialObj.PossibleStornoStrings);

if SpecialObj.Stornieren(True, True, 90) then
  Showmessage('storniert');

SpecialObj.Post;

CopyFromArchiv

Ab Build 5630. Mit CopyFromArchiv kann ein Vorgang aus dem Vorgangsarchiv zurück in die Vorgangsübersicht kopiert werden. Die Methode erwartet die Belegnummer des archivierten Vorgangs und die Vorgangsart des neu anzulegenden Vorgangs. Der Rückgabewert gibt an, ob die Operation erfolgreich war.

Vorgang aus dem Archiv kopieren
Dim Result As String
Result = Vorgang.CopyFromArchiv("ARCH-001", 70)

Wandeln von Vorgängen

Das SpecialObject AutoWandeln ermöglicht das Wandeln von Vorgängen - also die Überführung eines Vorgangs in eine andere Vorgangsart (z. B. Bestellung → Rechnung). Beim Wandeln werden immer die im Programm hinterlegten Parameter verwendet; eine individuelle Parametrisierung über die Schnittstelle ist nicht möglich.

Das Objekt wird wie folgt bezogen:

Wandeln-Objekt erstellen
Set WandelnObj = BpApp.GetSpecialObject(soWandeln) ' soWandeln = 5

Die Wandeln-Funktion (Wandeln / WandelnEx)

Es stehen zwei Varianten zur Verfügung:

Wandeln gibt einen Boolean zurück (True bei Erfolg, False bei Fehler).

WandelnEx gibt im Erfolgsfall die eventuell neu zugeordnete Vorgangsnummer als String zurück. Wenn Sie den gewandelten Vorgang weiterbearbeiten möchten, ist WandelnEx die bevorzugte Wahl.

Im Fehlerfall enthält die Eigenschaft LastError eine kommaseparierte Liste der aufgetretenen Fehlermeldungen.

Parameter im Detail

Beide Methoden erwarten die gleichen Parameter:

VorgangNr (String) - Belegnummer des Vorgangs, der gewandelt werden soll.

TargetVorgangArt (Long) - Nummer der Ziel-Vorgangsart. Die Nummern finden Sie unter Bearbeiten > Parameter > Arten.

LieferDatKz (Boolean) - Wenn True, wird das Lieferdatum beim Wandeln beachtet.

LieferDatum (Date) - Das Datum, zu dem geliefert werden soll (nur relevant wenn LieferDatKz = True).

AzPaketeKz (Boolean) - Wenn True, wird die Paketanzahl beachtet.

AzPakete (Long) - Anzahl der Pakete.

VorgangNrNeu (String) - Gewünschte Belegnummer nach dem Wandeln. Bei leerem String wird die Vorgabebezeichnung aus der Vorgangsart verwendet.

LieferMgeSch (Enum LieferMengeSchluessel) - Bestimmt den Umgang mit der Liefermenge:

Wert Konstante Bedeutung
0 lmsNBeachten Liefermenge nicht beachten
1 lmsBeachtenNAendern Liefermenge beachten, aber nicht verändern
2 lmsBeachtenBerechnen Liefermenge beachten und immer neu berechnen
3 lmsBeachtenBeiNullBerechnen Liefermenge beachten, aber nur neu berechnen wenn sie 0 ist
Vorgänge wandeln mit WandelnEx (Delphi)
procedure DoWandeln;
var
  hDataSet, hWandeln: Variant;
  sBelegNr, sNeuBelegNr: string;
begin
  hDataSet := gvComApp.DataSetInfos['Vorgang'].CreateDataSet;
  try
    hDataSet.Filter := 'Art=' + IntToStr(30);
    hDataSet.Filtered := True;
    hDataSet.First;

    hWandeln := gvComApp.GetSpecialObject(soWandeln);

    while not hDataSet.Eof do
    begin
      sBelegNr := hDataSet.Fields['BelegNr'].AsString;
      sNeuBelegNr := hWandeln.WandelnEx(
        sBelegNr,    // Vorgangsnummer
        70,          // Zielvorgangsart (z. B. Rechnung)
        False,       // Lieferdatum beachten
        0,           // Lieferdatum
        False,       // Anzahl der Pakete beachten
        0,           // Anzahl der Pakete
        '',          // gewünschte neue Vorgangsnummer
        0            // Liefermengenschlüssel
      );
      Showmessage('Neue Vorgangsnummer: ' + sNeuBelegNr);
      hDataSet.Next;
    end;
  finally
    hWandeln := nil;
    hDataSet := nil;
  end;
end;

Hinweis: Regeln bei COM-Zugriffen

Welche microtech-Regeln bei COM-Zugriffen auf Vorgänge, Positionen und beim Wandeln greifen - und welche nicht - ist ein umfassendes Querschnittsthema. Eine detaillierte Aufstellung finden Sie unter Tipps, Tricks & Beispiele - Regeln bei COM-Zugriffen.

Ebenso wird dort beschrieben, wie Sie beim Wandeln per COM einzelne Positionen vom Wandeln ausschließen können, obwohl das SpecialObject AutoWandeln keine direkte Positionsauswahl bietet.

Dublettenprüfung (IAutoDoublette)

Das SpecialObject AutoDoublette ermöglicht die Suche nach Adressdoubletten innerhalb der microtech Software. Es wird über GetSpecialObject mit dem Wert 6 bezogen:

Doubletten-Objekt erstellen
Set DoublettenObj = BpApp.GetSpecialObject(soDoublette) ' soDoublette = 6

Die Suche erfolgt über die Methoden FindFirstDoublette und FindNextDoublette. Beide erwarten als Parameter das Land (als numerischen Wert; bei -1 wird das Land des Mandanten verwendet), den Ort und die Straße. FindFirstDoublette erwartet zusätzlich die Postleitzahl.

Bei einem Treffer geben die Methoden True zurück. Die Eigenschaften LastAdrNr und LastAnsNr enthalten dann die Adress- bzw. Anschriftennummer der gefundenen Doublette.

Dublettensuche
' Erste Doublette suchen
If DoublettenObj.FindFirstDoublette(-1, "66111", "Saarbrücken", "Hauptstraße 1") Then
    Debug.Print "Adresse: " & DoublettenObj.LastAdrNr
    Debug.Print "Anschrift: " & DoublettenObj.LastAnsNr

    ' Weitere Doubletten suchen
    Do While DoublettenObj.FindNextDoublette(-1, "Saarbrücken", "Hauptstraße 1")
        Debug.Print "Weitere Adresse: " & DoublettenObj.LastAdrNr
    Loop
End If

Ländernummern

Die Ländernummern können aus der Tabelle GlobalData im NestedDataSet Lae entnommen werden.