Datenbank - temp. (dynam.) tabelle



  • hallo,
    ich möchte (unter bcb6) eine dynamische tabelle erstellen, die aber nur im speicher existiert, und keine verbindung zur datenbank hat.(es sollten neue felder und datensätze zur laufzeit hinzugefügt werden)
    folgendes problem: ich muss daten aus der db zusammenstellen, bekomme das aber allein mit sql-anweisungen nicht hin; einige daten müssten per programm errechnet und ausgewertet werden.
    die daten sollen in einem DBCtrlGrid angezeigt werden; deshalb benötige ich ein DataSource.

    karin

    [ Dieser Beitrag wurde am 20.01.2003 um 18:03 Uhr von Jansen editiert. ]



  • wenn du statt dessen eine temporäre Tabelle in der DB anlegest und nach der Abfrage bzw. Programmende diese wieder löschst?



  • hmm, ich weiss nicht, welche DB später benutz wird. (im schlimmsten fall mysql)
    und da hat man imo keine temp. tabellen(oder?)
    und das programm läuft auf mehreren verschiedenen rechnern gleichzeitig, und alle greifen euf eine datenbank zurück. d.h. ich bräuchte (theor.)für jeden user eine eigene temp. tabelle, damit nicht ALLE auf diese tabelle zurückgreifen.

    karin



  • Hi,

    nimm ne TList und speicher eine entsprechende Struktur.

    Dann bist du unabhängig von Datenbanken, wenn du sowieso nihct möchtest, dass mehre Leute auf die Daten rumhacken.



  • naja da fragst doch deine db sicher mit nem tquery ab oder?

    dann kannste ja aus der abfrage eine lokale tabelle erstellen (die kannst du dann für weitere zwecke verwenden und im destruktor wieder frei geben) und dort weitere felder anfügen. oder schreibst dir gleich ne eigene klasse die von ttable abgeleitet ist und der im konstruktor die query-abfrage übergeben wird.



  • @AndreasW :
    die daten sollen in einem DBCtrlGrid angezeigt werden.

    @Sunday :
    genau DAS ist mein problem. ich weiss einfach nicht, wie ich so eine tabelle bzw ändere.
    denn die TTable (ADOTable,...) benötigen eine gültige Tabelle in der DB.
    aber ich will ja nur eine Tabelle (zur laufzeit) im speicher erstellen, also ohne jegliche verbindung zur datenbank.

    karin



  • Am besten wären natürlich temporäre Tabellen, wie Oracle sie zur Verfügung stellt(session-temporär), da kann jeder User(Session) unabhängig von anderen rumhampeln. Vorteil: der Tabellenname ist konstant, die Tabellen werden bei jedem Sessionende(normal oder abnormal) aufgeräumt. Wenn Du mit einer DB arbeitest, die keine temporären Tabellen anlegen kann, mußt Du halt für jede Session eine normale Tabelle erzeugen, die einen eindeutigen Namen hat, z.B. eine laufende Nummer, die aus einer Verwaltungstabelle gelesen wird (umständlich!) oder die aus der Speicheradresse des zugrundeliegenden Formulars plus Datum/Uhrzeit besteht. Nachteil: etwas umständliches Handling, Du mußt Dich um den Create/Drop selbst kümmern; bei einem programmabsturz bleiben die quasitemporären Tabellen als Leichen in der Db liegen...



  • du kannst doch zur laufzeit eine tabelle erstellen die du von ttable ableitest. die tabelle muss nicht in der db liegen, sondern kann auch z.b. im TEMP-verzeichnis liegen. die ist unabhängig von der db. aber wie auch @xel schon geschrieben hat, musst du dich um alles selber kümmern. kannst ja beim programm-start vorhandene tabellen löschen, wenn es mal zum absturz kam, bzw. werden die beim neustart wieder überschrieben.


Anmelden zum Antworten