NAME

Quiq::Database::ResultSet - Liste von Datensätzen (abstrakt)

BASE CLASS

Quiq::Hash

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;

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

$file

Pfad der Ausgabedatei.

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:

0

Nur Daten.

1

Numerierung der Kolumnen, Anzahl Zeilen, Ausführungszeit.

2

Informationsumfang 1 plus Liste der Kolumnennamen.

3

Informationsumfang 2 plus SQL-Statement.

-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.222

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2024 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.