NAME
Quiq::Database::ResultSet - Liste von Datensätzen (abstrakt)
BASE CLASS
DESCRIPTION
Ein Objekt der Klasse repräsentiert eine Liste von gleichartigen Datensätzen.
METHODS
Konstruktor
new() - Instantiiere Tabellen-Objekt
Synopsis
$tab
=
$class
->new(
$rowClass
,\
@titles
);
$tab
=
$class
->new(
$rowClass
,\
@titles
,\
@rows
,
@keyVal
);
$tab
=
$class
->new(\
@titles
);
$tab
=
$class
->new(\
@titles
,\
@rows
,
@keyVal
);
$newTab
=
$tab
->new;
$newTab
=
$tab
->new(\
@rows
);
Description
Instantiiere ein Tabellen-Objekt und liefere eine Referenz auf dieses Objekt zurück.
Die Arrays @titles und @rows werden von der Methode nicht kopiert.
Ist $rowClass nicht angegeben, wird $class->defaultRowClass() als Row-Klasse angenommen.
Als Objektmethode gerufen, wird ein neues Tabellen-Objekt mit $rowClass und $titles aus dem existierenden Tabellenobjekt initialisiert. Diese Methode ist nützlich, wenn ein Tabellen-Objekt mit einer Teilmenge des ursprünglichen Tabellen-Objektes gebildet werden soll.
Akzessoren
rowClass() - Liefere Namen der Datensatz-Klasse
Synopsis
$rowClass
=
$tab
->rowClass;
rows() - Liefere/Setze die Liste der Datensätze
Synopsis
$rowA
|
@rows
=
$tab
->rows;
$rowA
|
@rows
=
$tab
->rows(\
@rows
);
Description
Liefere die Liste der Datensätze der Tabelle. Im Skalarkontext liefere eine Referenz auf die Liste.
Ist Parameter \@rows angegeben, wird die Datensatz-Liste auf diese Liste gesetzt.
stmt() - Liefere Statement
Synopsis
$stmt
=
$tab
->stmt;
Description
Liefere das SQL-Statement, mit welchem die Datensätze der Tabelle selektiert wurden.
stmtBody() - Liefere Rumpf für ein Subselect
Synopsis
$stmt
=
$tab
->stmtBody(
@opt
);
Description
Liefere den Rumpf des (Select-)Statement. Der Rumpf ist das ürsprüngliche Statement ohne Select- und Order-By-Klausel.
Example
Ursprüngliches Select:
SELECT
per_vorname
, per_nachname
FROM
person
WHERE
per_nachname =
'Schulz'
ORDER BY
per_vorname
Resultierendes Select:
FROM
person
WHERE
per_nachname =
'Schulz'
titles() - Liefere Liste der Kolumnentitel
Synopsis
$titleA
|
@titles
=
$tab
->titles;
Description
Liefere die Liste der Kolumnentitel der Tabelle. Im Skalarkontext liefere eine Referenz auf die Liste.
values() - Liefere Kolumnenwerte als Liste oder Hash
Synopsis
@vals
|
$valA
=
$tab
->
values
(
$key
,
@opt
);
%vals
|
$valH
=
$tab
->
values
(
$key
,
@opt
,
-hash
=>1);
Options
- -distinct => $bool (Default: 0)
-
Liefere in der Resultatliste nur verschiedene Kolumenwerte. Wird ein Hash geliefert, ist dies zwangsläufig der Fall. Der Wert findet sich in der Resultatliste an der Stelle seines ersten Auftretens.
- -hash => $bool (Default: 0)
-
Liefere einen Hash bzw. eine Hashreferenz (Quiq::Hash) mit den Kolumnenwerten als Schlüssel und 1 als Wert.
- -notNull => $bool (Default: 0)
-
Ignoriere Nullwerte, d.h. nimm sie nicht ins Resultat auf.
Tests
isRaw() - Prüfe, ob Raw-Tabelle
Synopsis
$bool
=
$this
->isRaw;
Search
lookup() - Suche Datensatz
Synopsis
$row
=
$tab
->lookup(
@opt
,
$key
=>
$val
);
Options
- -sloppy => $bool (Default: 0)
-
Wenn der gesuchte Datensatz nicht existiert, löse keine Exception aus, sondern liefere undef.
Description
Durchsuche die Tabelle nach dem ersten Datensatz, dessen Attribut $key den Wert $val besitzt und liefere diesen zurück. Erfüllt kein Datensatz das Kriterium, wird eine Exception ausgelöst.
select() - Suche Datensätze
Synopsis
@rows
|
$tab
=
$tab
->
select
(
$testSub
);
Description
Durchsuche die Tabelle nach den Datensätzen, die Test-Methode $testSub erfüllen und liefere die Liste dieser Datensätze zurück. Im Skalarkontext liefere ein neues Tabellen-Objekt.
Example
Schränke Produkt-Tabelle auf Produkte mit einem Preis > 100 ein:
my
$sub
=
sub
{
my
$row
=
shift
;
return
$row
->preis > 100? 1: 0;
};
$tab
=
$tab
->
select
(
$sub
);
File I/O
loadFromFile() - Lade Tabelle aus Datei
Synopsis
$tab
=
$class
->loadFromFile(
$file
,
@opt
);
Options
- -colSep => $char (Default: '|')
-
Kolumnen-Trennzeichen.
- -rowClass => $rowClass (Default: 'Quiq::Database::Row::Object')
-
Name der Datensatzklasse, auf die die Datensätze geblesst werden. Die Datensatzklasse entscheidet auch über die Tabellenklasse.
- -rowStatus => '0'|'U'|'I'|'D' (Default: 'I')
-
Setze den initialen Datensatz-Status.
Description
Lade Datensätze aus Datei $file in eine Datensatz-Tabelle und liefere eine Referenz auf dieses Objekt zurück.
Dateiformat
Die erste Zeile enthält die Kolumentitel, alle weiteren Zeilen die Datensätze. Die Kolumen werden per | getrennt.
Example
per_id|per_vorname|per_nachname
1|Rudi|Ratlos
2|Kai|Nelust
3|Elli|Pirelli
4|Susi|Sorglos
saveToFile() - Sichere Tabelle in Datei
Synopsis
$tab
->saveToFile(
$file
);
Description
Sichere die Datensätze der Tabelle in Datei $file. Die Methode liefert keinen Wert zurück.
Miscellaneous
elapsed() - Dauer seit Beginn der SQL_Ausführung
Synopsis
$duration
=
$tab
->elapsed;
formats() - Liefere Kolumnenformate
Synopsis
$fmtA
|
@fmts
=
$tab
->formats;
$fmtA
|
@fmts
=
$tab
->formats(
$force
);
Description
Analysiere den Tabelleninhalt und liefere eine Liste von Kolumnenformat-Objekten zurück. Diese können zur tabellarischen Formatierung der Kolumnenwerte herangezogen werden.
Die Analyse wird nur einmal durchgeführt und die resultierende Liste im Tabellenobjekt gespeichert. Ist der Parameter $force angegeben und "wahr", wird eine Neuberechnung forciert.
width() - Liefere die Breite der Tabelle
Synopsis
$n
=
$tab
->width;
count() - Liefere Anzahl der Datensätze
Synopsis
$n
=
$tab
->count;
pop() - Entferne Datensatz am Ende
Synopsis
$tab
->
pop
;
push() - Füge Datensatz am Ende hinzu
Synopsis
$tab
->
push
(
$row
);
unshift() - Füge Datensatz am Anfang hinzu
Synopsis
$tab
->
unshift
(
$row
);
defaultRowClass() - Liefere Namen der Default-Rowklasse
Synopsis
$rowClass
=
$class
->defaultRowClass;
Description
Liefere den Namen der Default-Rowklasse: 'Quiq::Database::Row::Object'
Auf die Default-Rowklasse werden Datensätze instantiiert, für die bei der Instantiierung einer Table-Klasse keine Row-Klasse explizit angegeben wurde.
Details
Als Default-Rowklasse wird für die Quiq::Database::ResultSet- Klassenhierarchie 'Quiq::Database::Row::Object' definiert.
Die Methode wird in der Subklasse Quiq::Database::ResultSet::Array überschrieben. Für diesen Zweig ist die Default-Rowklasse 'Quiq::Database::Row::Array'.
asExcel() - Tabellen-Repräsentation in Excel-Format
Synopsis
$tab
->asExcel(
$file
);
Arguments
Description
Schreibe die Tabelle im Excel-Format auf Datei $file.
asString() - String-Repräsentation der Tabelle
Synopsis
$str
=
$tab
->asString;
$str
=
$tab
->asString(
$colSep
);
$str
=
$tab
->asString(
$colSep
,
$rowSep
);
Description
Liefere eine String-Repräsentation der Tabelle mit $colSep als Datensatz-Trenner (Default: "\t") und $rowSep als Kolumnentrenner (Default: "\n").
asTable() - Tabellen-Repräsentation der Tabellendaten
Synopsis
$str
=
$tab
->asTable(
@opt
);
Options
- -color => $bool
-
Erzeuge eine farbige Ausgabe mit ANSI Colors.
- -info => $n (Default: 3)
-
Umfang an Information, die über die Daten hinaus ausgegeben wird:
- -msg => $msg
-
Füge $msg zur Statistik-Zeile hinzu.
Description
Liefere eine einfache Tabellen-Repräsentation der Tabellendaten.
Example
Beispiel-Ausgabe:
SELECT
*
FROM
did.mandant
WHERE
ROWNUM <= 10+1
ORDER BY
1
1 id
2 id_person
3 bezeichnung
4 id_verknuepfungsgruppe
1 2 3 4
| 0 | 14485923 | unbekannter Mandant | 0 |
| 1 | 14485924 | Otto | 0 |
| 2 | 7834646 | Otto - TZ (HB) | 0 |
| 3 | 14485928 | Schwab Versand GmbH | 0 |
| 4 | 5423454 | Schwab - TZ (HB) | 0 |
| 5 | 14913536 | Hanseatic Bank | 0 |
| 6 | 14485937 | 3-Pagen Versand | 0 |
| 7 | 8371420 | Fegro Markt G. M. B. H. | 0 |
| 8 | 14485941 | Heinrich Heine Versand | 0 |
| 9 | 14485942 | Hermes T. Kundendienst | 0 |
0.093s, 10 rows -
*MORE
ROWS EXIST*
diffReport() - Report über Differenzen
Synopsis
$str
=
$tab
->diffReport;
reverse() - Kehre Datensatz-Reihenfolge um
Synopsis
$tab
=
$tab
->
reverse
;
Returns
Tabellen-Objekt (für Method-Chaining)
Description
Kehre die Reihenfolge der Datensätze innerhalb des Tabellenobjekts um und liefere eine Referenz auf das Tabellenobjekt zurück.
Diese Methode ist nützlich, wenn die ersten N Datensätze einer geordneten Selektion in umgekehrter Reihenfolge ausgegeben werden sollen.
VERSION
1.225
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.