DataSet – Grundlagen
3.1.26 IAutoDataSet Interface
AutoDataSet ist die Basis aller Datentabellen.
IDL
[ uuid(189F4E90-A6F1-11D2-B95E-004005232B30), version(1.0),
helpstring("Dispatch-Schnittstelle für AutoDataSet-Objekt"), dual, oleautomation ]
interface IAutoDataSet : IAutoBase;
Beschreibung
AutoDataSet ist die Basis aller Datentabellen. Nicht nur CreateDataSet gibt dieses Interface zurück. Auch andere Funktionen, die mit Datentabellen verwenden, greifen auf dieses Interface zurück.
IAutoDataSet Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet.
Methoden
| Name | Beschreibung |
|---|---|
| Append | Fügt eine Datenzeile am Ende der Tabelle hinzu. |
| ApplyRange | Positionierungsfunktion. |
| Cancel | Die Datentabelle wird zurückgesetzt. |
| CancelRange | Positionierungsfunktion. |
| CheckDelete | Zeigt ein Fenster für den Benutzer an, mit dem das Löschen von Daten bestätigt werden kann. |
| ClearFields | Löscht den Inhalt aller Felder der aktiven Datenzeile. |
| Commit | Schließt eine Transaktion ab. |
| Delete | Löscht die aktuelle Datenzeile. |
| DeleteAll | Löscht die gesamte Tabelle. |
| DeleteTable | Löscht eine Tabelle. |
| Duplicate | Dupliziert eine Tabelle. |
| Edit | Die aktuelle Datenzeile wird geändert. |
| EditKey | Positionierungsfunktion. |
| EditRangeEnd | Positionierungsfunktion. |
| EditRangeStart | Positionierungsfunktion. |
| First | Positionierungsfunktion. |
| GetInfoString | Kurze Beschreibung der Tabelle. |
| GotoCurrentOf | Positionierungsfunktion. |
| GotoKey | Positionierungsfunktion. |
| GotoNearest | Positionierungsfunktion. |
| Insert | Fügt eine Datenzeile hinter die aktuelle Position der Tabelle hinzu. |
| IsRanged | Statusangabe zum Range. |
| Last | Positionierungsfunktion. |
| Next | Positionierungsfunktion. |
| Post | Die Datentabelle wird geschrieben. |
| PostNestedDataSet | Spezielles Post für NestedDataSets. |
| Prior | Positionierungsfunktion. |
| Rollback | Macht eine Transaktion rückgängig. |
| SetKey | Positionierungsfunktion. |
| SetRangeEnd | Positionierungsfunktion. |
| SetRangeStart | Positionierungsfunktion. |
| StartTransaction | Startet eine Transaktion. |
| TransactionCorrupted | Kennzeichnet eine Transaktion als "defekt". |
| TryStartTransaction | Versucht eine Transaktion zu starten. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Bof | Zeigt an ob der Anfang einer Tabelle erreicht ist. |
| Bookmark | Der Rückgabewert dient zum eindeutigen Identifizieren dieses Datensatzes. |
| Eof | Zeigt an ob das Ende einer Tabelle erreicht ist. |
| Fields | Liste aller AutoField Elemente. |
| Indices | Liste aller Indices. |
| Info | Beschreibungstext dieser Datentabelle. |
| IsEmpty | Statusanzeige einer Tabelle. |
| KeyFieldCount | Beschreibt die Anzahl der Felder im aktuellen Index. |
| Name | Der Tabellenname wird ermittelt. |
| NestedDataSets | Auflistung aller Datentabellen die innerhalb der aktuellen Tabelle abgelegt sind. |
| OrgName | Der interne Tabellenname wird ermittelt. |
| Parent | Gibt das Parent Interface zurück. |
| RecordCount | Gibt die Anzahl an Datenzeilen zurück. |
| State | Datenstatus der aktuellen Datentabelle ermitteln. |
IAutoDataSet::First Methode
Positionierungsfunktion.
IDL
[id(0x00000001)]
HRESULT _stdcall First();
Beschreibung
Die Tabelle wird zum "ersten" Eintrag gebracht.
IAutoDataSet::Last Methode
Positionierungsfunktion.
IDL
[id(0x00000002)]
HRESULT _stdcall Last();
Beschreibung
Navigiert die Datenmenge in der Tabelle zum Ende.
IAutoDataSet::Prior Methode
Positionierungsfunktion.
IDL
[id(0x00000003)]
HRESULT _stdcall Prior();
Beschreibung
Der Datensatzzeiger wird um einen Datensatz nach "vorne" gebracht.
IAutoDataSet::Next Methode
Positionierungsfunktion.
IDL
[id(0x00000004)]
HRESULT _stdcall Next();
Beschreibung
Der Tabellenzeiger wird um einen Datensatz nach "hinten" gesetzt.
IAutoDataSet::Edit Methode
Die aktuelle Datenzeile wird geändert.
IDL
[id(0x00000005)]
HRESULT _stdcall Edit();
Beschreibung
Die aktuelle Datenzeile ist beschreibbar, bis "Post" aufgerufen wird. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
IAutoDataSet::Append Methode
Fügt eine Datenzeile am Ende der Tabelle hinzu.
IDL
[id(0x00000006)]
HRESULT _stdcall Append();
Beschreibung
Die neue Datenzeile ist beschreibbar, bis Post aufgerufen wird. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
IAutoDataSet::Post Methode
Die Datentabelle wird geschrieben.
IDL
[id(0x00000007)]
HRESULT _stdcall Post();
Beschreibung
Die aktuell in Bearbeitung befindliche Datenzeile wird in der Tabelle festgeschrieben. Diese Funktion schließt "Append", "Insert" und "Edit" ab. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
IAutoDataSet::Cancel Methode
Die Datentabelle wird zurückgesetzt.
IDL
[id(0x00000008)]
HRESULT _stdcall Cancel();
Beschreibung
Die aktuell in Bearbeitung befindliche Datenzeile wird auf Ihren Zustand vor "Append", "Insert" oder "Edit" gesetzt. Sollte "Post" schon aufgerufen worden sein, bleibt dieser Befehl ohne Wirkung. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
Delphi-Beispiel: Cancel nach fehlgeschlagenem Append
Tbl.Append;
try
// Felder schreiben
Tbl.Post;
catch
Tbl.Cancel;
end;
IAutoDataSet::Delete Methode
Löscht die aktuelle Datenzeile.
IDL
[id(0x00000009)]
HRESULT _stdcall Delete();
Beschreibung
Der aktuelle Datensatz, auf dem die Tabelle steht, wird gelöscht. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
IAutoDataSet::ClearFields Methode
Löscht den Inhalt aller Felder der aktiven Datenzeile.
IDL
[id(0x0000000A)]
HRESULT _stdcall ClearFields();
Beschreibung
Alle Felder der aktuellen Datenzeile werden geleert. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen und "Append", "Insert" oder "Edit" zuvor aufgerufen werden.
IAutoDataSet::Bof Eigenschaft
Zeigt an ob der Anfang einer Tabelle erreicht ist.
IDL
__property VARIANT_BOOL* Bof;
Beschreibung
Diese Funktion gibt "True" zurück, wenn die aktuelle Zeile die erste einer Datentabelle ist.
Delphi-Beispiel: Rückwärts-Iteration mit Bof
Tbl.Last;
while not Tbl.Bof do
begin
//Lesen, Schreiben
Tbl.Prior;
end;
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | "True", wenn die aktuelle Position den Anfang einer Tabelle darstellt |
IAutoDataSet::Eof Eigenschaft
Zeigt an ob das Ende einer Tabelle erreicht ist.
IDL
__property VARIANT_BOOL* Eof;
Beschreibung
Diese Funktion gibt "True" zurück, wenn die aktuelle Zeile die letzte einer Datentabelle ist.
Delphi-Beispiel: Vorwärts-Iteration mit Eof
Tbl.First;
while not Tbl.Eof do
begin
//Lesen, Schreiben
Tbl.Next;
end;
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | "True", wenn die aktuelle Position das Ende einer Tabelle darstellt |
IAutoDataSet::Bookmark Eigenschaft
Der Rückgabewert dient zum eindeutigen Identifizieren dieses Datensatzes.
IDL
__property BSTR Bookmark;
Beschreibung
Bookmark liest oder setzt einen String, der die Position innerhalb der Tabelle markiert. Wird der Wert gelesen, kann die Tabelle (oder eine Andere, sofern es eine Tabelle des selben Aufbaues ist) mit Hilfe des Strings durch Schreiben der Eigenschaft wieder an die Position gebracht werden.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | String, der einen Bookmark darstellt |
IAutoDataSet::RecordCount Eigenschaft
Gibt die Anzahl an Datenzeilen zurück.
IDL
__property long* RecordCount;
Beschreibung
Es wird die Anzahl der Datensätze in der Tabelle zurückgegeben.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Gibt in Ganzzahlen die Anzahl der Datensätze aus |
IAutoDataSet::Duplicate Methode
Dupliziert eine Tabelle.
IDL
[id(0x00000012)]
HRESULT _stdcall Duplicate([out, retval] AutoDataSet** Value);
Beschreibung
Die Ursprungstabelle wird dupliziert. Sie erhalten eine voll funktionstüchtige Kopie. Es wird ein Zeiger auf die eigentliche Tabelle erstellt, der aber in seiner Funktion eigenständig ist (Range, Einfügen, Position usw.).
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] AutoDataSet** Value | Gibt ein AutoDataSet Interface der duplizierten Tabelle zurück |
IAutoDataSet::Fields Eigenschaft
Liste aller AutoField Elemente.
IDL
__property AutoFields** Fields;
Beschreibung
Gibt eine Liste der Felder dieser Datentabelle zurück.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Gibt ein Interface auf AutoFields zurück |
IAutoDataSet::Indices Eigenschaft
Liste aller Indices.
IDL
__property AutoIndices** Indices;
Beschreibung
Gibt eine Liste der möglichen Indices der Tabelle aus.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Gibt ein Interface auf AutoIndices zurück |
IAutoDataSet::SetRangeStart Methode
Positionierungsfunktion.
IDL
[id(0x00000018)]
HRESULT _stdcall SetRangeStart();
Beschreibung
Nach dieser Funktion können die Werte für den Range geschrieben werden. Die hiernach angegebenen Werte kennzeichnen die "Von" Werte. Ab hier soll also der Range gültig sein.
VBA-Beispiel: Range setzen und aufheben
Public Sub Range()
Dim BpApp As BpNT.Application
Dim DataSetAdressen As BpNT.IAutoDataSet
Set BpApp = CreateObject("BpNT.Application")
Call BpApp.Init("Firmenname", "", "Anmeldename", "Password")
Call BpApp.SelectMand("1")
Set DataSetAdressen = BpApp.DataSetInfos.Item("Adressen").CreateDataSet
DataSetAdressen.First
Debug.Print DataSetAdressen.RecordCount
'Index Auswählen dieser enthält ein Feld AdrNr
DataSetAdressen.Indices.Item("Nr").Select
'Bekannt geben dass die nächsten Werte den Beginn der Range darstellen
DataSetAdressen.SetRangeStart
'Werte der Range zuweisen
DataSetAdressen.Fields.Item("AdrNr").AsInteger = 10000
'Bekannt geben dass die nächsten Werte das Ende der Range darstellen
DataSetAdressen.SetRangeEnd
' Werte der Range zuweisen
DataSetAdressen.Fields.Item("AdrNr").AsInteger = 30000
' "scharf schalten" des Ranges
DataSetAdressen.ApplyRange
If DataSetAdressen.IsRanged Then
Debug.Print "Range gesetzt"
End If
Debug.Print DataSetAdressen.RecordCount
'verwerfen des Ranges
DataSetAdressen.CancelRange
If DataSetAdressen.IsRanged Then
Debug.Print "Range gesetzt"
End If
Debug.Print DataSetAdressen.RecordCount
End Sub
IAutoDataSet::SetRangeEnd Methode
Positionierungsfunktion.
IDL
[id(0x00000019)]
HRESULT _stdcall SetRangeEnd();
Beschreibung
Nach dieser Funktion können die Werte für den Range geändert werden. Die hiernach angegebenen Werte kennzeichnen die "Bis" Werte. Bis hier soll der Range gültig sein.
IAutoDataSet::ApplyRange Methode
Positionierungsfunktion.
IDL
[id(0x0000001A)]
HRESULT _stdcall ApplyRange();
Beschreibung
Die zugewiesenen Werte für die Range werden nun auf den aktuellen Index angewendet. Danach ist die Tabelle in einem Range und die Anzahl der Einträge entspricht jetzt nur noch den Datensätzen, die innerhalb des Range liegen.
IAutoDataSet::CancelRange Methode
Positionierungsfunktion.
IDL
[id(0x0000001B)]
HRESULT _stdcall CancelRange();
Beschreibung
Eine mit "ApplyRange" gesetzte Range kann hiermit rückgängig gemacht werden, sodass die Tabelle keiner Eingrenzung mehr unterliegt.
IAutoDataSet::SetKey Methode
Positionierungsfunktion.
IDL
[id(0x0000001C)]
HRESULT _stdcall SetKey();
Beschreibung
Versetzt die Tabelle in einen Suchmodus. Die auf "SetKey" folgenden Wertzuweisungen über "Fields" schreiben nicht direkt in die Tabelle, sondern werden als Suchparameter für "GotoKey" oder "GotoNearest" verwendet. Eventuelle Felder, die nicht verwendet werden, sind auch mit einem Wert zu versehen. Beispielsweise das 2. Indexfeld.AsString = "". Vgl. KeyFieldCount
IAutoDataSet::GotoKey Methode
Positionierungsfunktion.
IDL
[id(0x0000001D)]
HRESULT _stdcall GotoKey([out, retval] VARIANT_BOOL* Value);
Beschreibung
GotoKey positioniert den Datensatzzeiger auf den Datensatz, der den zuvor gesetzten Schlüsselwerten entspricht. Im Erfolgsfall wird "True" zurückgegeben.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] VARIANT_BOOL* Value | "True", wenn der Datensatz gefunden wurde |
IAutoDataSet::GotoNearest Methode
Positionierungsfunktion.
IDL
[id(0x0000001E)]
HRESULT _stdcall GotoNearest();
Beschreibung
Positioniert den Datensatzzeiger auf den Datensatz, der dem zuvor gesetzten Schlüsselwert am nächsten kommt.
IAutoDataSet::Insert Methode
Fügt eine Datenzeile hinter die aktuelle Position der Tabelle hinzu.
IDL
[id(0x00000020)]
HRESULT _stdcall Insert();
Beschreibung
Die neue Datenzeile ist beschreibbar, bis "Post" aufgerufen wird. Damit diese Funktion erfolgreich durchgeführt werden kann, muss Zugriff auf die Tabelle bestehen.
IAutoDataSet::Name Eigenschaft
Der Tabellenname wird ermittelt.
IDL
__property BSTR* Name;
Beschreibung
Gibt den Namen der Tabelle zurück.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: String, der den Tabellennamen enthält |
IAutoDataSet::Info Eigenschaft
Beschreibungstext dieser Datentabelle.
IDL
__property BSTR* Info;
Beschreibung
Gibt einen Informationsstring zu dieser Datentabelle zurück.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Gibt einen String mit der Beschreibung zurück |
IAutoDataSet::State Eigenschaft
Datenstatus der aktuellen Datentabelle ermitteln.
IDL
__property enum DataSetState* State;
Beschreibung
Gibt einen DataSetState zurück. Anhand dieses Wertes kann der Status der Tabelle ermittelt und dann entsprechend gehandelt werden. Diese Information ist z. B. bei Fehlern interessant, da ermittelt werden kann, ob die gewünschte Operation durchführbar ist.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Ein Aufzählungswert des Typs DataSetState, das den aktuellen Status der Tabelle beschreibt |
IAutoDataSet::PostNestedDataSet Methode
Spezielles Post für NestedDataSets.
IDL
[id(0x0000000B)]
HRESULT _stdcall PostNestedDataSet();
Beschreibung
Dieser Aufruf wird zum Schreiben von NestedDataSets benötigt. Ein einfacher "Post" der Tabelle reicht nicht aus.
Delphi-Beispiel: NestedDataSet schreiben
DataSetArtikel.Edit;
NestedUmsatz.Append;
NestedUmsatz.Fields['UmsMrz'].AsFloat := 100;
NestedUmsatz.Fields['UmsFeb'].AsFloat := 99;
NestedUmsatz.Post;
NestedUmsatz.PostNestedDataSet;
DataSetArtikel.Post;
IAutoDataSet::NestedDataSets Eigenschaft
Auflistung aller Datentabellen die innerhalb der aktuellen Tabelle abgelegt sind.
IDL
__property AutoNestedDataSets** NestedDataSets;
Beschreibung
Gibt eine AutoNestedDataSets Auflistung zurück. AutoDataSet.NestedDataSets.Item(Name oder Index)
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Gibt ein AutoNestedDataSets Interface zurück |
IAutoDataSet::OrgName Eigenschaft
Der interne Tabellenname wird ermittelt.
IDL
__property BSTR* OrgName;
Beschreibung
Gibt den Namen der Tabelle zurück, der für den Funktionsaufruf "CreateDataSet" verwendet werden kann.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: String, der den internen Namen enthält |
IAutoDataSet::DeleteTable Methode
Löscht eine Tabelle.
IDL
[id(0x00000015)]
HRESULT _stdcall DeleteTable();
Beschreibung
Löscht die Tabelle als Ganzes (der Aufruf dieser Funktion sollte niemals notwendig sein). Eine auf diese Weise gelöschte Tabelle kann nicht mehr wiederhergestellt werden. Zur Wiederherstellung muss eine Datenrücksicherung durchgeführt werden.
IAutoDataSet::GetInfoString Methode
Kurze Beschreibung der Tabelle.
IDL
[id(0x00000016)]
HRESULT _stdcall GetInfoString([out, retval] BSTR* Value);
Beschreibung
Gibt eine kurze Beschreibung der Tabelle zurück.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] BSTR* Value | Rückgabewert: String mit der Beschreibung |
IAutoDataSet::EditRangeStart Methode
Positionierungsfunktion.
IDL
[id(0x00000013)]
HRESULT _stdcall EditRangeStart();
Beschreibung
Ermöglicht das nachträgliche Ändern der "Von"-Werte eines bestehenden Range.
IAutoDataSet::EditRangeEnd Methode
Positionierungsfunktion.
IDL
[id(0x00000014)]
HRESULT _stdcall EditRangeEnd();
Beschreibung
Ermöglicht das nachträgliche Ändern der "Bis"-Werte eines bestehenden Range.
IAutoDataSet::EditKey Methode
Positionierungsfunktion.
IDL
[id(0x0000001F)]
HRESULT _stdcall EditKey();
Beschreibung
Ermöglicht das nachträgliche Ändern der Suchparameter für GotoKey/GotoNearest.
IAutoDataSet::IsRanged Eigenschaft
Statusangabe zum Range.
IDL
__property VARIANT_BOOL* IsRanged;
Beschreibung
Gibt an, ob die Tabelle aktuell einem Range unterliegt.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | "True", wenn ein Range gesetzt ist |
IAutoDataSet::KeyFieldCount Eigenschaft
Beschreibt die Anzahl der Felder im aktuellen Index.
IDL
__property long KeyFieldCount;
Beschreibung
Gibt die Anzahl der Felder im aktuellen Index zurück oder legt die neue Anzahl fest. Dabei kann einem Index mit z.B. 3 Feldern ein Wert "1" zugewiesen werden, wonach nur noch das erste Feld für SetRange gefüllt werden muss.
Delphi-Beispiel: KeyFieldCount einschränken
DataSetAdressen.Indices.Item("Viele Felder").Select;
DataSetAdressen.SetRangeStart;
DataSetAdressen.Fields.Item("Feld1").AsInteger := 10000;
DataSetAdressen.Fields.Item("Feld2").AsInteger := 10000;
DataSetAdressen.KeyFieldCount := 2;
DataSetAdressen.SetRangeEnd;
DataSetAdressen.Fields.Item("Feld1").AsInteger := 30000;
DataSetAdressen.Fields.Item("Feld2").AsInteger := 30000;
DataSetAdressen.KeyFieldCount := 2;
DataSetAdressen.ApplyRange;
Hinweis bei gemischten Indexfeldern
Bitte beachten Sie, dass in verschiedenen Situationen Probleme auftreten können. Wenn z.B. ein Index, der aus Strings und numerischen Werten zusammengesetzt ist, durch KeyFieldCount auf Indexfelder reduziert wird die nur den Datentyp String enthalten. Daraus ergibt sich die Notwendigkeit das Anfangswert und Endwert der String Range unterschiedlich sein müssen, um eine Ergebnismenge erhalten zu können. Es muss dem Endwert des Ranges noch etwas angefügt werden. Verwenden Sie z.B. den String 'ZZZZZ'.
Delphi-Beispiel: KeyFieldCount mit String-Index
bpTbl := BpApp.DataSetInfos('Anschriften').CreateDataSet;
bpTbl.Indices.Item('AdrNrAnsNr').Select;
bpTbl.SetRangeStart;
bpTbl.Fields('AdrNr').AsString := '10000';
bpTbl.KeyFieldCount := 1;
bpTbl.SetRangeEnd;
bpTbl.Fields('AdrNr').AsString := '10000' + 'ZZZZZ';
bpTbl.KeyFieldCount := 1;
bpTbl.ApplyRange;
IAutoDataSet::GotoCurrentOf Methode
Positionierungsfunktion.
IDL
[id(0x0000002B)]
HRESULT _stdcall GotoCurrentOf([in] AutoDataSet* DataSet, [out, retval] VARIANT_BOOL* Value);
Beschreibung
Synchronisiert den Datensatzzeiger der aktuellen Tabelle mit dem der angegebenen Tabelle. Sollte die Operation nicht erfolgreich sein, wenn z. B. der Datensatz nicht in beiden Tabellen vorhanden ist, wird "False" zurückgegeben. Diese Funktion ist nur für Tabellen, die denselben Aufbau haben, vorgesehen.
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] AutoDataSet* DataSet | Die Datentabelle, zu deren aktuellem Datensatz gesprungen werden soll |
| [out, retval] VARIANT_BOOL* Value | Rückgabewert: "True" im Erfolgsfall, ansonsten "False" |
IAutoDataSet::IsEmpty Eigenschaft
Statusanzeige einer Tabelle.
IDL
__property VARIANT_BOOL* IsEmpty;
Beschreibung
Dieser Wert ist "True", wenn die Tabelle keine Datensätze enthält.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | Gibt "True" zurück, wenn die Tabelle keine Datensätze enthält. Ansonsten "False" |
IAutoDataSet::StartTransaction Methode
Startet eine Transaktion.
IDL
[id(0x00000028)]
HRESULT _stdcall StartTransaction();
Beschreibung
Startet eine Transaktion. Damit deklariert die Applikation gegenüber der Datenbank, dass Sie die Tabelle aktuell alleine benötigt. Lassen Sie Ihre Applikation nie länger als notwendig in einer Transaktion stehen, da ansonsten niemand für die Dauer der Aktion in der Tabelle schreiben kann.
Delphi-Beispiel: Transaktion mit Fehlerbehandlung
procedure Transact;
begin
DataSet.StartTransaction;
try
while not Dataset.Eof do
begin
Try
DataSet.Edit;
DataSet.Fields.Item('Info').Text := 'wird Bearbeitet';
DataSet.Post;
Except
BpApp.Writeln('Exception');
DataSet.Cancel;
raise;
End;
DataSet.Next;
end;
DataSet.Commit;
Except
DataSet.Rollback;
end;
end;
procedure Main;
begin
try
Transact;
Except
on e: Exception do
begin
ShowMessage('Es ist ein Fehler aufgetreten: ' + e.Message);
raise;
end;
end;
end;
IAutoDataSet::Commit Methode
Schließt eine Transaktion ab.
IDL
[id(0x00000029)]
HRESULT _stdcall Commit();
Beschreibung
Schließt eine erfolgreiche Transaktion ab. Die Tabelle wird festgeschrieben.
IAutoDataSet::Rollback Methode
Macht eine Transaktion rückgängig.
IDL
[id(0x0000002C)]
HRESULT _stdcall Rollback();
Beschreibung
Sollte ein Fehler aufgetreten sein, nutzen Sie "Rollback", um die Tabelle in den Zustand vor "StartTransaction" oder "TryStartTransaction" zurückzusetzen.
IAutoDataSet::TryStartTransaction Methode
Versucht eine Transaktion zu starten.
IDL
[id(0x0000002D)]
HRESULT _stdcall TryStartTransaction([out, retval] VARIANT_BOOL* Value);
Beschreibung
Versucht eine Transaktion zu starten. Im Erfolgsfall ist der Rückgabewert "True". Lassen Sie Ihre Applikation nie länger als notwendig in einer Transaktion stehen, da ansonsten niemand für die Dauer der Aktion in der Tabelle schreiben kann.
Verwenden Sie "TryStartTransaction", wenn Sie Quelltext schreiben, der manchmal innerhalb einer Transaction ausgeführt wird und manchmal nicht. Sollte bereits eine Transaktion bestehen, wird "False" zurückgegeben und die Tabelle muss so verarbeitet werden als sei keine Transaktion vorhanden.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] VARIANT_BOOL* Value | Rückgabewert: "True", wenn erfolgreich eine Transaktion gestartet werden konnte. "False", wenn aktuell eine Transaktion aktiv ist |
Delphi-Beispiel: TryStartTransaction mit verschachteltem Aufruf
// Bsp1:
// ....
// Arbeite...
// BpTblAendern;
// Arbeite...
// ...
// Bsp2:
// ...
// BpHauptTabelle.StartTransaction;
// try
// Arbeite...
// BpTblAendern;
// Arbeite...
// BpHauptTabelle.Commit;
// except
// BpHauptTabelle.RollBack;
// end;
// ...
procedure BpTblAendern;
begin
TransactionStarted := BpTbl.TryStartTransaction;
try
BpTbl.Edit;
BpTbl.Fields[Wert].AsBoolean := true;
BpTbl.Post;
if TransactionStarted then
BpTbl.Commit;
except
if TransactionStarted then
BpTbl.RollBack
else
BpTbl.TransactionCorrupted;
raise;
end;
end;
IAutoDataSet::TransactionCorrupted Methode
Kennzeichnet eine Transaktion als "defekt".
IDL
[id(0x00000030)]
HRESULT _stdcall TransactionCorrupted();
Beschreibung
Wenn "TransactionCorrupted" aufgerufen wird, kann ein "Commit" nicht mehr erfolgreich ausgeführt werden. Der Aufruf erzeugt beabsichtigt einen Fehler. Achtung, nicht alle Programmiersprachen können mit Exceptions umgehen.
IAutoDataSet::DeleteAll Methode
Löscht die gesamte Tabelle.
IDL
[id(0x0000002F)]
HRESULT _stdcall DeleteAll();
Beschreibung
Löscht alle Zeilen der aktuell geöffneten Tabelle. Damit diese Funktion erfolgreich durchgeführt werden kann, muss die Tabelle eine NestedTable sein und Zugriff auf die Tabelle bestehen.
IAutoDataSet::CheckDelete Methode
Zeigt ein Fenster für den Benutzer an, mit dem das Löschen von Daten bestätigt werden kann.
IDL
[id(0x0000002E)]
HRESULT _stdcall CheckDelete([in] VARIANT_BOOL aMeld, [in] VARIANT_BOOL aIgnoreWarnings, [out, retval] VARIANT_BOOL* aCanDelete);
Beschreibung
Hiermit kann geprüft werden, ob der gewählte Datensatz gelöscht werden soll. Der Benutzer bekommt ein eigenes Fenster mit Abfragen zu diesem Löschvorgang angezeigt.
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] VARIANT_BOOL aMeld | Bei "False" wird kein Fenster angezeigt. Bei "True" wird ein Fenster angezeigt |
| [in] VARIANT_BOOL aIgnoreWarnings | "True", wenn weitere Einzelheiten angezeigt werden sollen. Beispielsweise wird in den Artikeln gemeldet, dass die Umsatzdaten dieses Artikels verloren gehen |
| [out, retval] VARIANT_BOOL* aCanDelete | "True", wenn der Datensatz gelöscht werden soll, "False", wenn dies nicht geschehen soll |
3.1.27 IAutoDataSet2 Interface
Von IAutoDataSet abstammendes Interface.
IDL
[ uuid(FAB6DBBE-7A53-469D-9817-3D4262F7F500), version(1.0), dual, oleautomation ]
interface IAutoDataSet2 : IAutoDataSet;
IAutoDataSet2 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet2.
Methoden
| Name | Beschreibung |
|---|---|
| Append | Fügt eine Datenzeile am Ende der Tabelle hinzu. |
| ApplyRange | Positionierungsfunktion. |
| Cancel | Die Datentabelle wird zurückgesetzt. |
| CancelRange | Positionierungsfunktion. |
| CheckDelete | Zeigt ein Fenster für den Benutzer an, mit dem das Löschen von Daten bestätigt werden kann. |
| ClearFields | Löscht den Inhalt aller Felder der aktiven Datenzeile. |
| Commit | Schließt eine Transaktion ab. |
| Delete | Löscht die aktuelle Datenzeile. |
| DeleteAll | Löscht die gesamte Tabelle. |
| DeleteTable | Löscht eine Tabelle. |
| Duplicate | Dupliziert eine Tabelle. |
| Edit | Die aktuelle Datenzeile wird geändert. |
| EditKey | Positionierungsfunktion. |
| EditRangeEnd | Positionierungsfunktion. |
| EditRangeStart | Positionierungsfunktion. |
| First | Positionierungsfunktion. |
| GetInfoString | Kurze Beschreibung der Tabelle. |
| GotoCurrentOf | Positionierungsfunktion. |
| GotoKey | Positionierungsfunktion. |
| GotoNearest | Positionierungsfunktion. |
| Insert | Fügt eine Datenzeile hinter die aktuelle Position der Tabelle hinzu. |
| IsRanged | Statusangabe zum Range. |
| Last | Positionierungsfunktion. |
| Next | Positionierungsfunktion. |
| Post | Die Datentabelle wird geschrieben. |
| PostNestedDataSet | Spezielles Post für NestedDataSets. |
| Prior | Positionierungsfunktion. |
| Rollback | Macht eine Transaktion rückgängig. |
| SetKey | Positionierungsfunktion. |
| SetRangeEnd | Positionierungsfunktion. |
| SetRangeStart | Positionierungsfunktion. |
| SetSatzDatum | Datensatzänderung per COM bearbeiten |
| StartTransaction | Startet eine Transaktion. |
| TransactionCorrupted | Kennzeichnet eine Transaktion als "defekt". |
| TryStartTransaction | Versucht eine Transaktion zu starten. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| AutoSetSatzDatum | Automatisch das aktuelle Datum setzen. |
| Bof | Zeigt an ob der Anfang einer Tabelle erreicht ist. |
| Bookmark | Der Rückgabewert dient zum eindeutigen Identifizieren dieses Datensatzes. |
| Eof | Zeigt an ob das Ende einer Tabelle erreicht ist. |
| Fields | Liste aller AutoField Elemente. |
| Indices | Liste aller Indices. |
| Info | Beschreibungstext dieser Datentabelle. |
| IsEmpty | Statusanzeige einer Tabelle. |
| KeyFieldCount | Beschreibt die Anzahl der Felder im aktuellen Index. |
| Name | Der Tabellenname wird ermittelt. |
| NestedDataSets | Auflistung aller Datentabellen die innerhalb der aktuellen Tabelle abgelegt sind. |
| OrgName | Der interne Tabellenname wird ermittelt. |
| Parent | Gibt das Parent Interface zurück. |
| RecordCount | Gibt die Anzahl an Datenzeilen zurück. |
| State | Datenstatus der aktuellen Datentabelle ermitteln. |
IAutoDataSet2::SetSatzDatum Methode
Datensatzänderung per COM bearbeiten.
IDL
[id(0x00000027)]
HRESULT _stdcall SetSatzDatum([in] DATE ErstDat, [in] BSTR ErstBzr, [in] DATE AendDat, [in] BSTR AendBzr);
Beschreibung
Funktion, um im Datensatz die Werte für Erstellungsdatum, Erstellungsbenutzer und letzte Änderungsdatum, letzter Änderungsbenutzer zu setzen.
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] DATE ErstDat | Datum, wann der Datensatz erstellt wird |
| [in] BSTR ErstBzr | Benutzerkurzkennung, die für den Ersteller abgelegt wird |
| [in] DATE AendDat | Datum, wann der Datensatz geändert wurde |
| [in] BSTR AendBzr | Benutzerkurzkennung, die für den Änderungsbenutzer hinterlegt wird |
IAutoDataSet2::AutoSetSatzDatum Eigenschaft
Automatisch das aktuelle Datum setzen.
IDL
__property VARIANT_BOOL AutoSetSatzDatum;
Beschreibung
Der Zeitpunkt des Postens wird als Zeit verwendet, sowie der Kurzname des angemeldeten Benutzers. Dieser Aufruf muss immer nach einem "Edit", "Append" oder "Insert" erfolgen.
3.1.28 IAutoDataSet3 Interface
Von IAutoDataset2 abstammendes Interface.
IDL
[ uuid(099BAF5A-2283-4AF0-80F1-CA166F802DA5), version(1.0), dual, oleautomation ]
interface IAutoDataSet3 : IAutoDataSet2;
IAutoDataSet3 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet3.
Methoden
| Name | Beschreibung |
|---|---|
| Alle Methoden aus IAutoDataSet2 | |
| LockTable | Sperrt eine Tabelle für gewisse Operationen. |
| UnlockTable | Gesperrte Tabelle freigeben. |
| UnLockTableAll | Alle Locks einer Tabelle freigeben. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Alle Eigenschaften aus IAutoDataSet2 | |
| Filter | Datenmengenoperation. |
| Filtered | Datenmengenoperation. |
IAutoDataSet3::LockTable Methode
Sperrt eine Tabelle für gewisse Operationen.
IDL
[id(0x00000032), helpstring("Diese Funktion kann z.b. Lese und Schreib Lock setzen indem Sie 2x malig Aufgerufen wird.")]
HRESULT _stdcall LockTable([in] enum dbLockType LockType);
Beschreibung
Fordert einen "TableLock" mit der übergebenen "Lock-Art" an. Wenn Sie mehrere Locking-Arten kombinieren möchten, rufen Sie die Funktion mehrmals nacheinander auf. Für einen Schreib- und Lese-Lock muss die Funktion zweimalig aufgerufen werden. Halten Sie die Zeit der Sperrung möglichst gering.
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] enum dbLockType LockType | Art der Sperre (siehe Aufzählungstyp dbLockType) |
IAutoDataSet3::UnlockTable Methode
Gesperrte Tabelle freigeben.
IDL
[id(0x00000033)]
HRESULT _stdcall UnlockTable([in] enum dbLockType LockType);
Beschreibung
Gibt einen zuvor gesetzten Lock wieder frei.
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] enum dbLockType LockType | Art der freizugebenden Sperre |
IAutoDataSet3::UnLockTableAll Methode
Alle Locks einer Tabelle freigeben.
IDL
[id(0x00000034)]
HRESULT _stdcall UnLockTableAll();
Beschreibung
Gibt alle gesetzten Locks dieser Tabelle frei.
IAutoDataSet3::Filter Eigenschaft
Datenmengenoperation.
IDL
__property BSTR Filter;
Beschreibung
Hier kann der Filterstring der Tabelle gesetzt werden. Damit können Datasets auch außerhalb der Funktionalität von Indices Datenmengen eingrenzen. Zum Löschen des Filters einfach einen leeren String übergeben.
Wird ein Dataset gefiltert, können nur Datensätze gelesen werden, die dem Filter entsprechen. Hier ein Beispiel:
Datenbankfeldname = 'gewünschter Filter Wert' OR Datenbankfeldname = 'anderer gewünschter Filter Wert'
Falls der Filter auch leere Werte in der Ergebnismenge enthalten soll, verwenden Sie das Schlüsselwort "NULL".
BelegNr <> 'RE000001' OR ArtNr = NULL
Beispiel, wie ein Filter für Datumswerte aussieht:
Delphi: 'Dat > ''30.03.2009'''
VB, C++, C#: "Dat > '30.03.2009'"
Falls Feldnamen mit Leerzeichen verwendet werden, müssen diese in eckige Klammern gesetzt werden:
[Meine Bezeichnung] = 'Filter Wert'
| Operator | Aufgabe |
|---|---|
< | Linker Operator kleiner als der Rechte |
> | Linker Operator größer als der Rechte |
>= | Linker Operator größer oder gleich dem Rechten |
<= | Linker Operator kleiner oder gleich dem Rechten |
= | Linker und Rechter Operator gleich |
<> | Linker und Rechter Operator sind ungleich |
AND | Wahr, wenn Linker und rechter Ausdruck dasselbe Ergebnis liefern |
NOT | Wahr, wenn Linker und rechter Ausdruck ein unterschiedliches logisches Ergebnis liefern |
OR | Entweder ist der Linke oder der Rechte Ausdruck wahr |
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | String, der den Filter darstellt |
IAutoDataSet3::Filtered Eigenschaft
Datenmengenoperation.
IDL
__property VARIANT_BOOL Filtered;
Beschreibung
Hiermit kann der Filterstring eines Datasets gesetzt werden. Erst wenn Filtered den Wert "True" hat, wird die Datenmenge eingeschränkt.
Parameter
| Parameter | Beschreibung |
|---|---|
| Value | "True", um den Filter zu aktivieren |
3.1.29 IAutoDataSet4 Interface
Von IAutoDataset3 abstammendes Interface.
IDL
[ uuid(4D678542-EF16-484C-9270-D525C480C4D7), version(1.0), dual, oleautomation ]
interface IAutoDataSet4 : IAutoDataSet3;
IAutoDataSet4 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet4.
Methoden
| Name | Beschreibung |
|---|---|
| Alle Methoden aus IAutoDataSet3 | |
| MoveFromToHistory | Automatisiert in/aus der/dem History/Archiv kopieren. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Alle Eigenschaften aus IAutoDataSet3 |
IAutoDataSet4::MoveFromToHistory Methode
Automatisiert in/aus der/dem History/Archiv kopieren.
IDL
[id(0x00000035)]
HRESULT _stdcall MoveFromToHistory([out, retval] VARIANT_BOOL* Result);
Beschreibung
Je nach gewählter Datenbank verschiebt diese Funktion einen Datensatz in/aus der History/Archiv. Vorab ist zu prüfen, ob der gewählte Datensatz in der Zieldatenbank bereits enthalten ist. Der existierende Datensatz ist vorab zu löschen. In einigen Konstellationen kann es ansonsten zu dem Fehler "Key Violation" kommen, da für den Primärindex identische Datensätze erstellt werden könnten.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] VARIANT_BOOL* Result | Rückgabewert: Boolean "True" wenn erfolgreich kopiert wurde |
3.1.30 IAutoDataSet5 Interface
Von IAutoDataSet4 abstammendes Interface.
IDL
[ uuid(05CDC003-70F7-4D23-B4F6-B51D6448F33C), version(1.0), dual, oleautomation ]
interface IAutoDataSet5 : IAutoDataSet4;
IAutoDataSet5 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet5.
Methoden
| Name | Beschreibung |
|---|---|
| Alle Methoden aus IAutoDataSet4 | |
| DbFindNextNum | VERALTET: Siehe Funktion "SetupNr" – Automatisiert die Erstellung einer Adressnummer im Standard Nummernkreis. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Alle Eigenschaften aus IAutoDataSet4 |
IAutoDataSet5::DbFindNextNum Methode
VERALTET: Siehe Funktion "SetupNr"
Automatisiert die Erstellung einer Adressnummer im Standard Nummernkreis.
IDL
[id(0x00000036)]
HRESULT _stdcall DbFindNextNum([out, retval] BSTR* Result);
Beschreibung
Je nach aktueller Datenbank findet diese Funktion die nächste freie Nummer einer Datenbank. Diese Funktion wirkt aktuell nur bei einer Adressentabelle mit Standard Nummernkreis korrekt. Wenn Sie eine andere Nummerierung neuer Adressdatensätze benötigen, sollten Sie diese Funktion nicht verwenden.
Veraltet
Diese Funktion kann weiterhin aufgerufen werden. Sie sollten aber auf jeden Fall "SetupNr" für diese Funktionalität verwenden.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] BSTR* Result | String mit der nächsten freien Adressnummer |
3.1.31 IAutoDataSet6 Interface
Ein von AutoDataSet5 abgeleitetes Interface.
IDL
[ uuid(C1166631-741D-4C1F-B09F-8E866CA9F45D), version(1.0), dual, oleautomation ]
interface IAutoDataSet6 : IAutoDataSet5;
Beschreibung
Ab Build: 3307.
IAutoDataSet6 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet6.
Methoden
| Name | Beschreibung |
|---|---|
| Alle Methoden aus IAutoDataSet5 | |
| IDString | Diese Funktion gibt einen ID String zurück. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Alle Eigenschaften aus IAutoDataSet5 |
IAutoDataSet6::IDString Methode
Diese Funktion gibt einen ID String zurück.
IDL
[id(0x000000C9)]
HRESULT _stdcall IDString([out, retval] BSTR* Result);
Beschreibung
Die Funktion IDString ist eine Möglichkeit einen Datensatz in der microtech Software eindeutig zu identifizieren auch wenn der Datensatz z.B. verschoben wird. Die Positionierung erfolgt über einen internen Kennzeichner. Daraus ergibt sich das diese Kennung auch nach diversen Aktionen mit dem Datensatz noch gefunden werden kann. Darunter fällt z.B. Verschieben und Nummernkreis-Anpassungen.
Parameter
| Parameter | Beschreibung |
|---|---|
| [out, retval] BSTR* Result | String, der den Wert des aktuellen Datensatz beschreibt |
Siehe auch: IAutoApplication9::CreateDataSetFromId
3.1.32 IAutoDataSet7 Interface
Von IAutoDataSet6 abstammendes Interface.
IDL
[ uuid(46169101-5B24-496A-8418-5BEFE4475879), version(1.0), dual, oleautomation ]
interface IAutoDataSet7 : IAutoDataSet6;
Beschreibung
Ab Build: 3650.
IAutoDataSet7 Eigenschaften
Die folgende Tabelle zeigt die Eigenschaften von IAutoDataSet7.
Methoden
| Name | Beschreibung |
|---|---|
| Alle Methoden aus IAutoDataSet6 | |
| SetupNr | Belegt eine Adressnummer für den nächsten neuen Datensatz vor. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Alle Eigenschaften aus IAutoDataSet6 |
IAutoDataSet7::SetupNr Methode
Belegt eine Adressnummer für den nächsten neuen Datensatz vor.
IDL
[id(0x00000385)]
HRESULT _stdcall SetupNr([in] BSTR VgbNr, [out, retval] BSTR* Result);
Beschreibung
SetupNr wird vor allem für die Adressnummernvergabe verwendet. Es gibt 2 Modi:
- Vorgegebene Nummer
- Automatisch vergebene Nummer
Diese Funktion wird hauptsächlich in der Adressen Tabelle genutzt. Bei der Neuanlage von Adressen kann hierüber entweder anhand eines vorgegebenen Nummernkreises eine Nummer für die Adresse automatisch vergeben werden oder eine gewünschte übergebene Nummer geprüft werden. Das folgende Beispiel zeigt die Verwendung zur automatischen Vergabe einer Nummer. Damit dabei eine Vorbelegung aus den Parametern erfolgen kann, muss vor dem Post der Adressentabelle das Statusfeld beschrieben sein. Wenn dieser Status in den Parametern gefunden wird und eine Vorgabenummer dafür besteht, wird die Nummerierung dort geholt.
C#-Beispiel: Automatische Nummernvergabe
public bool UpdateOrInsertAdress(ref string Adressnummer, IFieldValue[] Values)
{
BpNT.AutoDataSet DataSet;
IFieldMetaInformation Meta;
DataSet = null;
try
{
if (string.IsNullOrEmpty(Adressnummer))
{
// erstelle Adresse in microtech ERP
DataSet = BpApp(false).CreateDataSetFromId("Adr.0.0");
DataSet.Append();
NeedMainNumber = true;
}
else
{
// ändere eine Adresse in microtech ERP
DataSet = BpApp(false).CreateDataSetFromId(Adressnummer);
if (DataSet.IDString() == Adressnummer)
{
DataSet.Edit();
}
else
{
DataSet = null;
DataSet = BpApp(false).CreateDataSetFromId("Adr.0.0");
DataSet.Append();
}
}
}
for (int i = 0; i < Values.GetLength(0); i++)
{
// Werte eintragen
}
// Die Zuordnung des Status kann natürlich auch an anderer Stelle erfolgen
DataSet.Fields["Status"]
///////////////////
DataSet.SetupNr("");
///////////////////
try
{
DataSet.Post();
}
catch (Exception ex)
{
DataSet.Cancel();
BpMessageBox.Show("Das Übernehmen von Daten war nicht möglich.\r\nOftmals ist ein Datenwert fehlerhaft."
+ ex.Message);
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(DataSet);
DataSet = null;
return true;
}
catch (Exception ex)
{
if (DataSet != null)
{
DataSet.Cancel();
System.Runtime.InteropServices.Marshal.ReleaseComObject(DataSet);
DataSet = null;
}
BpMessageBox.Show("Beim übertragen von Daten ist ein Fehler aufgetreten.\r\n" + ex.Message);
return false;
}
C#-Beispiel: Eigene Nummernvorgabe
public bool UpdateOrInsertAdress(ref string Adressnummer, IFieldValue[] Values)
{
BpNT.AutoDataSet DataSet;
IFieldMetaInformation Meta;
string AdressNumber;
string PostedAdressNumber;
DataSet = null;
try
{
if (string.IsNullOrEmpty(Adressnummer))
{
DataSet = BpApp(false).CreateDataSetFromId("Adr.0.0");
DataSet.Append();
NeedMainNumber = true;
}
else
{
DataSet = BpApp(false).CreateDataSetFromId(Adressnummer);
if (DataSet.IDString() == Adressnummer)
{
DataSet.Edit();
}
else
{
DataSet = null;
DataSet = BpApp(false).CreateDataSetFromId("Adr.0.0");
DataSet.Append();
}
}
}
for (int i = 0; i < Values.GetLength(0); i++)
{
// Werte eintragen
}
AdressNumber = "1000";
///////////////////////////////////////////////////
PostedAdressNumber = DataSet.SetupNr(AdressNumber);
///////////////////////////////////////////////////
if (PostedAdressNumber != AdressNumber)
{
// Melde das die ursprüngliche Nummer nicht gesetzt werden konnte.
}
try
{
DataSet.Post();
}
catch (Exception ex)
{
DataSet.Cancel();
BpMessageBox.Show("Das Übernehmen von Daten war nicht möglich.\r\nOftmals ist ein Datenwert fehlerhaft."
+ ex.Message);
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(DataSet);
DataSet = null;
return true;
}
catch (Exception ex)
{
if (DataSet != null)
{
DataSet.Cancel();
System.Runtime.InteropServices.Marshal.ReleaseComObject(DataSet);
DataSet = null;
}
BpMessageBox.Show("Beim übertragen von Daten ist ein Fehler aufgetreten.\r\n" + ex.Message);
return false;
}
Parameter
| Parameter | Beschreibung |
|---|---|
| [in] BSTR VgbNr | "" (leer) für eine Automatische Vergabe; gefüllt für eine vorgegebene Nummer |
| [out, retval] BSTR* Result | "True", wenn eine Nummer vergeben werden konnte. |