Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DBImage-Felder leeren, nicht löschen (https://www.delphipraxis.net/138790-dbimage-felder-leeren-nicht-loeschen.html)

mkinzler 19. Aug 2009 21:30

Re: DBImage-Felder leeren, nicht löschen
 
Verweisen die anderen Tables auf die selbe Datenbanktablle?

hoika 19. Aug 2009 22:07

Re: DBImage-Felder leeren, nicht löschen
 
Hallo,

vergiss das blöde TTable.
Nimm eine Query.

Query.SQL.Add('Update Table1 Set Blob_Field=NULL Where Id=5');
Query.ExecSQL;

Id=5 ist jetzt mal geraten ;)


Heiko

Spargeltarzan 20. Aug 2009 03:51

Re: DBImage-Felder leeren, nicht löschen
 
An mkinzler:

Ja die Tables weisen auf dieselbe Datenbank.

Spargeltarzan 20. Aug 2009 04:07

Re: DBImage-Felder leeren, nicht löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wie geht das mit Query ?

Id=5 ? was ist das ?

Ich kenn mich mit query nicht gut aus. Meine Basisdatenbank besteht aus ca. 950 Datensätzen. Ich hab ein Input-Blatt, wo ich Bilder absave. Ich möchte einfach die Bilder aus der Datenbank entfernen, ohne den gesamten Datensatz (z.B.) Nr.567 zu löschen. Ich navigiere mit dem DBNavigator durch die Datenbank und zeige die BLOB-Felder dann mit DBImage an. Ich möchte einfach bei allen 6 Bildern ein Button setzen, der mir das Bild leert (nicht löscht). Ich hab ein Screenshot des Inputs zur Verständisklärung beigefügt.

Gruss
Spargeltarzan

mkinzler 20. Aug 2009 05:34

Re: DBImage-Felder leeren, nicht löschen
 
Sollen die Bilder nur am Bildschirm geleert werden oder auch aus der DB entfernt?

hoika 20. Aug 2009 07:27

Re: DBImage-Felder leeren, nicht löschen
 
Hallo,

Id ist der Primär-Schlüssel der Tabelle.
Irgendwie muss die Query ja wissen, was sie leeren soll.

Nehmen wir mal an, Table1 ist mit dem DataSet verbunden.

Delphi-Quellcode:
var
  Query: TQuery;
begin
  Query:= TQuery.Create(NIL);
  try
    with Query do
    begin
      SQL.Clear;
      SQL.Add('Update Table1 Set Blob_Field=NULL Where Id=:Id');
      ParamByName('Id').AsInteger:= Table1.FieldByName('Id').AsInteger;
      ExecSQL;
    end;
  finally
    Query.Free;
  end;
 
 // ev. das hier noch
  Table1.Refresh;

end;

Heiko

Spargeltarzan 21. Aug 2009 04:31

Re: DBImage-Felder leeren, nicht löschen
 
Vom Bildschirm und aus der DB, aber der Datensatz sollte nicht gelöscht werden (wie mit Delete vom Navigator).

Methode: Table1.ClearFields
Also igendwie kann ich diese Standardanweisung zum leeren (löschen) nicht anwenden, weil die Datenbank irgendwo in Gebrauch ist (daher die Meldung: Record locked, db used by another user). Ich habe viele Tables in Gebrauch, muss ich alle Tables auf active:=false setzen ? Das wäre aber nicht gut, denn ich habe viele Units und dann müsste ich bei jedem Aufruf die Eigenschaft active auf true stellen.

DeddyH 21. Aug 2009 12:08

Re: DBImage-Felder leeren, nicht löschen
 
Nur so eine Idee:
Delphi-Quellcode:
DBImage.Datasource := nil;

hoika 21. Aug 2009 12:38

Re: DBImage-Felder leeren, nicht löschen
 
Hallo,

1. was ist mit meiner Query ?

2. Schreibe dir eine Methode OpenTable, die jede unit aufruft.
Dein Code ist ene schönes Bsp. wie amn es nicht macht ;)
OK, habe ich früher auch so gemacht.

Die TTable darf nur an genau einer Stelle stehen,
z.B. in einer Datenklasse.
Jede weitere Unit hat diese Klasse zu benutzen.


Heiko

Spargeltarzan 21. Aug 2009 15:37

Re: DBImage-Felder leeren, nicht löschen
 
An Heiko

Ja ich weiss, ich hätte ein Daten-Modul einbinden sollen, mit einer Table und einer Datasource. Aber das ist jetzt zu spät. Wie meinst du das: eine Methode OpenTable schreiben ? Ich kappier gar nichts mehr.

Gruss
Spargeltarzan


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:02 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz