Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Dieser abweichende Index wird dann verwendet, um auf die Datentabelle zu zugreifen. 

Da die Die verschiedenen Indizes, ihre Namen und die Felder müssen Ihnen genau bekannt sein müssen, benötigen Sie die Feldliste (siehe DBInfo-Erklärung). .

DBInfo-Formel mit abweichendem Index

Allgemeiner Aufbau: 

Code Block
External$('DBInfo("Name der Datentabelle"|"IX;<Index>"|Schlüsselwert[e]|"Zielfeldname")') 

Mit IX; wird immer ein Abweichender Index eingeleitet. 

<Index>: Hier muss der Indexname angegeben werden, der verwendet werden soll. 


Beispiel: Zugriff auf Versand-Datensatz

Angenommen, Ihnen ist im Bereich "Versand" folgender Aufbau bekannt:

 In der Feldliste steht bei Versand folgendes: DataSet: Versand - Versand Versand.

Code Block
... 

...



Index: ID - ID 

...



IndexField:ID - ID 

...



Index: PktNr - Paketnummer 

...



IndexField:PktNr - Paketnummer 

...



IndexField:VsdArt - Versandart 

...



Index: VsdArtLfdPktNr - Versandart 

...



IndexField:PktNrVsdArt - Versandart 

...



IndexField:LfdPktNr - laufende Paketnummer 

...



Index: AdrNr - Adressnummer 

...



IndexField:AdrNr - Adressnummer 

...



IndexField:PktNr - Paketnummer 

...



Index: AdrNrDat - Adressnummer & Datum 

...



IndexField:AdrNr - Adressnummer 

...



IndexField:Dat - Datum 

...



IndexField:PktNr - Paketnummer 

...



Index: BelegNr - Belegnummer 

...



IndexField:BelegNr - Belegnummer 

...



... 

Wenn Sie auf einen Versand-Datensatz zugreifen möchten, haben aber nicht die Paketnummer, sondern nur die Belegnummer des Vorgangs, dann kann man können Sie mit IX;BelegNr den Index benutzen, der die Belegnummer benötigt. 

Die Schlüsselwerte müssen natürlich angepasst werden, so dass sie zu den Feldern des abweichenden Indexes passen. 

 

...

DBInfo-Formel mit verkürztem Index: 

Bei komplizierten Indizes sind oft nicht alle Felder eines Indexes gewünscht, da man nicht die Ihnen z. B. nicht alle nötigen Daten hatbekannt sind. Damit diese trotzdem verwendet werden können, gibt es die Möglichkeit, einen Index zu verkürzen. Sozusagen anzugeben wie viele Parameter vom Index verwendet werden sollen. Diese Anzahl wird mit einem Semikolon hinter dem abweichenden Index eingetragen. Die restlichen Felder des Indexes werden nicht beachtet. 

Allgemeiner Aufbau:

Code Block
External$('DBInfo("Name der Datentabelle"|"IX;<Index>;<Anzahl der verwendeten Parameter>"|<übergebene Parameter>|"Zielfeldname")')

...

 


Beispiel: Es soll nur mit der Auftragsnummer auf die Vorgänge zugegriffen werden

Angenommen, Folgendes ist Ihnen in diesem Beispiel bekannt:. In der Feld-Liste steht folgendes: 

DataSet: Vorgang - Vorgänge 

Code Block
... 

...



Index: ID - ID 

...



IndexField:ID - ID 

...



Index: BelegNr - Belegnummer 

...



IndexField:BelegNr - Belegnummer 

...



Index: PrjNr - Projektnummer 

...



IndexField:PrjNr - Projektnummer 

...



IndexField:Dat - Datum 

...



Index: AuftrNr - Auftragsnummer 

...



IndexField:AuftrNr - Auftragsnummer 

...



IndexField:BelegNr - Belegnummer 

...



... 


Da mit der Auftragsnummer zugegriffen werden soll, wird der Index AuftrNr genommen. Für diesen wird allerdings auch die Belegnummer benötigt, die wir nicht haben. Also muss der Index verkürzt werden. 

Dies sieht wie folgt aus: 

Code Block
IX;AuftrNr;1 

Wir verwenden den abweichenden Index AuftrNr und nehmen nur den ersten Parameter vom Index. 

Komplett würde das so aussehen: External$('DBInfo("Vorgang"|"IX;AuftrNr;1"|<Variable für Auftragsnummer>|"Zielfeldname")') 


Beispiel:

...

 Es soll eine Liste erstellt werden für einen speziellen Kunden mit allen Artikeln und eine Bemerkung, ob er diesen Artikel jemals gekauft hat

. Alle Artikel kann man nur in den Stammdaten->Artikel ausgeben. Dort muss also eine Liste erstellt werden. Wenn der Kunden einen Artikel erworben hat, sehen Sie dies nur in der History. Somit müsste aus der Artikel-Liste auf die History-Datenbank zu gegriffen werden. 

Angenommen, Folgendes ist Ihnen in diesem Beispiel bekannt:

In der Feldliste steht folgendes: DataSet: History - History 

Code Block
... 

...



Index: ID - ID 

...



IndexField:ID - ID 

...



Index: AdrNr - Adressnummer 

...



IndexField:AdrNr - Adressnummer 

...



IndexField:Dat - Datum 

...



IndexField:ArtNr - Artikelnummer 

...



Index: BelegNr - Belegnummer 

...



IndexField:BelegNr - Belegnummer 

...



IndexField:BelegPosNr - Belegpositionsnummer 

...



IndexField:ArtNr - Artikelnummer 

...



Index: PrjNr - Projektnummer 

...



IndexField:PrjNr - Projektnummer 

...



IndexField:Dat - Datum 

...



Index: AuftrNr - Auftragsnummer 

...



IndexField:AuftrNr - Auftragsnummer 

...



Index: Dat - Datum 

...



IndexField:Dat - Datum 

...



IndexField:BelegNr - Belegnummer 

...



Index: VsdArt - Versandart 

...



IndexField:VsdArtBez - Versandart 

...



IndexField:BelegNr - Belegnummer 

...



IndexField:Dat - Datum 

...



Index: ArtNr - Artikelnummer 

...



IndexField:ArtNr - Artikelnummer 

...



IndexField:Dat - Datum 

...



IndexField:AdrNr - Adressnummer 

...



Index: AdrNrArtNr - Adress- und Artikelnummer 

...



IndexField:AdrNr - Adressnummer 

...



IndexField:ArtNr - Artikelnummer 

...



IndexField:Dat - Datum 

...



... 


In der Liste sind die Artikelnummern vorhanden und die Adressnummer des Kunden. Demnach benötigen wir einen Index mit Artikelnummer und Adressnummer. Bei allen Indizes wird allerdings ein Datum gebraucht. Dieses steht uns jedoch nicht zur Verfügung. Das Datum muss also abgeschnitten werden. Damit dies gemacht werden kann, muss das Datum am Ende des Index stehen. Also wird ein Index benötigt, in dem die ersten beiden Parameter die Artikel-Nr und die Adress-Nr und der dritte das Datum ist. Dies trifft auf den Index AdrNrArtNr zu. Die Formel würde dann so aussehen, wenn festgelegt ist, dass die Liste für den Kunden mit der Kundenummer "10000" ausgegeben werden soll: 

Code Block
External$('DBInfo("History"|"IX;AdrNrArtNr;2"|"10000"|Art.ArtNr|"<gewünschtes Feld>")') 


Da es ja in diesem Beispiel das Ziel war auszugeben, ob der Kunde den Artikel schon einmal gekauft hat, wird ein Vergleich benötigt. Da eine DBInfo-Formel "Keine Eintragung..." zurück gibt, wenn es keinen passenden Datensatz findet, kann einfach als gewünschtes Feld die Artikelnummer genommen werden. Wenn der Rückgabewert die Artikelnummer ist, dann hat der Kunde "10000" diesen Artikel bereits einmal gekauft, sonst nicht. 

Dies könnte wie folgt aussehen: Cond(External$('DBInfo("History"|"IX;AdrNrArtNr;2"|"10000"|Art.ArtNr|"ArtNr")') = Art.ArtNr,"Artikel bereits gekauft","Artikel noch nie gekauft")

Code Block