Tabellen-Metadaten
3.1.18 IAutoDataSetInfos Interface
Enthält eine Liste mit DataSets.
IDL
[ uuid(DEED36C8-2EB5-11D3-BA03-004005232B30), version(1.0),
helpstring("Dispatch-Schnittstelle für AutoDataSetInfos-Objekt"),
dual, oleautomation ]
interface IAutoDataSetInfos : IAutoBase;
Diese Liste enthält einen Eintrag für jede Tabelle, die in der microtech Software existiert. Die Eigenschaft "DataSetInfos" des Applikationsobjektes gibt dieses Interface zurück.
IAutoDataSetInfos Eigenschaften
Methoden
| Name | Beschreibung |
|---|---|
| Item | Zugriff auf AutoDataSetInfo. |
| Values | Anzahl der Vk, Ek Preise und der Rabattsätze. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| _NewEnum | Enumerator-Kompatibilität. |
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Count | Anzahl der DataSetInfos. |
| Parent | Gibt das Parent Interface zurück. |
IAutoDataSetInfos::Count Eigenschaft
Anzahl der DataSetInfos.
IDL
__property long* Count;
Gibt die Anzahl der Einträge an.
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Anzahl der Elemente |
IAutoDataSetInfos::Item Methode
Zugriff auf AutoDataSetInfo.
IDL
[propget, id(0x00000000), defaultcollelem]
HRESULT _stdcall Item([in] VARIANT Index, [out, retval] AutoDataSetInfo** Value);
Diese Funktion ermöglicht den Zugriff auf die einzelnen AutoDataSetInfo-Elemente. Der Eingabeparameter Index kann einen Integer oder einen String beinhalten. Der Integer muss dem Index des Feldes in der Liste entsprechen. Der String muss dem Namen des Feldes entsprechen.
for i := 0 to BpApp.DataSetInfos.Count - 1 do
begin
BpTbl := BpApp.DataSetInfos[i].CreateDataSet;
end;
| Parameter | Beschreibung |
|---|---|
| [in] VARIANT Index | Variant, der den String oder Integer Index des gewünschten AutoDataSetInfo Interfaces enthält |
| [out, retval] AutoDataSetInfo** Value | Rückgabewert: Interface vom Typ AutoDataSetInfo |
IAutoDataSetInfos::_NewEnum Eigenschaft
Enumerator-Kompatibilität.
IDL
__property IEnumVARIANT** _NewEnum;
IAutoDataSetInfos::Values Methode
Anzahl der VK-, EK-Preise und der Rabattsätze.
IDL
[propget, id(0x00000002)]
HRESULT _stdcall Values([in] BSTR Name, [out, retval] VARIANT* Value);
Diese Funktion gibt die Anzahl der Verkaufspreise, Einkaufspreise und Artikelrabatte an.
| Wert | Rückgabe |
|---|---|
| VKs | Anzahl der Artikel-Verkaufspreise |
| EKs | Anzahl der Artikel-Einkaufspreise |
| Rab | Anzahl der Rabattsätze für Artikel |
| Parameter | Beschreibung |
|---|---|
| [in] BSTR Name | String "VKs", "EKs" oder "Rab" |
| [out, retval] VARIANT* Value | Variant mit ganzzahligem Ergebnis des angeforderten Elements |
3.1.19 IAutoDataSetInfo Interface
Enthält die Eigenschaften einer Datentabelle.
IDL
[ uuid(DEED36C4-2EB5-11D3-BA03-004005232B30), version(1.0),
helpstring("Dispatch-Schnittstelle für AutoDataSetInfo-Objekt"),
dual, oleautomation ]
interface IAutoDataSetInfo : IAutoBase;
Dieses Interface enthält die Eigenschaften einer Datentabelle. Die Eigenschaft "Item" von AutoDataSetInfos gibt dieses Interface zurück.
IAutoDataSetInfo Eigenschaften
Methoden
| Name | Beschreibung |
|---|---|
| CreateDataSet | Erstellt AutoDataSet Interfaces. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Bez | Bezeichner einer Tabelle. |
| Fields | Zugriff auf AutoFieldInfos. |
| Indices | Zugriff auf AutoIndexInfos. |
| isNested | Nested-Status der Tabelle. |
| Name | Name einer Tabelle. |
| NestedDataSets | Zugriff auf AutoNestedDataSetInfos. |
| OrgName | Original-Name einer Tabelle. |
| Parent | Gibt das Parent Interface zurück. |
IAutoDataSetInfo::Name Eigenschaft
Name einer Tabelle.
IDL
__property BSTR* Name;
Gibt den Namen einer Datentabelle aus.
IAutoDataSetInfo::OrgName Eigenschaft
Original-Name einer Tabelle.
IDL
__property BSTR* OrgName;
Gibt den originalen Namen einer Datentabelle aus.
IAutoDataSetInfo::Bez Eigenschaft
Bezeichner einer Tabelle.
IDL
__property BSTR* Bez;
Gibt den Bezeichner einer Datentabelle aus.
IAutoDataSetInfo::Fields Eigenschaft
Zugriff auf AutoFieldInfos.
IDL
__property AutoFieldInfos** Fields;
Diese Eigenschaft verschafft Zugriff auf die Metainformationen der einzelnen Datenfelder innerhalb der Datentabelle.
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Ein Interface auf AutoFieldInfos |
IAutoDataSetInfo::Indices Eigenschaft
Zugriff auf AutoIndexInfos.
IDL
__property IAutoIndexInfos** Indices;
Diese Eigenschaft verschafft Zugriff auf die Metainformationen der einzelnen vorhandenen Indices innerhalb der Datentabelle.
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Ein Interface auf AutoIndexInfos |
IAutoDataSetInfo::NestedDataSets Eigenschaft
Zugriff auf AutoNestedDataSetInfos.
IDL
__property IAutoNestedDataSetInfos** NestedDataSets;
Diese Eigenschaft erlaubt Zugriff auf die NestedDataSet-Informationen innerhalb der Datentabelle.
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Ein Interface auf AutoNestedDataSetInfos |
IAutoDataSetInfo::CreateDataSet Methode
Erstellt AutoDataSet Interfaces.
IDL
[id(0x00000007)]
HRESULT _stdcall CreateDataSet([out, retval] AutoDataSet** Value);
Diese Funktion erstellt ein Interface vom Typ AutoDataSet. Mit diesem Aufruf werden Datentabellen erstellt.
| Parameter | Beschreibung |
|---|---|
| [out, retval] AutoDataSet** Value | Rückgabewert: Ein Interface vom Typ AutoDataSet wird erstellt |
IAutoDataSetInfo::isNested Eigenschaft
Nested-Status der Tabelle.
IDL
__property VARIANT_BOOL* isNested;
Diese Eigenschaft ist "True", wenn die Datentabelle eine eingebettete Tabelle (NestedDataSet) ist.
| Parameter | Beschreibung |
|---|---|
| Value | Rückgabewert: Boolean = "True" wenn die Datentabelle ein NestedDataSet ist, ansonsten "False" |
3.1.20 IAutoDataSetInfo2 Interface
Von IAutoDataSetInfo abstammendes Interface.
IDL
[ uuid(9FF6A302-81E5-48D8-8188-A118C8E29E2E), version(1.0),
dual, oleautomation ]
interface IAutoDataSetInfo2 : IAutoDataSetInfo;
Ab Build: 2519.
IAutoDataSetInfo2 Eigenschaften
Methoden
| Name | Beschreibung |
|---|---|
| CreateDataSet | Erstellt AutoDataSet Interfaces. |
| CreateDataSetEx | Erstellt AutoDataSet Interfaces mit erweiterter Feldliste. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Bez | Bezeichner einer Tabelle. |
| Fields | Zugriff auf AutoFieldInfos. |
| Indices | Zugriff auf AutoIndexInfos. |
| isNested | Nested-Status der Tabelle. |
| Name | Name einer Tabelle. |
| NestedDataSets | Zugriff auf AutoNestedDataSetInfos. |
| OrgName | Original-Name einer Tabelle. |
| Parent | Gibt das Parent Interface zurück. |
IAutoDataSetInfo2::CreateDataSetEx Methode
Erstellt AutoDataSet Interfaces mit erweiterter Feldliste.
IDL
[id(0x0000000B)]
HRESULT _stdcall CreateDataSetEx([out, retval] AutoDataSet** Result);
Diese Funktion erstellt ein Interface vom Typ "AutoDataSet". Mit diesem Aufruf werden Datentabellen mit erweiterter Feldliste erstellt. Die erweiterte Feldliste sorgt z. B. bei einer Adressen-Tabelle dafür, dass alle Felder, die z. B. Rechnungs- oder Lieferadresse betreffen, in der Feldliste vorhanden sind. So kann dann wie beim Im/Export-Editor auf alle Felder dieser Tabelle zugegriffen werden, ohne diese erst umständlich mit Ranges zusammenstellen zu müssen. Zur Vereinfachung kann man sagen, dass die Tabelle um ihre verknüpften Tabellen erweitert wird.
Hinweis
Im Falle eines Problems beim Posten können die zusätzlich eingefügten Felder nicht korrekt mit Cancel zurückgesetzt werden. Daher empfiehlt es sich, wie im Beispiel unten, immer eine Transaktion zu setzen, wenn mehrere Tabellen angesprochen werden.
| Parameter | Beschreibung |
|---|---|
| [out, retval] AutoDataSet** Result | Rückgabewert: Ein Interface vom Typ AutoDataSet mit erweiterter Feldliste |
Delphi-Codebeispiel
procedure DoWork;
var
bError: Boolean;
hDataSet: Variant;
begin
bError := False;
hDataSet := gvComApp.DataSetInfos['Adressen'].CreateDataSetEx;
repeat
hDataSet.StartTransaction;
bError := False;
hDataSet.Append;
try
hDataSet.Fields['Status'].AsString := 'Hersteller';
hDataSet.Fields['AdrNr'].AsString := hDataSet.SetupNr('');
hDataSet.Fields['Re.Na2'].AsString := 'ReNa';
hDataSet.Fields['Li.Na2'].AsString := 'LiNa';
hDataSet.Post;
hDataSet.Commit;
except
DebugMessage('Fehler: ' + ExceptionMessage);
hDataSet.Cancel;
hDataSet.Rollback;
bError := True;
end;
until not bError;
end;
3.1.21 IAutoDataSetInfo3 Interface
Von IAutoDataSetInfo2 abstammendes Interface.
IDL
[ uuid(414D9BC4-DE6E-473D-AED3-21CE847CD414), version(1.0),
dual, oleautomation ]
interface IAutoDataSetInfo3 : IAutoDataSetInfo2;
Ab Build: 5030.
Um die Partnertabellen nutzen zu können, benötigen Sie zwei Arten von Schlüsseln: Einen für Ihre microtech Software, um im DB-Manager die Strukturen zu erstellen, und für Ihre Endkunden einen Schlüssel, den Sie mit AutoSpecialTableDefinition.ActivateExtendedFkt für die Partnertabelle beim Endkunden scharfschalten. Hierfür ist ein gesonderter Vertrag mit microtech notwendig.
Erstellen einer Tabellen Information
Alle Optionen, die mit dem Interface IAutoDataSetInfo3 verändert werden können, lassen sich folgendermaßen auslesen:
- Stellen Sie sicher, dass Sie Ihren Schlüssel für Partnertabellen eingetragen haben
- Erstellen Sie Ihre Partnertabelle im DB-Manager
- Ändern Sie mit dem DB-Manager die Partnertabelle auf die von Ihnen gewünschte Struktur (Vorgabefelder, Vorgabesortierung, Volltextfelder, Tabellenbeschreibung)
- Lesen Sie mit dem Interface IAutoDataSetInfo3 die gewünschten Eigenschaften aus
- Die so gewonnenen Strings können Sie verwenden, um eine Partnertabelle mit den gewünschten Feldern zu befüllen (siehe Beispiel)
Die Inhalte der einzelnen Werte werden hier nicht erklärt. Der Ablauf sieht vor, dass die Eigenschaften in einer Partnertabelle auf Ihrem System angelegt werden und die Werte nur gelesen werden, ohne Änderungen vorzunehmen. Die so erzeugten Werte können Sie dann verwenden, um bei Ihren Kunden die Tabellen anzulegen.
Zugriff auf die Tabellen
Beim Öffnen der Tabellen muss eine besondere Namensgebung beachtet werden:
BpApp.DataSetInfos['PartnerTabelle00101']
Dieser Name setzt sich aus drei Elementen zusammen:
PartnerTabelleals feststehender Name- Drei Zeichen als Nummer, die den Partner kennzeichnet
- Drei Zeichen als Nummer, die die Tabelle kennzeichnet (aktuell 01 bis 03)
Sie können nur auf Ihre eigene Partnertabelle schreibend zugreifen. Andere vorhandene Partnertabellen können gelesen, aber nicht geändert werden. Der Name wird auch für DataSetInfos['PartnerTabelle00101'].CreateDataSet verwendet.
Ihre Nummern und Aktivierungsinformationen erhalten Sie bei Abschluss des notwendigen Zusatzvertrages für die Partnertabellen.
Delphi-Codebeispiel: Zugriff auf Tabellenbild
programm FreieTabellen;
var
BpApp: IAutoApplication;
BpSpecialTableDefinition: AutoSpecialTableDefinition;
BpAutoDataSetInfo: AutoDataSetInfo;
begin
BpApp := CreateOleObject('BpNT.Application');
BpApp.Init('Ihr ConnectionName', 'Ihr ConnectionKey', 'Ihr Anmeldename', 'Ihr Passwort');
BpApp.SelectMand('Ihr Mandant');
BpSpecialTableDefinition := (BpApp.GetSpecialObject(soTableDefinition)
as AutoSpecialTableDefinition);
BpSpecialTableDefinition.ActivateExtendedFkt(
'Solution Partner Name', 'Solution Partner Postleitzahl', 'Solution Partner Schlüssel');
BpAutoDataSetInfo := BpApp.DataSetInfos['PartnerTabelle00101'];
// Lesen & Schreiben von Meta-Eigenschaften
s1 := BpAutoDataSetInfo.VolltextFelder;
s2 := BpAutoDataSetInfo.VorgabeSortierungen;
s3 := BpAutoDataSetInfo.VorgabeFelder;
s := BpAutoDataSetInfo.TabellenBeschreibung;
sl := TStringList.Create;
try
sl.CommaText := s;
if sl.Values['TabImageKz'] = '' then
sl.Values['TabImageKz'] := 'ikZeit'
else
sl.Values['TabImageKz'] := '';
if BpSpecialTableDefinition.MaintenanceMode(
TRUE, 'Die Partnertabelle wird gerade erstellt.', 5) then
try
BpAutoDataSetInfo.TabellenBeschreibung := sl.CommaText;
BpAutoDataSetInfo.VolltextFelder := s1;
BpAutoDataSetInfo.VorgabeSortierungen := s2;
BpAutoDataSetInfo.VorgabeFelder := s3;
BpAutoDataSetInfo.SetupTable;
finally
BpSpecialTableDefinition.MaintenanceMode(
FALSE, 'Die Partnertabelle wird gerade erstellt.', 1);
end;
finally
sl.Free;
end;
end;
IAutoDataSetInfo3 Eigenschaften
Methoden
| Name | Beschreibung |
|---|---|
| CreateDataSet | Erstellt AutoDataSet Interfaces. |
| CreateDataSetEx | Erstellt AutoDataSet Interfaces mit erweiterter Feldliste. |
| SetupTable | Schreibt die Datenbankinformation in die Tabelle durch. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AenderungsInfoFelder | Holt die Liste mit den Änderungsinformationen. |
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Bez | Bezeichner einer Tabelle. |
| Fields | Zugriff auf AutoFieldInfos. |
| FreieSortierung | Holt die Liste der Sortierungen. |
| Indices | Zugriff auf AutoIndexInfos. |
| isNested | Nested-Status der Tabelle. |
| Name | Name einer Tabelle. |
| NestedDataSets | Zugriff auf AutoNestedDataSetInfos. |
| OrgName | Original-Name einer Tabelle. |
| Parent | Gibt das Parent Interface zurück. |
| SelektionsFelder | Holt die Liste der Selektionsfelder. |
| TabellenBeschreibung | Holt die Tabellenbeschreibung. |
| VolltextFelder | Holt die Liste der Volltextfelder. |
| VorgabeFelder | Holt die Liste der Vorgabefelder. |
| VorgabeSortierungen | Holt die Liste der Sortierungen. |
IAutoDataSetInfo3::SelektionsFelder Eigenschaft
Holt die Liste der Selektionsfelder.
IDL
__property BSTR SelektionsFelder;
SelektionsFelder steht nur für den Zugriff auf Tabellen zur Verfügung. Für Partnertabellen ist diese Funktion ohne Wirkung. Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde. Selektionsfelder sind nicht für Partnertabellen verfügbar.
IAutoDataSetInfo3::FreieSortierung Eigenschaft
Holt die Liste der Sortierungen.
IDL
__property BSTR FreieSortierung;
FreieSortierung steht nur für den Zugriff auf Tabellen zur Verfügung. Für Partnertabellen ist diese Funktion ohne Wirkung. Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde. Freie Sortierungen sind nicht für Partnertabellen verfügbar.
IAutoDataSetInfo3::VorgabeFelder Eigenschaft
Holt die Liste der Vorgabefelder.
IDL
__property BSTR VorgabeFelder;
Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde.
IAutoDataSetInfo3::VorgabeSortierungen Eigenschaft
Holt die Liste der Sortierungen.
IDL
__property BSTR VorgabeSortierungen;
Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde.
IAutoDataSetInfo3::VolltextFelder Eigenschaft
Holt die Liste der Volltextfelder.
IDL
__property BSTR VolltextFelder;
Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde.
IAutoDataSetInfo3::TabellenBeschreibung Eigenschaft
Holt die Tabellenbeschreibung.
IDL
__property BSTR TabellenBeschreibung;
Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde.
IAutoDataSetInfo3::AenderungsInfoFelder Eigenschaft
Holt die Liste mit den Änderungsinformationen.
IDL
__property BSTR AenderungsInfoFelder;
Um die Eigenschaften zu schreiben, muss SetupTable zum Festschreiben der Tabelle aufgerufen werden.
Anmerkung
Schreibend nur ausführbar, wenn MaintenanceMode erfolgreich aufgerufen wurde.
IAutoDataSetInfo3::SetupTable Methode
IDL
[id(0x000001FC)]
HRESULT _stdcall SetupTable([out, retval] HRESULT* Result);
SetupTable muss nach jeder schreibenden Aktion für die Tabellendefinition aufgerufen werden. Dieser Aufruf schreibt die Datenbankinformation in die Tabelle durch.
Hinweis
Damit SetupTable ausgeführt werden kann, muss MaintenanceMode erfolgreich ausgeführt werden.
| Parameter | Beschreibung |
|---|---|
| [out, retval] HRESULT* Result | Reserviert. Aktuell wird immer "0" zurückgegeben. |
3.1.22 IAutoDataSetInfo4 Interface
Von IAutoDataSetInfo3 abgeleitetes Interface.
IDL
[ uuid(50353243-2C4E-48BD-B95A-50BEDD243DC8), dual, oleautomation ]
interface IAutoDataSetInfo4 : IAutoDataSetInfo3;
Ab Build: 5036.
IAutoDataSetInfo4 Eigenschaften
Methoden
| Name | Beschreibung |
|---|---|
| CreateDataSet | Erstellt AutoDataSet Interfaces. |
| CreateDataSetEx | Erstellt AutoDataSet Interfaces mit erweiterter Feldliste. |
| OptimizeChangeInfo | Optimiert für einen Zeitraum Änderungsprotokoll-Einträge. |
| SetupTable | Schreibt die Datenbankinformation in die Tabelle durch. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AenderungsInfoFelder | Holt die Liste mit den Änderungsinformationen. |
| Application | Zugriff auf das Basisobjekt, von dem alle Interfaces abstammen. |
| Bez | Bezeichner einer Tabelle. |
| Fields | Zugriff auf AutoFieldInfos. |
| FreieSortierung | Holt die Liste der Sortierungen. |
| Indices | Zugriff auf AutoIndexInfos. |
| isNested | Nested-Status der Tabelle. |
| Name | Name einer Tabelle. |
| NestedDataSets | Zugriff auf AutoNestedDataSetInfos. |
| OrgName | Original-Name einer Tabelle. |
| Parent | Gibt das Parent Interface zurück. |
| SelektionsFelder | Holt die Liste der Selektionsfelder. |
| TabellenBeschreibung | Holt die Tabellenbeschreibung. |
| VolltextFelder | Holt die Liste der Volltextfelder. |
| VorgabeFelder | Holt die Liste der Vorgabefelder. |
| VorgabeSortierungen | Holt die Liste der Sortierungen. |
IAutoDataSetInfo4::OptimizeChangeInfo Methode
Optimiert für einen Zeitraum Änderungsprotokoll-Einträge.
IDL
[id(0x00000259)]
HRESULT _stdcall OptimizeChangeInfo([in] DATE Start, [in] DATE End, [in] BSTR Area);
Vor dem Prüfen/Abarbeiten einer Änderungsinformationen-Tabelle sollte man diese Funktion aufrufen. Das anzugebende Zeitfenster sollte das letzte geprüfte Zeitfenster nicht überlappen, jedoch auch keine Lücke beinhalten. Der Bereich bestimmt, welche Änderungsinfo-Definition abgearbeitet werden soll. So hat man maximal einen Änderungsinformations-Datensatz zu dem jeweilig geänderten Datensatz und muss entsprechend nicht mehrfach einen Datensatz abgleichen.
In dem angegebenen Zeitfenster wird jeweils nur der jüngste Änderungsinformations-Datensatz bestehen belassen; ältere Datensätze werden gelöscht.
| Parameter | Beschreibung |
|---|---|
| [in] DATE Start | Datum und Uhrzeit. Ab diesem Zeitpunkt soll optimiert werden. |
| [in] DATE End | Datum und Uhrzeit. Bis zu diesem Zeitpunkt soll optimiert werden. |
| [in] BSTR Area | Bezeichner der zu optimierenden Änderungsinformation. Bei einer Leereingabe werden alle Änderungsinfo-Datensätze optimiert. |