7 Datenbankabfragen. 7.1 Die Hibernate Query Language

Größe: px
Ab Seite anzeigen:

Download "7 Datenbankabfragen. 7.1 Die Hibernate Query Language"

Transkript

1 149 Dieses Kapitel widmet sich dem effektiven Zugriff auf Daten. Mit Datenbankabfragen können Objekte mit bestimmten Eigenschaften gesucht werden. Erst mit Abfragen ist es möglich, Objekte zu laden, deren ID nicht bekannt ist. Es werden die drei Möglichkeiten beschrieben, wie Abfragen definiert und ausgeführt werden können. Zuerst wird die Hibernate Query Language (HQL) erläutert. Wir zeigen auch die programmatische Form der Abfrage mit Queries und Criterias. Außerdem zeigen wir, wie in Hibernate SQL-Abfragen genutzt werden können. Zum Ende des Kapitels werden Filter beschrieben, welche die Ergebnismenge von Abfragen einschränken. Für die Beispiele wird in dem Kapitel das einfache Beispiel weiter verwendet. Wie in der folgenden Abbildung verwenden wir Termine, die ihre Teilnehmer kennen. Überblick Abb. 7 1 Termin und Benutzer 7.1 Die Hibernate Query Language Die Syntax der HQL ist der von SQL sehr ähnlich. Groß- und Kleinschreibung ist für die Schlüsselwörter der HQL unerheblich. Für die weiteren Beispiele werden wir Kleinschreibung benutzen. Die einfachste Abfrage mit der HQL ist in unserem Fall die folgende: from Termin gleichbedeutend zu FROM Termin

2 150 Query ausführen Diese ganz einfache Abfrage liefert alle Termine aus der Datenbank und wird mit dem Befehl createquery an einer Session erzeugt: Query q = session.createquery( from Termine ); List<Termin> alletermine = q.list(); Die Ausführung der Query wird erst mit einer der Methoden list, scroll oder iterator gestartet. Ausführung der Query Befehl list() iterator() scroll() uniqueresult() Ergebnis Liefert eine Liste der Ergebnisse vom Typ java.util.list Liefert einen Iterator über die Ergebnisse vom Typ java.util.iterator Bietet die Möglichkeit, innerhalb des Ergebnisses zu blättern, liefert als Typ org.hibernate.scrollableresults Nützlich, wenn die Abfrage nur ein Ergebnis liefern kann, ist entweder null oder vom Typ java.lang.object Falls mehrere Ergebnisse gefunden werden, wird eine Exception geworfen! Ergebnis der Abfrage auto-import Eine Query kann nur mit den beschriebenenen Methoden ausgeführt werden, solange die erzeugende Session aktiv und nicht geschlossen ist. Die gefundenen Objekte befinden sich im persistenten Zustand, solange die Session nicht beendet wurde. Daher werden Änderungen an Objekten auch gespeichert, wenn diese durch eine Abfrage bezogen wurden und die Session aktiv ist. Das Ergebnis der obigen Abfrage from Termin sind alle Termine, die in der Datenbank gespeichert sind. In der from-klausel wird der Typ der Objekte angegeben, nach denen gesucht wird. Als Bezeichnung wird der Name des Typs angegeben. Es ist zu beachten, dass bei der Angabe des Typs auf Groß- und Kleinschreibung unterschieden wird. Die Schreibweise muss der der Klasse bzw. des Interfaces entsprechen! Im Beispiel haben wir den Typ Termin ohne das Package angegeben. Der Name des Typs muss in der Abfrage nur voll qualifiziert angegeben werden, wenn in der Mapping-Datei explizit das Attribut auto-import= false gesetzt wurde. Ansonsten sucht Hibernate nach dem Typ in allen Klassen und Interfaces, die bei der Configuration angemeldet sind 1. Dadurch können die Typen in den Abfrage ohne volle Qualifizierung angegeben werden.

3 7.1 Die Hibernate Query Language 151 Wird innerhalb mehrerer Objekttypen gesucht, werden diese durch Kommata getrennt. Das entspricht einem Join in SQL. Um diese Objekttypen in anderen Teilen der Abfrage zu referenzieren, wird nach dem Objekttyp ein Alias angegeben. Dieses Alias steht dann stellvertretend in der Abfrage für alle persistenten Objekte dieses Typs. Zur besseren Lesbarkeit darf optional»as«dazwischen stehen. Aliase from Termin as termin from Termin termin, Benutzer benutzer Sind in der from-klausel einer Abfrage mehrere Typen angegeben, werden die Ergebnisse als Liste von Arrays geliefert. Die nächste Abfrage liefert alle Kombinationen von Terminen und Benutzern als Liste von Arrays: Tupel Query q = session.createquery( from Termin, Benutzer ); List tupel = q.list(); Object[] arr = (Object[]) tupel.get(0); Termin termin = arr[0]; Benutzer benutzer = arr[1]; Die Abfragen können auf Ergebnisse mit bestimmten Eigenschaften eingeschränkt werden. Wie in SQL gibt eine where-klausel die Bedingung an, die für das Ergebnis zutreffen muss. Mit der folgenden Abfrage finden wir alle Termine, die im»raum 123«stattfinden: from Termin as term where term.ort = Raum 123 Der Bezeichner»ort«in der obigen Abfrage bezieht sich auf das gleichnamige Property der Klasse Termin und nicht auf den Spaltennamen in der Tabelle! Genauso bezieht sich der Bezeichner Termin auf den Namen der Klasse und nicht auf den Tabellennamen. Achtung Um Attribute von enthaltenen Objekten mit in die Abfrage einzubeziehen, werden sie einfach mit einem Punkt verknüpft. Als Beispiel suchen wir nach allen Terminen für einen Benutzer. Bei der Abfrage soll nur dessen Kürzel bekannt sein. Die Abfrage für die Termine des Benutzers, mit dem Kürzel»rb«lautet dann wie folgt: from Termin t where t.teilnehmer.kuerzel = rb 1. Wenn gleichnamige Klassen in unterschiedlichen Packages mit Hibernate verwaltet werden, muss auto-import ausgeschaltet werden, ansonsten ist der Typname für die Abfragen nicht eindeutig, und es wird eine Exception geworfen.

4 152 Kriterien Für die Beschreibung der Kriterien stehen die Standard-SQL-Operatoren zur Verfügung: =, <>, <, >, >=, <=, like, between, not between, in und not in. Folgendes Beispiel zeigt eine Abfrage aller Termine, deren Property Ort mit dem String»Raum A«anfängt: from Termin term where term.ort like Raum A% Wie man sieht, wird die Wildcard % aus SQL auch in HQL für das String-Kriterium like verwendet und steht für beliebig viele Zeichen. Mehrere Kriterien werden innerhalb der where-klausel mit den booleschen Operatoren and, or und not verknüpft und können mit Klammern gruppiert werden. Das folgende Beispiel liefert alle Termine, die in der Beschreibung mit»projekt Hibernate«anfangen und in Hamburg oder Berlin stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and (termin.ort = Hamburg or termin.ort= Berlin ) Die obige Abfrage lässt sich auch mit dem in-operator formulieren: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin in ( Hamburg, Berlin ) Der in-operator kann wie alle anderen Operatoren mit not negiert werden. Die folgende Abfrage findet somit alle Termine mit der obigen Beschreibung, die weder in München noch in Köln stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin not in ( München, Köln ) Eine weitere Möglichkeit, ein Kriterium zu bestimmen, sind Funktionen. Die folgende Abfrage liefert alle Termine, für die mindestens zwei Teilnehmer eingetragen sind. from Termin t where size(t.teilnehmer) > 2 Mit empty ist es sehr einfach abzufragen, ob eine Collection leer ist. So können mit der Abfrage alle Termine gefunden werden, für die keine Teilnehmer eingetragen sind: from Termin t where t.teilnehmer is empty Select Sind für die Abfrage nur Objekte eines bestimmten Typs erforderlich, werden vor der from-klausel mit einer select-klausel die Ergebnistypen ausgewählt. Im Vergleich zu SQL ist die select-klausel bei der Hibernate Query Language optional. In der select-klausel werden die Aliase

5 7.1 Die Hibernate Query Language 153 der Objekte angegeben, die als Ergebnis für die Abfrage von Interesse sind. Die nächste Abfrage liefert z.b. alle Benutzer als Liste, die bei Terminen mit der Beschreibung»Buchbesprechung«eingetragen sind: select t.teilnehmer from Termin as t where t.beschreibung = Buchbesprechung Eine Abfrage wie from Termin bezieht sich auf alle in der Datenbank gespeicherten Objekte des Typs Termin. Bei der Abfrage werden auch sämtliche Subklassen von Termin aus der Datenbank geladen, die der Session bzw. der Configuration bekannt sind. Als Typ kann natürlich auch ein Interface angegeben werden. Das Ergebnis bezieht dann alle persistenten Objekte mit ein, die dieses Interface implementieren. Polymorphe Abfragen werden in HQL immer identisch formuliert, unabhängig von der Abbildung der Vererbungshierarchie. Hibernate muss bei polymorphen Anfragen mehrere SQL-Statements an die Datenbank schicken. Es ist zu beachten, dass in den Resultaten nicht mit dem Befehl scroll geblättert werden kann! Polymorphe Abfragen Achtung Nicht bei jeder Anfrage stehen zur Zeit der Programmierung die Kriterien fest. Häufig ist es notwendig, der Abfrage zur Laufzeit Parameter für die Kriterien zu übergeben. Hibernate bietet zwei Möglichkeiten, Parameter anzugeben. Ein Parameter kann in einer Abfrage mit einem Fragezeichen als Platzhalter angegeben werden. Anstelle dieses Platzhalters muss der Query zur Laufzeit vor der Ausführung der Abfrage ein Wert- oder ein kompatibles Objekt übergeben werden. Damit mehrere Parameter pro Abfrage benutzt werden können, übergibt man diese nummeriert der Query. Um Termine z.b. nach Ort zu suchen, würde man folgende Abfrage stellen: Parameter String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort =? ); q.setstring(0, gesuchterort); List gefundenetermine = q.list(); Bei Hibernate fängt die Nummerierung von Parametern immer bei 0 an und verhält sich somit wie Arrays oder die Collections aus dem JDK. Bei JDBC wird dagen die 1 für den ersten Parameter verwendet! Achtung

6 154 Benannte Parameter Entitäten als Parameter Sortierung Hibernate bietet auch die Möglichkeit, benannte Parameter zu benutzen. Ein benannter Parameter wird in der HQL mit einem Doppelpunkt eingeleitet. Diese benannten Platzhalter erhöhen die Lesbarkeit und verringern die Fehleranfälligkeit bei Abfragen. Die gleiche Abfrage mit einem benannten Parameter sieht wie folgt aus: String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setstring( ort, gesuchterort); List gefundenetermine = q.list(); Einer Query kann auch eine Entität als Suchparameter übergeben werden. Für den Platzhalter wird der Query ein bereits geladenes Objekt eingesetzt. Hibernate erzeugt für die Query selbstständig die Verknüpfung in seiner SQL-Abfrage. Es kann damit z.b. nach allen Terminen für einen bestimmten Ort gesucht werden: Ort ort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setentity( ort, ort); List gefundenetermine = q.list(); Die Ergebnisse einer Abfrage können sortiert werden. Dazu wird nach der from- und der where-klausel der Befehl order by angegeben, mit einem Attribut, nach dem sortiert werden soll. Das entspricht genau dem order by in SQL. Zusätzlich kann mit asc oder desc angegeben werden, ob auf- oder absteigend sortiert werden soll. Wird zu dem Befehl order by weder asc noch desc angegeben, wird aufsteigend sortiert (asc). Sind mehrere Sortierkriterien erwünscht, werden sie in absteigender Rangfolge mit Kommata getrennt angegeben. Die obige Anfrage suchte nach Terminen mit einem bestimmten Ort. Diese Anfrage sieht wie folgt aus, wenn sie um eine Sortierung nach dem Anfang erweitert wird: from Termin termin where termin.ort = :ort order by termin.anfang Joins Bei einer Abfrage, die sich auf mehrere Typen bezieht, werden die Tabellen zum kartesischen Produkt verknüpft. Alle möglichen Kombinationen der Zeilen der beteiligten Tabellen werden dabei kombiniert. Die Auswahl der gelieferten Kombinationen wird durch die unterschiedlichen Join-Typen bestimmt. Bei einem Join werden die gesuchten Typen in der from-klausel angegeben. Die Basis der Abfrage bilden alle möglichen Kombinationen zwischen den angegebenen Typen.

7 7.1 Die Hibernate Query Language 155 Die folgende Abfrage liefert alle Termine und Benutzer, die sich in Berlin treffen. Die Ergebnisse sind Arrays mit jeweils dem Termin und einem der Teilnehmer. from Termin t inner join t.teilnehmer where t.ort = Berlin Um alle Termine zu bekommen, auch die ohne Teilnehmer, ist ein left outer join notwendig. In dem Ergebnis sind jetzt auch Termine ohne Teilnehmer enthalten. Das Ergebnis ist eine Liste von Arrays. Bei den Terminen ohne Teilnehmer ist das Feld des Arrays für die Teilnehmer null. from Termin t left outer join t.teilnehmer where t.ort = Berlin Ein right outer join liefert alle Kombinationen zwischen den beiden Tabellen und alle Einträge aus der zweiten Tabelle, für die es keinen entsprechenden Eintrag in der ersten Tabelle gibt. Die folgende Abfrage liefert eine Liste aller Benutzer, die einen Termin in Berlin eingetragen haben. Die Abfrage enthält keinen Join- Befehl. Hibernate macht intern einen Join über die Fremdschlüssel- Tabelle für die Benutzer und die Einschränkung auf den Ort. Daher wird diese Art auch impliziter Join genannt. select t.teilnehmer from Termin t where t.ort = Berlin Es gibt die Möglichkeit, Queries in Mapping-Dateien zu definieren, anstatt diese im Progammcode zu schreiben. Diese können dann unabhängig vom Rest des Programms weiterentwickelt und optimiert werden. Eine solche Named Query wird direkt an der Session mit der Methode getnamedquery bezogen. Benannte Queries Ort ort = xyz.getgesuchterort(); Query q = session.getnamedquery( alletermine ); q.setentity( ort, ort); List alletermine = q.list(); Wie in dem Beispiel zu sehen, entfällt der lange Text der eigentlichen Query im Programmcode. Als Nachteil ist sofort ersichtlich, dass die Namen der Parameter im Programmtext nicht erkennbar sind! Die Query wird in der Mapping-Datei durch das Element <query> definiert und mit dem Attribut name als»alletermine«benannt. Die eigentliche Query wird zusätzlich in einem CDATA-Element verpackt:

8 156 <query name= alletermine > <![CDATA[from Termin as t where t.ort = :ort ]]> </query> Projektion Genauere Angaben zu den Mapping-Dateien und deren Syntax sind in Kapitel 4 zu finden. Für Auswertungen und Berichte sind bei einer Abfrage nicht immer die kompletten Objekte mit allen Attributen notwendig. Auch wird bei diesen Abfragen nicht die transparente Persistenz benötigt, um geladene Objekte ändern zu können. Bei diesen Abfragen wird nur ein Teil der Werte aus den Ergebnissen benötigt. Das wird Projektion genannt. In der select-klausel dürfen auch ausgewählte Attribute eines gesuchten Objektes angegeben werden. Diese Attribute werden in der Ergebnisliste dann als Array geliefert. Das Ergebnis ist nur ein aktuelles Abbild der Daten, es hat für Hibernate keinen Zustand und keine transparente Persistenz. Somit werden Änderungen an diesen Daten nicht wieder in die Datenbank geschrieben. Das folgende Beispiel liefert den Titel, die Anfangszeit und die Beschreibung aller Termine: Query q = session.createquery( select t.titel, termin.anfang, termin.beschreibung + from Termin as termin ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String titel = (String) zeile[0]; Date anfang = (Date) zeile[1]; String beschreibung = (String) zeile[2];... } Gruppierungen und Zusammenfassungen In unserem Beispiel kann es gewünscht sein, dass wir in einem Bericht die Anzahl der Termine pro Ort ausgeben. Wir wollen die Frage beantworten, in welchen Städten die meisten Termine stattfinden, um damit eine Rangliste zu erzeugen. Anstatt alle Objekte zu laden, zu vergleichen, Termine zu addieren usw., können wir eine Abfrage mit Gruppierung benutzen.

9 7.1 Die Hibernate Query Language 157 Query q = session.createquery( select termin.ort, count(termin) + from Termin as termin group by termin.ort + order by count(termin) desc ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1]; System.out.println("Stadt=" + ort + ", Anzahl Termine=" + anzahl); } In der Abfrage werden alle Orte ausgewählt und nach den Orten gruppiert. Die Aggregatsfunktion count() zählt alle Einträge, die in dieselbe Gruppierung fallen. In diesem Fall zählen wir die Termine mit dem gleichen Ort. Bei der order-by-klausel darf auch die Aggregatsfunktion verwendet werden, damit nach deren Ergebnis sortiert wird. Das Beispiel sortiert absteigend nach der Anzahl der Termine pro Gruppierung. Neben count() gibt es noch die folgenden Aggregatsfunktionen: Aggregatsfunktionen Funktion count() min() max() sum() avg() Zweck Berechnet die Anzahl der Elemente in der Gruppierung Bestimmt das Minimum der Elemente in der Gruppierung Bestimmt das Maximum der Elemente in der Gruppierung Summiert die Elemente in der Gruppierung Berechnet den Mittelwert Eine Aggregatsfunktion ist entweder mit einer Gruppierung kombiniert oder bezieht sich auf alle Ergebnisse der Abfrage. Wenn keine Gruppierung angegeben wird, dann gibt es nur ein Ergebnis. Die in der select-klausel ausgewählten Attribute dürfen in diesem Fall dann auch nur Aufrufe von Aggregatsfunktionen sein! So kann als Beispiel die Abfrage dienen, um zu erfahren, wie viele Termine in einer gegebenen Stadt geplant sind: Query query = session.createquery("select count(t) + from Termin as t where t.ort = :ort"); query.setstring("ort", "Berlin"); int anzahl = (Integer) query.uniqueresult();

10 158 Blättern Nicht jede Anfrage liefert eine überschaubare Anzahl von Ergebnissen. Mitunter können die Ergebnisse sehr lange Listen sein, die komplett geladen den Speicher der Anwendung überlasten würden. Hibernate bietet zwei Ansätze, diesem Problem bei Abfragen zu begegnen. Das Ergebnis einer Query kann durch eine untere Schranke eingegrenzt werden. Dazu kann die maximale Anzahl von Ergebnissen angegeben werden. Query q = session.createquery( from Termin ); q.setfirstresult(90); q.setmaxresults(10); List<Termin> termine = q.list(); In diesem Beispiel wurde das Ergebnis auf zehn Termine eingeschränkt. Die ersten 90 Termine der Abfrage sollen ignoriert werden. Die Methode setfirstresult ist nullbasiert wie alle Methoden in Hibernate mit Bezug auf Indizes. Der zweite Lösungsansatz liefert Queries, in denen geblättert werden kann. Die Methode scroll liefert das Ergebnis als ScrollableResults. Das Ergebnis kann sehr variabel iteriert werden. Ergebnisse können auch direkt angesprungen werden. Spätestens bei dem Zugriff auf ein bestimmtes Objekt wird dieses erst aus der Datenbank geladen. Das ScrollableResults hat einen Zeiger auf eine Zeile des Ergebnisses, der mit den Methoden next, first, scroll, previous, last, beforefirst, afterlast und setrownumber verschoben werden kann. Entsprechend der select-klausel der Anfrage können in jeder Zeile der Ergebnisse mehrere Objekte sein. Auf das aktuell selektierte Ergebnis wird immer indiziert zugegriffen, auch wenn pro Zeile nur ein Objekt ausgewählt wird. Folgende Abfrage liefert eine Übersicht der Benutzer, bei der nur jeder zwanzigste angegeben wird: Query q = session.createquery( select b.nachname + from Benutzer b + order by b.nachname ); ScrollableResults ergebnis = q.scroll(); List<String> benutzer = new ArrayList<String>(); if (ergebnis.first()) { do { benutzer.add(ergebnis.getstring(0)); } while(ergebnis.scroll(20)); }

11 7.2 Typsichere Abfragen mit Criteria 159 Wird über ein ScrollableResults iteriert und auf enthaltene Objekte zugegriffen, muss die Session noch aktiv sein. Das ScrollableResults kann nur benutzt werden, wenn der eingesetzte JDBC-Treiber Blättern unterstützt. Bisher wurden mit der HQL nur Objekte und Daten ausgelesen. Es ist auch seit Hibernate 3 möglich, mit einer Abfrage zu ändern und zu löschen. Sollen z.b. alle Termine aus Berlin nach Hamburg verlegt werden, kann das wie folgt passieren: Ändern und Löschen Query q = session.createquery( update Termin + set ort = :neuerort where ort = :alterort ); q.setstring( alterort, Berlin ); q.setstring( neuerort, Hamburg ); q.executeupdate(); Auf das Schlüsselwort update folgt der zu ändernde Typ. Dem folgen der Befehl set und die Zuweisung der zu ändernden Attribute. Abschließend kann mit einem where ein Kriterium angegeben, das die Änderung einschränkt. Mit der Methode executeupdate wird diese Form einer verändernden Abfrage ausgeführt. Die Methode liefert als Ergebnis die Anzahl der veränderten Objekte. Mit der HQL können auch Objekte gelöscht werden, die bestimmten Kriterien entsprechen. Somit können auch Objekte gelöscht werden, die nicht geladen sind. Alle Termine, die in München stattfinden sollen, werden mit dem folgenden Beispiel gelöscht: Query q = session.createquery( delete Termin + where ort = :ort ); q.setstring( ort, München ); q.executeupdate(); Auch bei dem Löschen wird die verändernde Query mit der Methode executeupdate ausgeführt. Bei einer ändernden Abfrage dürfen sowohl die Änderung als auch das Kriterium sich dabei nur auf einen Typ beziehen. Subtypen und enthaltene Objekte dürfen nicht mit in eine ändernde Abfrage einbezogen werden! Achtung 7.2 Typsichere Abfragen mit Criteria Hibernate bietet mit Criterias eine programmatische Möglichkeit, Abfragen zu definieren. An der Session kann ein Criteria erzeugt wer-

12 160 den, dabei muss der Ergebnistyp angegeben werden. Das einfachste Criteria, das alle Benutzer als Liste liefert, ist das folgende: Criteria criteria = session.createcriteria(benutzer.class); List<Benutzer> benutzer = criteria.list(); Es sind bei den programmatischen Abfragen mit Criterias Einschränkungen der Ergebnismenge durch Kriterien möglich. Die Klasse Restrictions aus dem Package org.hibernate.criterion ist eine Fabrik für solche Kriterien. Die folgende Abfrage liefert alle Termine aus Hamburg: Criteria crit = session.createcriteria(termin.class); c.add(restrictions.eq("ort", "Hamburg")); List<Termin> termine = criteria.list(); Diese Kriterien liefern als Rückgabewert immer wieder das geänderte Criteria-Objekt. Somit können komplexere Abfragen mit einem Java- Statement definiert werden. Das folgende Beispiel zeigt, wie mit einem einzigen Statement alle Termine aus Hamburg als Liste geliefert werden, die in der Beschreibung»Hibernate«enthalten: List liste = session.createcriteria(termin.class).add(restrictions.eq("ort", "Hamburg")).add(Restrictions.like( beschreibung, %Hibernate% )).list(); Diese Abfrage kann vereinfacht werden durch das neue Feature des statischen Imports in Java 5. Damit können die statischen Methoden und Attribute der importierten Klasse ohne Qualifizierung durch den Namen der Klasse benutzt werden. import static org.hibernate.criterion.restrictions.*;... List liste = session.createcriteria(termin.class).add(eq("ort", "Hamburg")).add(like( beschreibung, %essen% )).list(); Gruppierung Mit der Criteria-API können auch Gruppierungen in Abfragen erzeugt werden. Ein Beispiel zur Gruppierung hatte die Anzahl der Termine pro Ort abgefragt. Dem Criteria muss eine Projection gesetzt werden. int anzahl = (Integer) session.createcriteria(termin.class).setprojection(projections.rowcount()).add(like("ort", "Berlin")).uniqueResult();

13 7.3 Abfragen mit SQL 161 Das Beispiel hat eine Gruppierung auf die gesamte Ergebnismenge. Um mit Criterias für jeden Ort die Anzahl der Termine auszugeben, wird nach dem Ort gruppiert. Um eine Projektion auf mehrere Attribute und Aggregierungen zu erreichen, muss eine ProjectionList benutzt werden. Das folgende Beispiel nutzt die Möglichkeit von Hibernate, die Befehle»aneinander zu ketten«. So liefert z.b. die Methode setprojection dasselbe Criteria als Ergebnis, an dem sie aufgerufen wurde: List<Object[]> list = session.createcriteria(termin.class).setprojection( Projections.projectionList().add(Projections.property("ort")).add(Projections.rowCount()).add(Projections.groupProperty("ort"))).list(); for (Object[] zeile : list) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1];... } Abfragen mit Criterias bieten einen großen Vorteil, denn durch die Angabe des Typs als Class-Objekt bei der Erzeugung des Criterias bieten sie Typsicherheit. Werden Änderungen an dem Namen des Typs gemacht, fällt das schon zur Kompilierzeit auf. Für die Erstellung einer Abfrage ist keine Kenntnis von HQL oder von SQL notwendig. Wenn Abfragen optionale Kriterien enthalten, ist das mit Criterias einfacher zu lösen als mit HQL, wobei dort der Abfragetext jeweils angepasst werden muss. Criterias unterstützen keine Joins, sie sind somit nicht so mächtig wie Abfragen mit der HQL. Der Vorteil der Typsicherheit gilt nicht für die Angabe der Properties, diese müssen als String angegeben werden. Sie sind somit anfällig gegenüber Änderungen an den persistierten Klassen und werden zur Kompilierzeit nicht aufgedeckt. Abfragen mit Criterias sind nicht so»übersichtlich«wie HQL-Abfragen. Vor- und Nachteile 7.3 Abfragen mit SQL An der Session kann eine SQL-Query erzeugt werden. Das kann für mehrere Fälle sinnvoll sein: Stored Procedures sollen an der Datenbank aufgerufen werden. Auf die spezielle Datenbank optimierte Abfragen sollen gerufen werden. Bei der Umstellung von alten SQL-Abfragen auf HQL

14 162 Damit Hibernate den Bezug von der Abfrage zu den verwalteten persistenten Klassen bekommt, müssen diese der Query angegeben werden. In dem einfachsten Beispiel sollen mit SQL alle Termine ausgegeben werden: SQLQuery q = session.createsqlquery( select {termin.*} + from TERMIN {termin} ); q.addentity( termin, Termin.class); List termine = q.list(); Named Queries Als Erstes fällt die select-klausel auf. Die geschweiften Klammern sind Platzhalter für Hibernate. Und in der from-klausel wird der Tabellenname angegeben, nicht der Typ! In dem Beispiel werden Objekte vom Typ Termin mit allen Attributen erwartet, daher der Stern hinter dem Platzhalter termin. Es wäre hier auch möglich, durch die Angabe von Propertys an dieser Stelle nur einzelne Attribute aus der Datenbank auszulesen. An Stelle der Platzhalter werden die Spalten aus der Datenbank eingesetzt. Dies muss mit einer Benennung und Reihenfolge geschehen, die Hibernate kennt. Ansonsten könnte Hibernate aus dem Ergebnis kein Objekt des Typs Termin erzeugen. Hibernate muss den Hinweis bekommen, dass Objekte des Typs Termin gesucht werden. Durch den Aufruf der Methode addentity wird Hibernate dieser Hinweis gegeben, und der Typ Termin wird mit dem Platzhalter termin verbunden. Ansonsten ist SQLQuery eine Spezialisierung und Subklasse einer Query und kann genauso zur Auflistung des Ergebnisses verwendet werden. SQL-Queries können ähnlich wie HQL-Queries in der Mapping- Datei definiert werden. Die Query wird in einem sql-query-element mit einem Namen verpackt. <sql-query name= sqlalletermine > <return alias= termin class= de.abc.termin /> <![CDATA[ select {termin.*} from TERMIN {termin} ]]> </sql-query> Diese Query kann genau wie benannte HQL-Queries an der Session mit der Methode getnamedquery abgerufen werden. Einer SQL-Query können auch benannte und nummerierte Parameter mit übergeben werden. Der Typ des Rückgabewertes wird einer benannten Query nicht mehr im Programmcode gesetzt, er ist in der Definition mit dem Element return inklusive Alias angegeben.

15 7.4 Filter 163 Aus dem Beispiel ist schon ersichtlich, dass Abfragen mit HQL oder Criterias gegenüber Abfragen mit SQL vorzuziehen sind. Es ist umständlicher und unsicherer als HQL und Criterias, denn z.b. die Namen der Tabellen und Spalten müssen bekannt sein, polymorphe Abfragen und implizite Joins sind nicht möglich. SQL-Abfragen können in einer Migration für den Umstieg auf Hibernate geeignet sein. Außerdem ist es seit Hibernate 3 möglich, mit der Hilfe benannter SQL-Queries stored procedures aufzurufen. Vor- und Nachteile 7.4 Filter Filter bieten die Möglichkeit, für eine Session sämtliche Abfragen auf Ergebnisse mit bestimmten Kriterien einzuschränken. Ein Filter wird in der Mapping-Datei definiert. Nach der Mapping-Definition der Klassen gibt man dort den Namen und die Parameter des Filters an: </hibernate-mapping>... </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Hier wurden nur der Name und die Parameter eines Filters definiert. Innerhalb des Mappings für persistente Klassen und Collections kann dieser Filter mit Kriterien gefüllt werden. </hibernate-mapping>... <class name= Termin >... <property name="ort"/> <filter name="nureinort" condition="ort = :ort"/> </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Innerhalb des Mappings für die Klasse Termin wird jetzt für den Filter mit dem Namen nureinort eine Bedingung angegeben. Dieser Filter bestimmt die zurückgelieferten Termine, die von jeder Abfrage mit diesem Filter geliefert werden. In dem Beispiel müssen Ergebnisse in der Spalte ort den gleichen Wert haben wie der Parameter :ort.

16 164 Achtung Der Bezeichner»ort«für das obige Kriterium bezieht sich nicht auf das Property mit dem Namen Ort, sondern die gleichnamige Tabellenspalte! Filterkriterien beziehen sich direkt auf die Namen der Spalten und nicht wie sonst in Hibernate üblich auf die Namen der Properties. Da Filter in der Mapping-Datei definiert werden, ist an dieser Stelle der Name der entsprechenden Tabellenspalte bekannt. Um den eben definierten Filter zu aktivieren, muss dieser an der Session mit enablefilter aktiviert werden. Zusätzlich müssen an dem Filter die benötigten Parameter gesetzt werden. Filter ortfilter = session.enablefilter("nureinort"); ortfilter.setparameter("ort", "Hamburg"); List termine = session.createquery( from Termin ).list(); Hier in dem Beispiel wurden nur Termine aus Hamburg geliefert. Der Filter beschränkt nur die Ergebnisse von sondierenden Abfragen. Ist in dem System noch ein Objekt, das dem Filter nicht entspricht, z.b. ein Termin aus München, dann kann dieser mit delete an der Session gelöscht werden, obwohl der Filter aktiv ist. Genauso können noch Objekte mit ihrer ID geladen werden, deren Attribute nicht den Filterkriterien entsprechen. Wird ein Filter nicht mehr benötigt, deaktiviert man ihn mit der Methode disablefilter und dem Namen des Filters: session.disablefilter("nureinort"); Filter können in der Praxis mehrere sinnvolle Einsatzgebiete finden. In unserem Beispiel könnte man z.b. für bestimmte Umstände sämtliche Termine herausfiltern, die in der Vergangenheit stattfanden. 7.5 Referenzen [Hibernate] Die Hibernate-Website mit der Dokumentation bietet sehr viel Information zu Abfragen.

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Abfragen: Grundbausteine

Abfragen: Grundbausteine Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt:

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten. Einführung SQL 2010 Niko Becker Mit unseren Übungen zu ACCESS können Sie Aufbau und Struktur einer relationalen Datenbank kennenlernen. Wir zeigen Ihnen wie Sie Tabellen, Formulare und Berichte erstellen

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Abfragen in Access. Die einfache Auswahlabfrage aus einer einzigen Tabelle

Abfragen in Access. Die einfache Auswahlabfrage aus einer einzigen Tabelle Um gezielte Informationen - auch aus verschiedenen Tabellen einer Datenbank - zu erhalten, benutzt man Abfragen. Man kann dort die Tabellen einer Datenbank miteinander verknüpfen und erhält somit die gewünschten

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Anleitung OpenCms 8 Webformular Auswertung

Anleitung OpenCms 8 Webformular Auswertung Anleitung OpenCms 8 Webformular Auswertung 1 Erzbistum Köln Webformular Auswertung 15. August 2014 Inhalt 1. Allgemeines zum Webformular Auswertung... 3 2. Verwendung des Webformulars... 4 2.1. Reiter

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

7. Übung - Datenbanken

7. Übung - Datenbanken 7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Schritt 1 - Registrierung und Anmeldung

Schritt 1 - Registrierung und Anmeldung Schritt 1 - Registrierung und Anmeldung Anmeldung: Ihre Zugangsdaten haben Sie per EMail erhalten, bitte melden Sie sich mit diesen auf www.inthega-datenbank.de an. Bitte merken Sie sich die Zugangsdaten

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Die neue Datenraum-Center-Administration in. Brainloop Secure Dataroom Service Version 8.30

Die neue Datenraum-Center-Administration in. Brainloop Secure Dataroom Service Version 8.30 Die neue Datenraum-Center-Administration in Brainloop Secure Dataroom Service Version 8.30 Leitfaden für Datenraum-Center-Manager Copyright Brainloop AG, 2004-2014. Alle Rechte vorbehalten. Dokumentversion:

Mehr

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

Mehr

1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer) nur 4-stellige Zahlen eingetragen

1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer) nur 4-stellige Zahlen eingetragen Diverse Gültigkeitsregeln - Lösungshinweise 1998 Niko Becker Hilfedateien stehen Ihnen auf unserer Homepage Seite ACCESS Infos und Hilfe zur Verfügung 1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer)

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Leitfaden #1a. "zanox Publisher-Statistik" (next generation)

Leitfaden #1a. zanox Publisher-Statistik (next generation) Leitfaden #1a "zanox Publisher-Statistik" (next generation) Thema: Sortieren von Leads und Sales nach dem Bearbeitungsdatum (inklusive Abschnitt "Filterung nach Transaktionsstatus") 1/8 Leitfaden "Sortieren

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Zweck dieser Anleitung ist es einen kleinen Überblick über die Funktion Last Minute auf Swisshotelportal zu erhalten. Für das erstellen

Mehr

Das Handbuch zu KSystemLog. Nicolas Ternisien

Das Handbuch zu KSystemLog. Nicolas Ternisien Nicolas Ternisien 2 Inhaltsverzeichnis 1 KSystemLog verwenden 5 1.1 Einführung.......................................... 5 1.1.1 Was ist KSystemLog?................................ 5 1.1.2 Funktionen.....................................

Mehr

8 Access-Abfragen migrieren

8 Access-Abfragen migrieren Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 8 Access-Abfragen migrieren Mit der Migration der Tabellen Ihrer Anwendung zu einer SQL Server-Datenbank und dem Verknüpfen der SQL Server-Tabellen

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering.

Massenversand Dorfstrasse 143 CH - 8802 Kilchberg Telefon 01 / 716 10 00 Telefax 01 / 716 10 05 info@hp-engineering.com www.hp-engineering. Massenversand Massenversand Seite 1 Massenversand Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. STAMMDATEN FÜR DEN MASSENVERSAND 4 2.1 ALLGEMEINE STAMMDATEN 4 2.2

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

Mehr

Access Grundlagen. David Singh

Access Grundlagen. David Singh Access Grundlagen David Singh Inhalt Access... 2 Access Datenbank erstellen... 2 Tabellenelemente... 2 Tabellen verbinden... 2 Bericht gestalten... 3 Abfragen... 3 Tabellen aktualisieren... 4 Allgemein...

Mehr

E-MAIL VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. http://www.athost.at. Bachstraße 47, 3580 Mödring office@athost.

E-MAIL VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. http://www.athost.at. Bachstraße 47, 3580 Mödring office@athost. E-MAIL VERWALTUNG Postfächer, Autoresponder, Weiterleitungen, Aliases http://www.athost.at Bachstraße 47, 3580 Mödring office@athost.at Loggen Sie sich zunächst unter http://www.athost.at/kundencenter

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

Mehr

Kundenspezifische Preise im Shop WyRu Online-Shop

Kundenspezifische Preise im Shop WyRu Online-Shop Kundenspezifische Preise im Shop WyRu Online-Shop Team WyRu Christian Wyk / Günter Rubik SCS Bürocenter B1, A-2334 Vösendorf Internet http://www.wyru.at Kundenspezifische Preise sind ein Feature des WyRu

Mehr

FlowFact Alle Versionen

FlowFact Alle Versionen Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010 FHNW, Services, ICT Windisch, März 2013 Berechtigungen im Kalender 1 1 Gruppen 3 1.1 Die Gruppe/der Benutzer Standard

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

Mehr

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten http://tradingtutorialautomation.de/wp-content/uploads/2015/04/so-erstellen-sienuetzliche-beschreibungen-zu-ihren-tradingdaten_20150406.mp3

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

DB2 Kurzeinführung (Windows)

DB2 Kurzeinführung (Windows) DB2 Kurzeinführung (Windows) Michaelsen c 25. Mai 2010 1 1 Komponenten von DB2 DB2 bietet zahlreiche graphische Oberflächen für die Verwaltung der verschiedenen Komponenten und Anwendungen. Die wichtigsten

Mehr

Fachhochschule Deggendorf Platzziffer:...

Fachhochschule Deggendorf Platzziffer:... Sommersemester 2008 Zahl der Blätter: 9 Fachbereich: Betriebswirtschaft WI Bachelor Hilfsmittel: alles ohne Computer Zeit: 90 Minuten 1 Betrachten Sie die drei markierten Zeilen. 1. Angenommen Sie hätten

Mehr

Ein Ausflug zu ACCESS

Ein Ausflug zu ACCESS Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Was sind Berechtigungen? Unter Berechtigungen werden ganz allgemein die Zugriffsrechte auf Dateien und Verzeichnisse (Ordner) verstanden.

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

Mehr

Die Statistiken von SiMedia

Die Statistiken von SiMedia Die Statistiken von SiMedia Unsere Statistiken sind unter folgender Adresse erreichbar: http://stats.simedia.info Kategorie Titel Einfach Erweitert Übersicht Datum und Zeit Inhalt Besucher-Demographie

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Process4.biz Release 5.2.2 Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Process4.biz Release 5.2.2 Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out) Process4.biz Release 5.2.2 Features Übersicht Repository Das Schützen von Diagrammen wurde optimiert (check-in, check-out) Diagramme können gegen die Bearbeitung von anderen p4b-benutzern und gegen die

Mehr

Anzeige von eingescannten Rechnungen

Anzeige von eingescannten Rechnungen Anzeige von eingescannten Rechnungen Wenn Sie sich zu einer Eingangsrechnung die eingescannte Originalrechnung ansehen möchten, wählen Sie als ersten Schritt aus Ihrem Benutzermenü unter dem Kapitel Eingangsrechnung

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Sehr geehrte Faktor-IPS Anwender,

Sehr geehrte Faktor-IPS Anwender, März 2014 Faktor-IPS 3.11 Das neue Release Faktor-IPS 3.11 steht Ihnen zum Download zur Verfügung. Wir informieren Sie über die neusten Feautres. Lesen Sie mehr Sehr geehrte Faktor-IPS Anwender, Auf faktorzehn.org

Mehr

Datenbanken Microsoft Access 2010

Datenbanken Microsoft Access 2010 Datenbanken Microsoft Access 2010 Abfragen Mithilfe von Abfragen kann ich bestimmte Informationen aus einer/mehrerer Tabellen auswählen und nur diese anzeigen lassen die Daten einer/mehrerer Tabellen sortieren

Mehr

Kulturobjekte der Donau Das ContentManagementSystem (CMS)

Kulturobjekte der Donau Das ContentManagementSystem (CMS) Kulturobjekte der Donau Das ContentManagementSystem (CMS) Kurzanleitung Inhalt: LogIn 1 Objektverwaltung - Übersicht 2 - Neue Objekte 3 - Eigenschaften ändern 4 - Objekte löschen 5 Benutzerverwaltung -

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Objekte einer Datenbank Microsoft Access Begriffe Wegen seines Bekanntheitsgrades und der großen Verbreitung auch in Schulen wird im Folgenden eingehend auf das Programm Access von Microsoft Bezug genommen.

Mehr

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen Abfragen lassen sich längst nicht nur dazu benutzen, die gewünschten Felder oder Datensätze einer oder mehrerer Tabellen darzustellen. Sie können Daten auch nach bestimmten Kriterien zu Gruppen zusammenfassen

Mehr

Success! Bestellausgabe

Success! Bestellausgabe Success! Bestellausgabe 2 Bestellausgabe in SUCCESS! Für die Anbindung an die Bestellsysteme ihrer Lieferanten ist es möglich, die in Success! erzeugten Bestellungen, in eine Datei auszugeben und optional

Mehr