Quiq::Database::ResultSet - Liste von Datensätzen (abstrakt)
Quiq::Hash
Ein Objekt der Klasse repräsentiert eine Liste von gleichartigen Datensätzen.
$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);
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.
$rowClass = $tab->rowClass;
$rowA|@rows = $tab->rows; $rowA|@rows = $tab->rows(\@rows);
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 = $tab->stmt;
Liefere das SQL-Statement, mit welchem die Datensätze der Tabelle selektiert wurden.
$stmt = $tab->stmtBody(@opt);
Liefere den Rumpf des (Select-)Statement. Der Rumpf ist das ürsprüngliche Statement ohne Select- und Order-By-Klausel.
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'
$titleA|@titles = $tab->titles;
Liefere die Liste der Kolumnentitel der Tabelle. Im Skalarkontext liefere eine Referenz auf die Liste.
@vals|$valA = $tab->values($key,@opt); %vals|$valH = $tab->values($key,@opt,-hash=>1);
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.
Liefere einen Hash bzw. eine Hashreferenz (Quiq::Hash) mit den Kolumnenwerten als Schlüssel und 1 als Wert.
Ignoriere Nullwerte, d.h. nimm sie nicht ins Resultat auf.
$bool = $this->isRaw;
$row = $tab->lookup(@opt,$key=>$val);
Wenn der gesuchte Datensatz nicht existiert, löse keine Exception aus, sondern liefere undef.
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.
@rows|$tab = $tab->select($testSub);
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.
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);
$tab = $class->loadFromFile($file,@opt);
Kolumnen-Trennzeichen.
Name der Datensatzklasse, auf die die Datensätze geblesst werden. Die Datensatzklasse entscheidet auch über die Tabellenklasse.
Setze den initialen Datensatz-Status.
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.
per_id|per_vorname|per_nachname 1|Rudi|Ratlos 2|Kai|Nelust 3|Elli|Pirelli 4|Susi|Sorglos
$tab->saveToFile($file);
Sichere die Datensätze der Tabelle in Datei $file. Die Methode liefert keinen Wert zurück.
$duration = $tab->elapsed;
$fmtA | @fmts = $tab->formats; $fmtA | @fmts = $tab->formats($force);
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.
$n = $tab->width;
$n = $tab->count;
$tab->pop;
$tab->push($row);
$tab->unshift($row);
$rowClass = $class->defaultRowClass;
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.
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'.
$tab->asExcel($file);
Pfad der Ausgabedatei.
Schreibe die Tabelle im Excel-Format auf Datei $file.
$str = $tab->asString; $str = $tab->asString($colSep); $str = $tab->asString($colSep,$rowSep);
Liefere eine String-Repräsentation der Tabelle mit $colSep als Datensatz-Trenner (Default: "\t") und $rowSep als Kolumnentrenner (Default: "\n").
$str = $tab->asTable(@opt);
Erzeuge eine farbige Ausgabe mit ANSI Colors.
Umfang an Information, die über die Daten hinaus ausgegeben wird:
Nur Daten.
Numerierung der Kolumnen, Anzahl Zeilen, Ausführungszeit.
Informationsumfang 1 plus Liste der Kolumnennamen.
Informationsumfang 2 plus SQL-Statement.
Füge $msg zur Statistik-Zeile hinzu.
Liefere eine einfache Tabellen-Repräsentation der Tabellendaten.
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*
$str = $tab->diffReport;
$tab = $tab->reverse;
Tabellen-Objekt (für Method-Chaining)
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.
1.210
Frank Seitz, http://fseitz.de/
Copyright (C) 2023 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.