Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grosses DB-Feld in AccessTabelle erzeugen (https://www.delphipraxis.net/18867-grosses-db-feld-accesstabelle-erzeugen.html)

torud 25. Mär 2004 14:41


Grosses DB-Feld in AccessTabelle erzeugen
 
Hallo Leute,

ich benötige in einer Access-Tabelle ein sehr grosses Textfeld für die Beschreibung einer Stadt. Es reichen mir also nicht die üblichen 255 Zeiche aus. Welches Feld kann anstatt dessen erzeugen und wieviel Platz für Beschreibungen hätte ich dann?

Am Rande noch gefragt: Wie könnte ich eventuell noch ein Logo oder Wappen dieser Stadt gleich noch mit der DB ablegen? Ich will nicht einen Zeiger oder einen Verweis darauf ablegen, sondern das Objekt selbst.

Vielen Dank
für Tipps

Delphi_Fanatic 25. Mär 2004 14:52

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Wieso nimmst Du in Access nicht einfach ein Memo-Feld für Deine Städte-Beschreibung ?

torud 26. Mär 2004 07:19

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Nun es ging mir hierbei nicht um die Nutzung von Access, sondern um das Erzeugen eines solchen FeldTypen mittels Delphi.

Desweiteren interessierte mich, wie ich ein Bild der Stadt in der DB ablegen und aufrufen kann.

Hat sonst noch jemand Vorschläge?

mikhal 26. Mär 2004 12:07

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Der Datentyp LongText erzeugt ein Memo-Feld in der Tabelle.

Der Datentyp LongBinary erzeugt ein OLE-Objekt-Feld, das verwende ich immer, wenn ich Bilder oder andere BLOB's in meiner Access-Datenbank ablegen möchte.

Schau dir mal die Hilfe zu Access an, da werden die Datentypen alle beschrieben.

Via SQL-Anweisung CREATE TABLE lege ich meine Access-Tabellen an. Kannst du dir auch auf meiner HP unter Access-Tabelle anlegen genauer anschauen.

Grüße
Mikhal

torud 26. Mär 2004 15:11

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Hallo und vielen Dank für die Tipps,

eines meiner Probleme ist, dass ich hier, wo ich gerade programmiere kein Access habe. Ich brauche nicht den Code zum erstellen einer Tabelle. Mir würde ein kleiner Schnipsel zum Erstellen einer solchen Spalte LongText oder blob für Delphi reichen, oder ein kleiner Schnipsel, mit dem ich den die bestehende Spalte von Text in Longtext wandeln kann.

Wer hat eine Idee ???
Ich suche seit vielen Tagen nach einer solchen Möglichkeit.

mikhal 26. Mär 2004 18:24

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Sorry, willst du eine Tabelle erstellen, in der ein Memo und / oder ein Bild eingebunden werden? Dann solltest es etwa so gehen:
Code:
AdoQuery1.SQL.Text := 'CREATE TABLE Test(';
AdoQuery1.SQL.Add(' Memo LongText,');
AdoQuery1.SQL.Add(' Bild LongBinary)';
AdoQuery1.execSQL;
Willst du Daten in die Felder schreiben? Sollte beim Memo kein Problem sein, da du einfach ein TDBMemo als Eingabe- und Ausgabekomponente verwendest.

Bei Bildern ist es etwas aufwändiger, hier mußt du die Daten entweder über einen TBlobStream lesen bzw. schreiben oder mit einem Typecast via Assign zuweisen. Ein Beispiel zu letzterem findest du auf meiner HP: BLOB auslesen und BLOB schreiben. Das Verfahren funktioniert bei Access ähnlich wie bei Paradox (via BDE).

Grüße
Mikhal

torud 26. Mär 2004 18:33

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Hallo,

ich will mich ja nicht allzu dämlich anstellen, aber die tabelle ist schon da und mehr als voll mit Daten. Ich will/muss in die bestehende Tabelle eine Spalte einfügen.

Ich glaube mit dem oben vorliegenden Code würde ich die vorhandene Tabelle überschreiben und damit leeren???

Robert_G 26. Mär 2004 19:17

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Das waren 10 sekunden Google.
Demovideo für eine DB Oberfläche
Zum Schluss siehst du ein ALTER TABLE Statement.
Oder hier.

p.s.: Das Video im ersten Link zeigt ein Programm, dass auf hinterhältige Art versucht, den PL/SQL Developer zu kopieren... und kläglich scheitert. :lol:

torud 26. Mär 2004 19:43

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Hallo,

und vielen Dank.

Für alle, diees interessiert, wié´s funktioniert:

Code:
 
  DM.ADOTable1.Active:=true;
  DM.ADOQuery1.sql.Clear;
  DM.ADOQuery1.SQL.Add('ALTER TABLE countries ALTER description LongText');
  DM.ADOQuery1.ExecSQL;
In diesem Beispiel wird in der vorhandenen Spalte "Description" der Datentyp auf Longtext geändert.

mikhal 26. Mär 2004 21:12

Re: Grosses DB-Feld in AccessTabelle erzeugen
 
Tja, es wäre vielleicht gut gewesen, wenn du gleich gesagt hättest, daß du in eine bestehende Tabelle weitere Spalten anfügen möchtest. Schau dir mal folgendes an:

Code:
  qryAlter.SQL.Text := 'ALTER TABLE Medium ADD COLUMN ArchivNr varchar(40) NULL;';
  qryAlter.ExecSQL;
  qryAlter.SQL.Text := 'ALTER TABLE Medium DROP COLUMN ArchivNr;';
  qryAlter.ExecSQL;
Mit dem ersten ALTER-Statement fügst du in einer Access-Tabelle eine neue Spalte hinzu, mit dem zweiten Alter-Statement löschst du eine Spalte.

Grüße
Mikhal


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

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