Datenbank über ODBC dynamisch einbinden



  • hallo,
    ich hab ein programm, welches eine bestimmte datenabnk bearbeitet. wie kann ich das denn so programmieren, dass die spaltenanzahl nicht festgelegt ist. wenn zum beispiel n spalten mit verschiedenen kostensätzen auftreten, gibt es eine möglichkeit, die datenbank so anzubinden, dass immer unterschiedlich viele spalten eingebunden werden? je nachdem, wieviele in der datenbank vorhanden sind natürlich.

    besten dank,

    daniel



  • daniel12345 schrieb:

    hallo,
    ich hab ein programm, welches eine bestimmte datenabnk bearbeitet. wie kann ich das denn so programmieren, dass die spaltenanzahl nicht festgelegt ist. wenn zum beispiel n spalten mit verschiedenen kostensätzen auftreten, gibt es eine möglichkeit, die datenbank so anzubinden, dass immer unterschiedlich viele spalten eingebunden werden? je nachdem, wieviele in der datenbank vorhanden sind natürlich.

    besten dank,

    daniel

    versteh ich nich. wie willst du da 'spalten einbinden'?
    dein prog verbindet sich mit der datenbank, und kann durch alle von dir geweuenschten datensaetze durchscrollen, egal wieviele es sind, und hoert beim letzten datensatz auf.

    Esco



  • @Esco: Ich glaube er meint nicht die vertikale Richtung (die du beschrieben hast) sondern die horizontale.

    Da gab es vor einigen Wochen mal einen Ansatz - was daraus geworden ist habe ich nicht verfolgt. @daniel: nutz mal die Suche, du müßtest das eigentlich noch finden. 🙂



  • estartu_de schrieb:

    @Esco: Ich glaube er meint nicht die vertikale Richtung (die du beschrieben hast) sondern die horizontale.

    hmm jo, da stehts ja auch: spalten... 🙂

    daniel: wieviele spalten werdens denn maximal, bzw kannst du das ueberhaupt vorraussehen, wieviele es maximal werden?
    um was fuer ne datenbank handelt es sich denn?

    Esco



  • estartu_de schrieb:

    @Esco: Ich glaube er meint nicht die vertikale Richtung (die du beschrieben hast) sondern die horizontale.

    hmm jo, da stehts ja auch: spalten... 🙂

    daniel: wieviele spalten werdens denn maximal, bzw kannst du das ueberhaupt vorraussehen, wieviele es maximal werden?
    um was fuer ne datenbank handelt es sich denn?

    Esco



  • -sorry fuer den doppelpost-

    noch ne frage: die daten die du dir von der db holst: werden die dann lokal innem container, oder in objekten gespeichert, oder wie willst du die weiterverarbeiten?
    spontan fällt mir nur eins ein: dynamisch einen view generieren, der dann immer eine bestimmte spaltenanzahl abfragt.

    als besipiel folgende ID-abfrage:

    // ID aus Sequenz holen:
            CDBSequence* pDBSequence = new CDBSequence();
            CString strSQL = "SELECT SEQ_XYZ_ID.NEXTVAL AS TEST FROM DUAL";
            pDBSequence->Open(CRecordset::snapshot, strSQL);
            long nSequenceID = pDBSequence->m_Sequence;    
            pDBSequence->Close();
            delete pDBSequence;
            pDBSequence = 0;
    

    diese DBSequence klasse kannst du praktisch fuer mehrere sequenzen in einer DB und einem prog nehmen, da der 'spaltenname' praktisch 'TEST' ist, dahinter kann sich dann also alles moegliche verbergen.
    so könntest du zB deinen view aufbauen.

    Esco



  • also, eigentlich weiss ich nicht, wieviele spalten die datenbank hat.
    im prinzip werden aus der datenbank nur die werte ausgelesen, in eine datei geschrieben, verarbeitet und wieder in die datenbank hinein.
    problematisch ist doch, dass ich am anfang die datenbankspalten über ddx einbinden muss. diesen schritt möchte ich umgehen. allerdings muss ich für die verarbeitung die spaltennamen kennen. der erste schritt des programms soll also eine erkennung der datenbank, der verschiedenen spaltentypen und anschliessend die einbindung.



  • jo also das ddx kannste ja wie oben geschildert umgehen.

    zur spaltennamenerkennung kann ich dir nix sagen. weiss nur nich ob das wirklich sinnvoll is, ne datenbankanwendung zu schreiben, wo man die spaltennamen und -anzahl nicht kennt. wenns 'spalte1', 'spalte2' usw wäre gings ja noch.

    Esco


Anmelden zum Antworten