Announcement

Collapse
No announcement yet.

Attribut Leere Zeichenfolge = Ja

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Attribut Leere Zeichenfolge = Ja

    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?

  • #2
    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&gt

    Comment

    Working...
    X