Günther Spille
28.01.2003, 18:15
Hallo,
ich möchte eine Strukturänderung in einer Accessdatenbank über eine
SQL - Anweisung vornehmen.
Meine Frage:
Wie bekomme ich per SQL-Anweisung in einer ACCESS – Datenbanktabelle das Attribut „Leere Zeichenfolge = Ja“ geschaltet für die Feldtypen VARCHAR und LONGCHAR?
Andreas Kosch
10.02.2003, 08:55
Hallo,
derartige Strukturdefinitionen werden am besten über <b>ADOX</b> erledigt, wie das folgende Beispiel für das Anlegen einer neuen ACCESS-Datenbank zeigt:
<pre>
{ ************************************************** **************
Typ : Hauptformular-Unit
Autor : Andreas Kosch
Erstellt am : 29.01.2000
Compiler : Delphi 5.01 UpdatePack #1
Betriebssystem : Windows NT 4
Beschreibung : Demonstriert das Erzeugen einer neuen
ACCESS-Datenbank und einer neuen Tabelle
über die ADOX-Objekte.
Revisionen : 15.09.2000 Test mit D5UP1
************************************************** ************** }
unit MDBUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj, ComCtrls;
type
TFormMain = class(TForm)
MemoLog: TMemo;
StatusBar1: TStatusBar;
EditMDB: TEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.DFM}
uses ADOX_TLB;
resourcestring
cCONNECTSTRING = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
procedure TFormMain.Button1Click(Sender: TObject);
var
aCatalog : _Catalog;
aTable : _Table;
aColumn : _ColumnDisp;
sDBPath : String;
sDS : String;
vColName : OleVariant;
begin
MemoLog.Lines.Clear;
sDBPath := EditMDB.Text;
if FileExists(sDBPath) then
begin
DeleteFile(sDBPath);
MemoLog.Lines.Add(Format('Datenbankdatei %s gelöscht',[sDBPath]));
end;
aCatalog := CoCatalog.Create;
MemoLog.Lines.Add('Catalog...');
sDS := aCatalog.Create(Format('%s%s',[cCONNECTSTRING, sDBPath]));
MemoLog.Lines.Add(sDS);
aTable := CoTable.Create;
MemoLog.Lines.Add('Table...');
aTable.ParentCatalog := aCatalog;
aTable.Name := 'Kunden';
// Spalte 1 = Primärschlüssel
vColName := 'KdnName';
aTable.Columns.Append(vColName, adVarWChar, 30);
aColumn := aTable.Columns.Item[vColName] as _ColumnDisp;
aColumn.Properties['Description'].Value := 'Name des Kunden';
MemoLog.Lines.Add('Spalte 1 hinzugefügt...');
// Primärschlüssel hinzufügen
aTable.Keys.Append('KdnKey', adKeyPrimary, vColName, '', '');
MemoLog.Lines.Add('Spalte 1 als Primärschlüssel definiert...');
// Spalte 2 = Zeichenfeld, das auch Leer bleiben kann
vColName := 'eMail';
aTable.Columns.Append(vColName, adVarWChar, 20);
aColumn := aTable.Columns.Item[vColName] as _ColumnDisp;
aColumn.Properties['Description'].Value := 'eMail-Adresse des Kunden';
aColumn.Properties['Jet OLEDB:Allow Zero Length'].Value := True;
aColumn.Properties['Default'].Value := '(unbekannt)';
MemoLog.Lines.Add('Spalte 2 hinzugefügt...');
// Spalte 3 = Zeichenfeld mit "Erforderlich = Nein"
vColName := 'Telefon';
aTable.Columns.Append(vColName, adVarWChar, 15);
aColumn := aTable.Columns.Item[vColName] as _ColumnDisp;
aColumn.Properties['Description'].Value := 'Telefonnummer des Kunden';
aColumn.Properties['Nullable'].Value := True;
MemoLog.Lines.Add('Spalte 3 hinzugefügt...');
// Tabelle hinzufügen
aCatalog.Tables.Append(aTable);
MemoLog.Lines.Add('.... Fertig!');
end;
end.
</pre>
vBulletin® v3.8.1, Copyright ©2000-2010, Jelsoft Enterprises Ltd.