Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-36725
Eagle Owl
2003-12-01 22:05
2003.12.12
TTimer...


1-36643
loki128
2003-12-01 08:57
2003.12.12
Утилита составления графического алгоритма программы


1-36734
LittleGirly
2003-12-02 10:24
2003.12.12
Вопрос по TreeView


3-36569
NewD
2003-11-20 08:27
2003.12.12
Как передать var - параметр в хр. процедуру


7-36863
Morg
2003-10-05 01:04
2003.12.12
Пичатаем !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский