Текущий архив: 2003.12.12;
Скачать: CL | DM;
Вниз
Access и два поля как PrimaryKey Найти похожие ветки
← →
Sergey G (2003-11-21 11:42) [0]Привет, ALL! Возник такой вопросик.... Программно создаю базу данных и таблицу Access с помощью ADOX. Пытаюсь также программно задать двум полям PrimaryKey и не получается - могу объявить только одно... :(((
вот как это делаю...
Var
Catalog1:_Catalog;
Table1:_Table;
CLMN:_Column;
...
Catalog1:=CoCatalog.Create;
if FileExists(StrBName) then DeleteFile(StrBName);
Catalog1.Create(DS + StrBName);
Catalog1._Set_ActiveConnection(DS + StrBName);
Table1:=CoTable.Create;
Table1.Name:=StrTblName;
Table1.ParentCatalog:=Catalog1;
CLMN:=CoColumn.Create;
With CLMN do begin
ParentCatalog:=Catalog1;
Name:="Date";
Attributes:=adColNullable;
Type_:=adDate;
end;
Table1.Columns.Append(MyNField.Strings[rr],MFType,0);
CLMN:=NIL ;
CLMN:=CoColumn.Create;
With CLMN do begin
ParentCatalog:=Catalog1;
Name:="Time";
Attributes:=adColNullable;
Type_:=adDate;
end;
Table1.Columns.Append(MyNField.Strings[rr],MFType,0);
CLMN:=NIL ;
вот эти два поля нужно сделать как PrimaryKey
Table1.Keys.Append("PrKey",adKeyPrimary, Table1.Columns[0] ,"",""); //- делает только одно поле PrimaryKey
....
Помогите, плиз...
Заранее спасибо :))
← →
Reindeer Moss Eater (2003-11-21 11:45) [1]Стандартом ANSI на SQL не хочешь воспользоваться?
← →
Anatoly Podgoretsky (2003-11-21 12:01) [2]Понимаешь перевод слова Primary?
← →
sniknik (2003-11-21 12:15) [3]Anatoly Podgoretsky © (21.11.03 12:01) [2]
ты насчет того что ключь должен быть один?
но тут наверное он не так выразился, а что ему нужно так это просто ключь по 2м полям. (чуть чуть не так звучит, да? а какое отличие ;о)))
Sergey G (21.11.03 11:42)
действительно почему не SQL?
делается элементарно
CREATE TABLE Table1 (Fld1 INT IDENTITY(1,1), Fld2 INT, PRIMARY KEY (Fld1,Fld2))
и все.
← →
sniknik (2003-11-21 12:24) [4]кстати в твоем случае скорее всего тоже можно (надо только хелп до конца дочитывать, самое интересное в конце ;о))
Syntax
Keys.Append Key [, KeyType] [, Column] [, RelatedTable] [, RelatedColumn]
....
Column Optional. A String value that specifies the name of the column to be indexed. The Columns parameter corresponds to the value of the Name property of a Column object.
....
Remarks
The Columns parameter can take either the name of a column or an array of column names.
← →
Sergey G (2003-11-21 12:31) [5]sniknik © (21.11.03 12:15)
сорри, я действительно не так выразился :))
а почему не SQL - просто хотел целиком и базу данных и таблицу создавать именно с помощью ADOX...
вобщем ща попробую через SQL :))
спасибо :))
← →
Anatoly Podgoretsky (2003-11-21 12:33) [6]sniknik © (21.11.03 12:15) [3]
Я насчет того, что первым (первичном) может быть только один, два это уже противорецит логики, один из них автоматом бцдет вторичным.
← →
sniknik (2003-11-21 12:57) [7]может это и нелогично но Access/MsSql(другие не знаю) это поддерживают (и насколько видел в тестовых базах активно используют).
это я про 2 и больше знечения в одном ключе а не про несколько ключей, такого сделать там нельзя. (Anatoly боюсь ты меня неправильно понял судя по [6])
а так ключь составной в отдельные поля принимаются повторяющиеся значения, лиш бы в паре 1поле || 2поле было уникально.
← →
Anatoly Podgoretsky (2003-11-21 12:58) [8]sniknik © (21.11.03 12:57) [7]
Так я не про 6, а про 0
← →
BlackCat (2003-11-21 16:05) [9]А индексами пользоваться не пробывал?
← →
Sergey G (2003-11-21 16:35) [10]так вот, если кому интересно, то я всетаки добавил Primery ключ по двум полям с помощью ADOX... для этого после создания таблицы прописываем...
Var
PrKey:_Key;
Try
PrKey:=CoKey.Create;
PrKey.Name:="PrKey";
PrKey.Type_:=adKeyPrimary;
PRKey.Columns.Append("Date",adDate,0);
PrKey.Columns.Append("Time",adDate,0);
Catalog1.Tables[StrTblName].Keys.Append(PrKey,0,EmptyParam,"","");
finally
PrKey:=Nil;
Catalog1:=nil;
end;
Страницы: 1 вся ветка
Текущий архив: 2003.12.12;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c