Image Pfad in Datenbank abspeichern und auslesen
-
Alle Achtung, du hast den Ton drauf, mit dem man sich Freunde macht.
Generell gilt: Bitte nicht nervtöten! Eine Nachfrage pro Tag ist ausreichend, zumal der Thread immernoch auf der ersten Seite des Forums steht. Die Alternative ist vorübergehendes Schliessen des Threads.
Das nur als Hinweis, nicht als Aufforderung zur Offtopic-Diskussion.
-
void __fastcall DBfile(AnsiString datei) { //(002)---DB-file offnen, prüfen, ob *.*-Pfard schon drin und eintragen in Feld "datei" Form1->ADOfile->Open(); Form1->ADOfile->Filtered =True; Form1->ADOfile->Filter ="Datei ="+ QuotedStr(datei); if (Form1->ADOfile->RecordCount>0){Form1->ADOfile->Close(); }else { Form1->ADOfile->Append(); Form1->ADOfile->FieldValues["Datei"] = datei; Form1->ADOfile->Post(); Form1->ADOfile->Close(); } //(002)---Ende } //---------------------------------------------------------------------------Das ist einfache ausschnit von mein Programm.
-
@Jansen
Ja Sorry war etwas sauer wegen ein paar patzigen antworten in 2 anderen threads von mir. Ich fands scheiße das meine frage nur mit guck in die Faq und die Hilfe gewürdigt wurde, obwohl ich angegeben hatte beides durchgesehen zu haben aber egal.Hab das mit dem Speichern des Pfades in meiner datenbank und das auslesen des bildpfades in ein Image Objekt auch hinbekommen, nur wenn ich mein program zu mache sind die daten wieder weg, ich weiß nur nicht wie ich meine änderungen in meine datenbank speichern kann, hab eine Access DB offen und möchte nicht unter neuem namen oder pfad speichern. SOndern nur die änderungen in dieses datei schreiben.
-
Hi,
hm, wenn ich Dich richtig verstehe, hast Du bisher die Datenbank noch nicht angelegt?
Um Bilder direkt in die Datenbank zu speichern mußt Du den Feldtyp BLOB verwenden. Das einzig tückische daran ist, dass Du den Umweg über Streams gehen mußt:
Aus z.B. TBitmap mußt Du die Daten in einen TMemoryStream schreiben und diesen dann in das BLOB-Feld der Datenbank.Wenn Du nur den Pfad und den Namen speichern willst, würde ich dir zwei Tabellen empfehlen. Eine Tabelle mit nur einen Feld und einen Eintrag für den Pfad und eine zweite Tabelle für die Namen der Bilder. So vermeidest Du die redundanten Pfadangaben.
Weißt Du schon wie Du auf die Access-DB zugreifen kannst (willst). Welche Komponenten willst Du für den Zugriff verwenden, respektive welche hast Du zur Verfügung (ist von Deiner BCB-Version abhängig)?
Grüße
-
Doch doch die datenbank existiert es ist eine Access datenbank und die liegt in dem ordner in dem ich das projekt gespeichert habe. Das feld in dem der Pfad gespeichert wird ist ein textfeld das geht auch super ich möchte jetzt nur wissen wie ich die daten die ich eingegeben habe in der Tabelle speichern kann, sodas nach erneutem öffnen alles noch da ist was ich beim letzten öffnen gändert habe.
-
Und womit greifst Du auf die DB zu? TADO... TQuery, TTable?
-
ttable
-
Dann zum Beispiel mit:
Table1->Insert(); Table1->FieldByName("Dateiname")->AsString = Edit->Text; // Weitere Felder schreiben... sofern vorhanden Table1->Post();Zum Bearbeiten eines vorhandenen Datensatzes verwendest Du Table1->Edit().
Hilft Dir das weiter?
Grüße
-
Sorry falls ich mich mißverständlich ausgerückt haben sollte. Ich möchte nicht wissen wie ich die daten meiner Datenbank editiren oder eingeben kann, das weiß ich bereits, ich möchte wissen wie ich diese eingaben in die datenbank speichern kann damit sie beim nächsten öffnen auch noch da sind.
-
Das verstehe ich dann wiederum nicht?!? Normalerweise werden die Daten beim ->Post() in die Datenbank geschrieben. Mehr ist eigentlich nicht nötig.
Zeig mal die Methode, mit der Du versuchst die Daten in die Datenbank zu schreiben.
Grüße
-
Hab den Post() befehl vergessen.

OpenDialog1->Execute();
if (OpenDialog1->Execute()); Table1->FildByName("Bildfeld")->AsString=(OpenDialog1->FileName);so wars glaube ich habs ausm Kopf geschrieben bin gerade nicht an meinem Rechner.
Muß dann doch nur in die letze Zeile des Befehl
Table1->Post(); schreiben oder?
-
Ja, sollte dann funktionieren.

-
Ich hab noch ne kurze Frage gehört zwar eigentlich in ein neues Thema aber egal. Ich hab einen ordner in dem mein Programm ist, mit einem unterorder wo die Bilder drin sind. Wie kann ich dem Programm sagen das es automatisch von dem ordner in dem es sich befindet nach dem ordner bilder sucht(und öffnet) damit ich wenn ich das program mal auf d:/ oder e:/ habe auch noch alle bilder gefunden werden? Mit GetDirectory() vielleicht?
-
AnsiString Verzeichnis = ExtractFilePath(Application->ExeName);gibt Dir den Pfad der Anwendung zurück. Dann noch das gewünschte Unterverzeichnis anhängen...
Grüße
-
Super ich danke dir hast mich heute ein großes stück weitergebracht, endlich mal einer der einem gute tipps gibt und nicht nur auf die Faq oder die Hilfe von Borland verweist. 
Aber einen hab ich noch die access datenbank mußte ich ja erst unter odbc oder so eintragen damit der die findet. Was ist den wenn ich das programm auf einem anderen rechner laufen lasse findet der die datenbank dann wenn sie vorher auf c:/db.mdb war und jetzt auch?
-
Obwohl ich mir dafür bestimmt wieder einen Rüffel von den Moderatoren einhandle.

Aber ich hoffe, dass Du trotzdem mal in die Hilfe oder die FAQs schaust, um das Thema zu vertiefen... Sollte ich nämlich feststellen, dass Deine Eigeninitiative gegen Null tendiert, wirst Du von mir auch nur noch Hinweise auf die Hilfe erhalten.

Grüße
-
Hallo
besser waere es aber gewesen auf die FAQ zu verweisen, denn dann haettest du beim
naechstenmal nicht stundenlang gewarete/gepostet sondern gleich in der FAQ nachgeschaut und das meiste was dir als Hilfe gegeben wurde selbst gefundender erste Schritt ist immer die FAQ durchzusuchen
der zweite Schritt ist die Suche zu verwenden
erst dann sollte man hier postenMfG
Klaus
-
KlausB schrieb:
der erste Schritt ist immer die FAQ durchzusuchen
der zweite Schritt ist die Suche zu verwenden
erst dann sollte man hier postenDer nullte Schritt ist natürlich die BCB-Hilfe (oder Win-API-Hilfe und ähnliches) zu konsultieren.
Der -1. Schritt sollte natürlich sein, sein Gehirn einzuschalten.Gruß,
Alexander
-
Hab ich ja aber in der hilfe ist es schwer etwas zu finden wenn man den suchbegriff nicht weiß,in der Faq war auch nicht, ich habe sogar bevor ich hier gepostet habe noch mein Buch durchgesehen aber da war das thema Datenbank leider nicht so sehr vertreten.
-
vexx schrieb:
... findet der die datenbank dann wenn sie vorher auf c:/db.mdb war und jetzt auch?
Nicht, ohne dort ebenfalls den ODBC-Eintrag vorzunehmen. Aber die DB kann in einem beliebigen Pfad gespeichert werden. Dieser muss ja bei der ODBC-Einrichtung angegeben werden.