Hallo,
um in einer existierenden Access-Datenbank ein neues Text-Feld anzulegen (mit der Eigenschaft 'Allow zero length'=True), habe ich mir folgene kleine Routine geschrieben,
an die der Connection-String, der Name der Tabelle, der Name des neuen Feldes und die Feldlänge übergeben wird. Grundlage waren einige Beispiele im Forum, die sich aber alle auf die Neuanlage einer Tabelle (und nicht der Ergänzung einer vorhandenen) beziehen.
Das Problem ist nun, dass nach Aufruf der Routine kein neues Feld in der Datenbank vorhanden ist. Was Mache ich falsch?
uses
ADOX_TLB, ADODB_TLB;
function CreateMDBCharField( const constr, sTable, sField: string; const len: integer ): boolean;
var
aConnection: _Connection;
aCatalog: _Catalog;
aTable: _Table;
aColumn: _Column;
begin
try
aConnection := CoConnection.Create;
aConnection.Open( constr, '', '' , adConnectunspecified );
aCatalog := CoCatalog.Create;
aCatalog.Set_ActiveConnection( aConnection );
aTable := CoTable.Create;
aTable.ParentCatalog := aCatalog;
aTable.Name := sTable;
aColumn := CoColumn.Create;
with aColumn do
begin
ParentCatalog := aCatalog;
Name := sField;
Type_ := adVarWChar;
DefinedSize := len;
Properties['Jet OLEDB:Allow Zero Length' ].Value := true;
end;
aTable.Columns.Append( aColumn, 0, 0 );
aTable.Columns.Refresh;
aConnection.Close;
Result := true;
except
Result := false;
end;
end;
um in einer existierenden Access-Datenbank ein neues Text-Feld anzulegen (mit der Eigenschaft 'Allow zero length'=True), habe ich mir folgene kleine Routine geschrieben,
an die der Connection-String, der Name der Tabelle, der Name des neuen Feldes und die Feldlänge übergeben wird. Grundlage waren einige Beispiele im Forum, die sich aber alle auf die Neuanlage einer Tabelle (und nicht der Ergänzung einer vorhandenen) beziehen.
Das Problem ist nun, dass nach Aufruf der Routine kein neues Feld in der Datenbank vorhanden ist. Was Mache ich falsch?
uses
ADOX_TLB, ADODB_TLB;
function CreateMDBCharField( const constr, sTable, sField: string; const len: integer ): boolean;
var
aConnection: _Connection;
aCatalog: _Catalog;
aTable: _Table;
aColumn: _Column;
begin
try
aConnection := CoConnection.Create;
aConnection.Open( constr, '', '' , adConnectunspecified );
aCatalog := CoCatalog.Create;
aCatalog.Set_ActiveConnection( aConnection );
aTable := CoTable.Create;
aTable.ParentCatalog := aCatalog;
aTable.Name := sTable;
aColumn := CoColumn.Create;
with aColumn do
begin
ParentCatalog := aCatalog;
Name := sField;
Type_ := adVarWChar;
DefinedSize := len;
Properties['Jet OLEDB:Allow Zero Length' ].Value := true;
end;
aTable.Columns.Append( aColumn, 0, 0 );
aTable.Columns.Refresh;
aConnection.Close;
Result := true;
except
Result := false;
end;
end;
Comment