Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Blobs aus SQL Anfrage ausschliessen (https://www.delphipraxis.net/50551-blobs-aus-sql-anfrage-ausschliessen.html)

midrag 27. Jul 2005 14:57

Datenbank: MySQL • Version: 4.0 • Zugriff über: dbExpress

Blobs aus SQL Anfrage ausschliessen
 
Hallo,

ich habe folgendes Problem:

Ich spreche eine SQL Datenbank in einer Multiuserumgebung an. Die Tabellen bestehen aus gemischten Formaten (BLOB, INT, etc).

Da ich auch in die DB schreibe und über die dbExpress Komponenten zugreife habe ich in Delphi folgenden Aufbau:

SQLConnection -> SQL Table -> DataSetProvider -> ClientDataSet -> DataSource -> DBGrid

Im Grid soll das Feld der Tabelle mit dem Typ BLOB nicht angezeigt werden (allerdings brauche ich das Blob Feld später im Programm). Wie teile ich Delphi mit, dass es im Select Statement fürs DBGrid das BLOB Feld nicht berücksichtigt?

Danke im Voraus!,

midrag

marabu 27. Jul 2005 15:11

Re: Blobs aus SQL Anfrage ausschliessen
 
Hallo midrag,

setze doch mal die Eigenschaft Visible des entsprechenden Feldes auf FALSE.

Grüße vom marabu

WoGe 27. Jul 2005 15:59

Re: Blobs aus SQL Anfrage ausschliessen
 
Zitat:

Zitat von marabu
setze doch mal die Eigenschaft Visible des entsprechenden Feldes auf FALSE.

Das nutzt leider garnix. Die Inhalte der Blobs werden trotzdem übertragen.
Ich denke man muss das select tatsächlich ohne BlobFeld ausführen. Die Blobs bekommt man dann übereine separate Query.

Gruss
wo

marabu 27. Jul 2005 16:02

Re: Blobs aus SQL Anfrage ausschliessen
 
Hallo WoGe,

Zitat:

Zitat von midrag
Im Grid soll das Feld der Tabelle mit dem Typ BLOB nicht angezeigt werden (allerdings brauche ich das Blob Feld später im Programm). Wie teile ich Delphi mit, dass es im Select Statement fürs DBGrid das BLOB Feld nicht berücksichtigt?

Sollte ich das falsch verstanden haben?

marabu

r_kerber 27. Jul 2005 16:09

Re: Blobs aus SQL Anfrage ausschliessen
 
Durch einen Doppelklick auf DBGrid öffnet sich ein Fenster Columns bearbeiten. Dort kannst Du festlegen, welche Spalten im DBGrid angezeigt werden sollen.

WoGe 27. Jul 2005 16:11

Re: Blobs aus SQL Anfrage ausschliessen
 
Hallo marabu.

Zitat:

Zitat von marabu
Sollte ich das falsch verstanden haben?

Sorry, nein nicht wirklich.

Ich ärgere mich nur mir genau so einem Problem rum. Ich will das Blobfeld eigentlich garnicht übertragen, brauche es aber. Es stellt genaugenommen den Grund für die gesammte Tabelle dar.

Da Blobs gross sind, habe ich vermutet :-D das midrag deswegen das Blob nicht im DBGrid haben will.

mfg
wo

midrag 28. Jul 2005 07:08

Re: Blobs aus SQL Anfrage ausschliessen
 
Zitat:

Zitat von WoGe
Hallo marabu.
Da Blobs gross sind, habe ich vermutet :-D das midrag deswegen das Blob nicht im DBGrid haben will.

Es geht vielmahr darum, dass ich das Blob nicht fürs DBGrid brauche und deshalb auch nicht übertragen möchte(erst später wenn es benötigt wird). Die nicht benötigten Spalten habe ich aus dem DBGrid verbannt, er stellt aber trotzdem eine SELECT * FROM Anfrage.
Das Blobfeld wird aber nur relativ selten gebraucht, will es deshalb nicht ständig mit übertragen.

eine Möglichkeit wäre es die entsprechende Spalte aus der SQL Table zu löschen und einen zweiten Pfad mit einer weiteren SQLTable (+dsp, cds, ds)zu erzeugen und dort nur die Blobfelder einzutragen. Finde das aber ziemlich unelegant. Es stellt sich dann auch die Frage wieso man nicht gleich die Blobfelder in einer weiteren Tabelle speichert?

Sharky 28. Jul 2005 07:22

Re: Blobs aus SQL Anfrage ausschliessen
 
Hai midrage,

die BLOB-Felder in einer eigenen Tabelle zu speichern wäre natürlich eine Möglichkeit. Man müsste jetzt mal prüfen ob alleine durch das vorhandensein eines BLOB in einer Tabelle diese schon größer/langsammer wird.

Ansonsten kannst Du ja einfach mir:
SQL-Code:
SELECT pk_feld, feld1, feld2 ,feld3 FROM tabelle
nur die Felder holen die Du auch benötigst.

Wenn dann doch der Inhalt des Blob-Feldes benötigt wird machst Du einfach mit einem zweiten Query
SQL-Code:
SELECT blob_feld FROM tabelle WHERE pk_feld = pk_feld.des_aktiven_DS_der_anderen_query

WoGe 28. Jul 2005 07:52

Re: Blobs aus SQL Anfrage ausschliessen
 
Moin,

Zitat:

Zitat von Sharky
Man müsste jetzt mal prüfen ob alleine durch das vorhandensein eines BLOB in einer Tabelle diese schon größer/langsammer wird.

So der Client auf einem anderen Rechner läuft: nein

Zitat:

Zitat von Sharky
Ansonsten kannst Du ja einfach mir:
SQL-Code:
SELECT pk_feld, feld1, feld2 ,feld3 FROM tabelle
nur die Felder holen die Du auch benötigst.

Ich weiss leider nicht genug über MySQL aber in FB, IB und MSQL kann man auch einen VIEW oder eine SP machen die maqn mit
SQL-Code:
Select * form View
aufrufen kann. Der Vorteil dabei, der Benutzer muss nichts über die Originaltabelle wissen.

Das Blobfeld wird dann, wie von Sharky gesagt, separat übertragen.

mfg
wo

midrag 28. Jul 2005 08:04

Re: Blobs aus SQL Anfrage ausschliessen
 
ja, auf MySQL Ebene würde das so funktionieren.
Ich arbeite aber der SQLTable Komponente und kann die Select Anweisung nicht manuell anpassen.
Um das Blobfeld aus der Anfrage zu entfernen müsste ich es aus Fields (SQLTable) löschen. Das klappt auch, leider kann ich das Blob Feld dann überhaupt nicht benutzen (kann zur runtime das Field auch nicht wieder einfügen :-( ).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.
Seite 1 von 2  1 2      

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