Tutorial zu BDE / Datenbanken mit BCB6



  • Hallo Forum,

    ich wollte mich mal mit den datenbankkomponenten vom BCB beschäftigen. bekomme das aber nicht so richtig hin. also mal in die FAQ geschaut, gefreut das es da ein tutorial gibt, aaaber... 404 Seite nicht gefunden.

    Nun meine Frage, kennt jemand von euch ein anderes Tutorial?

    mfg

    Frank



  • Hallo

    schau dir doch erstmal die mitgelieferten Beispiele des Builders an, unter <BCB-Path>/Examples/DBTasks. Zusammen mit der BCB-Hilfe läßt sich schon einiges an Grundkenntnissen lernen.

    bis bald
    akari



  • Guten Morgen,

    ja werd ich machen/mache ich schon. Dachte nur, so ein Tutorial würde mir vieleicht einige "Try&Error"-Versuche ersparen.

    Trozdem Danke!

    Frank



  • Ich hätte da zu dem thema direkt auch mal ne frage 🙂

    ich habe jetzt wie in dem tut : http://bcb-tutorial.c-plusplus.net/Datenbanken1/index.html

    Einen Tabel angelegt,
    und habe ein connectetes TTable objekt....
    doch wie kann ich jetzt aus der db lesen (ansistrings einzeln (spaltenweise am besten)
    und später auch noch schreiben ?



  • Hallo

    Siehe TTable::Edit, ::Post, ::FieldByName...
    steht alles in der BCB-Hilfe mitsamt Beispielen.

    bis bald
    akari



  • okay das habe ich soweit ...

    nur noch eine Umsetzungsfrage... ich lese bei meiner datenbank teile aus, (MP3 Header) und stelle sie dann dar, jetzt will ich wenn jemand draufklickt diese abspielen, dazu brauche ich die adresse der datei (C:\lala.mp3) die liegt auch in der DB, nur wie finde ich am besten die Zeile wieder, muss ich die Ganze DB durchsuchen (den Titel des lieds hab ich ja) oder gibts da ne bessere Methode wieder dranzukommen...

    Kann ich z.b. mir irgend ne Indexnummer ausgeben lassen und dann nacher wieder dahinspringen, oder ein pointer auf diese Zeile oder sowas...



  • Hallo

    Grundsätzlich wäre TQuery mit einer entsprechenden SQL-Anweisung dazu in der Lage.
    Aber ich glaube du hast da ein Konzeptproblem. Du schreibst das du dem User die Liste der Titel anzeigst. Wenn das in einem TDBGrid ö.ä. ist, dann brauchst du gar nichts suchen, denn über die mit dm Grid verbundene TTable kannst du immer sofort die restlichen Daten des ausgewählten Datensatzes auslesen.
    Hast du hingegen ein eigenen, nicht DB-sensitives Control verwendet, ist es wesentlich besser zusätzlich zu den Titeln auch noch den Dateinamen mit auszulesen und beispielsweise in einem internen Array mitzuspichern. Wenn dann die Ordnung der Titel im Control und die Ordnung der Dateinamen im Array übereintimmen, ist es dann auch kein Problem mithilfe des Indexes aus dem Control in dem Array den passenden Dateinamen herauszufinden.

    bis bald
    akari



  • okay also im arbeitsspeicher ablegen, da käme mir dann gleich ne 2 te frage

    und zwar wie schnell oder langsam ist so ne Datenbank.
    Sprich ... ich lasse ne Datenbank mit 1000 Einträgen durchkämmen,
    ist das zumutbar für eine auswahl? Sprich neuer Interpret ausgewählt -> Titel suchen



  • Hallo

    das ist auch migt den veralteten Paradox-DBs kein Problem, wenn es richtig gemacht wird. Falsch ist : manuell die Tabelle öffnen und alle Datensätze durchgehen.
    Richti ist : statt TTable TQuery verwenden und per SQL die Bedingungen (sprich Titel) anwenden.

    bis bald
    akari



  • also garnicht auf TTable zurückgreifen sondern TQuery verwenden?

    Oder nur zum Suchen das TQuery nehmen? Stimmt es ich habe jetzt ein TTabel dann ein TDataSource das darauf verweist (verknüpft ist "DataSet") ... und dann ein TQuery das mit dem TDataSource verknüpft ist?



  • Hallo

    ja ersetzt das TTable durch TQuery und arbeite dich in die SQL-Syntax ein.

    bis bald
    akari



  • Gibts vieleicht auch ein Tutorial zu TQuery, das raf ich gerade garnicht

    Query1->Close();
            Query1->SQL->Clear();
            Query1->SQL->Add("select distinct Interpret from Data");
            Query1->ExecSQL();
    

    stimmt das so? wie komme ich da an die daten?



  • --> für TQuery suchen -->

    SQLQUERY->Close();
    SQLQUERY->SQL->Clear();
    SQLQUERY->SQL->Add("SELECT spaltex, spaltey FROM woauchimmer WHERE Interpret = irgendwas");
    SQLQUERY->Open();
    

    Ansonsten kann ich google empfehlen 😉

    //Mit deinem letzten Edit selektierst du alle Interpreten aus der Datenbank...



  • Nur googel spuckt nicht das aus was ich will 😞

    okay dein Code klingt sehr gut... nur wo ist die ausgabe?
    das Resulatat?

    Auf jedenfall schon mal danke an euch beide 🙂



  • ok noch ne tipp suchfunktion hier im Forum und selber rumprobieren 🤡

    naja ick globe das war so

    Edit1->Text = q_admin->FieldByName("Interpret")->AsString;



  • Hallo

    die Ausgabe ist nicht anders als bei TTable. Du kannst also auch das TQuery als Grundlage für TDataSource und damit für TDBGrid nehmen.

    bis bald
    akari



  • Ich habe ein zweites riesen Problem mit den Datenbanken...
    Wenn das Programm auf einem Anderen PC läuft, gehts erstmal nicht weil der Datenbanktreiber fehlt... 😞

    wenn ich ihn manuell installiere (was schon stressig genug ist)
    *gibts da keinen besseren weg*
    findet er meinen Datenbanktyp, den ich wie im Tutorial angelegt habe nicht 😞

    was mache ich falsch?
    bzw wie mache ichs richtig...

    Es kann doch nciht sein das jeder der ein Programm mit ner Borland db nutzen will erstmal manuell den doofen treiber installieren muss



  • doch das kann sein die TTable etc teile sind ein "wenig" veraltet, dh. auf jedem Rechner wo die db laufen soll oder das Programm dazu muss die Borland Database Engine installiert sein, damit es überhaupt läuft --> traurig aber wahr....

    greetz
    hCk



  • download123 schrieb:

    Es kann doch nciht sein das jeder der ein Programm mit ner Borland db nutzen will erstmal manuell den doofen treiber installieren muss

    Das kannst Du umgehen, indem Du eine Embedded-Datenbank verwendest, z.B. Firebird.



  • Ich bin zwar nicht der große Programmiermeister, aber diese Seite
    http://www.jrsoftware.org/iskb.php?a=bde hat sogar mir weitergeholfen.
    Ausserdem wurden ähnliche Themen schon öfters hier im Forum behandelt, also einfach mal Suchen...

    Gruß...


Anmelden zum Antworten