Tutorial zu BDE / Datenbanken mit BCB6
-
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?
-
-
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ß...
-
Okay.. danke für den link... ich werde in zukunft andere Datenbanken nehmen...
Habe nur noch eine fage zu der seite...
Das Creating Alias hab ich nicht verstanden... ich muss quasi ein programm erstellen was einen Alias erstellt richtig?
Okay ich habe den Perl code umgesetztAnsiString FDbDriver = "PARADOX"; AnsiString SubDir = "DB\\Data"; AnsiString FAlias; AnsiString FAliasDir; //begin FAlias = "ID3"; Session1->ConfigMode = cmPersistent; if (!Session->IsAlias(FAlias)) { //begin AnsiString AliasDir = ExtractFilePath(ParamStr(0)) + SubDir; Session1->AddStandardAlias(FAlias, FAliasDir, FDbDriver); Session1->SaveConfigFile(); //Application->MessageBox("ADDED",NULL,NULL); /* Session->AddStandardAlias("blabla", "C:\\datenbank", "PARADOX"); Session->SaveConfigFile(); */ } else { Application->MessageBox("Error... DB Alias exisitert bereit",NULL,NULL); Session1->DeleteAlias(FAlias); AnsiString AliasDir = ExtractFilePath(ParamStr(0)) + SubDir; Application->MessageBox(AliasDir.c_str(),NULL,NULL); Session1->AddStandardAlias(FAlias, FAliasDir, FDbDriver); Session1->SaveConfigFile(); } exit(EXIT_SUCCESS);Also es wäre echt super wenn jemand mal ein tut hätte für Boreland C++ Builder Datenbanken ohne BDE *Sprich andere Datenbanken Typen mit dem C++Builder... und wies geht*