![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSAccess [D6, MSAccess]
BAYES © (2004-03-14 16:49:00)Привет!
Пытался сам разобраться с ADOX, но что-то вяло идет, а проблема стоит и кажись будет стоять.
Мне необходимо в существующую БД (db.mdb), добавить таблицу "kontr" и в нее 3 поля (id-ключевое,счетчик,случайный,a-текстовы.100,b-текстовы.100).
Создавал запросом create table kontr (id integer...), все создавалось, id был ключевым, но не счетчик и т.д.
Затем пошел по пути ADOX, вот здесь и грабли. В VB, я не очень,а в ADO210.CHM, все описания именно на нем.
Doomin (2004-03-22 13:36:00) [1]Делал по книге Елмановой "ADO в Delphi" и посмотрел в TLB, формируемый из adox (DB - это обычный TADOConnection). Далее можно уже разобраться по аналогии. Я autoinc не использую, давно перешел на GUID в виду большей гибкости и постоянной потребности в репликации
var
DBC: TCatalog;
begin
DBC := TCatalog.Create(Self);
try
DBC.DefaultInterface.Set_ActiveConnection(DB.ConnectionObject);
Table := TTable.Create(Self);
try
try
Table.ParentCatalog := DBC.DefaultInterface;
Table.Name := 'TBL_Currency';
Table.Columns.Append('ID', adGUID, 0);
Table.Columns.Append('Name', adVarWChar, 20);
Table.Columns.Append('LastDate', adDate, 0);
Table.Columns.Append('Deleted', adUnsignedTinyInt, 0);
Table.Columns.Item['ID'].Properties['Jet OLEDB:Autogenerate'].Value := True;
Table.Columns.Item['LastDate'].Properties['Default'].Value := 'Now()';
Table.Columns.Item['Deleted'].Properties['Default'].Value := 0;
Table.Keys.Append('IDKey', adKeyPrimary, Table.Columns.Item['ID'], '', '');
DBC.Tables.Append(Table.DefaultInterface);
except
on E: Exception do
Application.MessageBox(PAnsiChar(format(MsgDBWriteError, [E.Message])), PAnsiChar(MsgError), MB_OK or MB_ICONERROR);
end;
finally
Table.Free;
end;
finally
DBC.Free
end;
end
BAYES (2004-03-15 18:38:00) [2]Плохиш (15.03.04 18:19) [8]
Там ты увидиш:
1)Тип данных-Счетчик
2)в сво-х таблицы есть НОВОЕ НАЗНАЧЕНИЯ, вот там можно выбрать, последовательные или случайные.
Все закрыли ветку.
Плохиш (2004-03-15 18:19:00) [3]И вообще, BAYES, ты бы слово increment перевёл бы, может и вопросов таких возникать не будет
Плохиш (2004-03-15 18:17:00) [4]>BAYES © (15.03.04 18:09) [6]
> Открой Access в режиме конструктор, там все и увидишь!
Что и autoincrement случайным образом то же увижу?
BAYES (2004-03-15 18:09:00) [5]Плохиш (15.03.04 13:23) [5]
Ты о каком маразме? Открой Access в режиме конструктор, там все и увидишь! А использование autoincrement-случайного, это мне нужно, последовательное нарастание не приемлемо.
Плохиш (2004-03-15 13:23:00) [6]>BAYES © (15.03.04 13:04) [4]
> НОВОЕ НАЗНАЧЕНИЕ-ПОСЛЕДОВАТЕЛЬНО), а нужно СЛУЧАЙНО
Хорошо, что создатели баз данных до такого маразма не додумались :-|
BAYES (2004-03-15 13:04:00) [7]>>sniknik © (15.03.04 10:51) [3]
вот вопрос
Мне необходимо в существующую БД (db.mdb), добавить таблицу "kont" и в нее 3 поля (id-ключевое,счетчик,случайный,a-текстовы.100,b-текстовы.100).
Твой пример делает(id-ключевое,счетчик, НОВОЕ НАЗНАЧЕНИЕ-ПОСЛЕДОВАТЕЛЬНО), а нужно СЛУЧАЙНО
sniknik (2004-03-15 10:51:00) [8]> Да ладно тебе глумиться
перестаю, отвечаю на так и не заданный вопрос. (правильное построение запроса в вопрос не входило)
кстати интересно еще утро? еще не опоздал?
ADOCommand.CommandText:=
'create table kont (id autoincrement primary key, name varchar(50), ...еще 2 поля)';
ADOCommand.Execute;
> И опять не то.
боюсь показатся навязчивым но что именно? не то это не то слово которым изясняются чтобы тебя поняли, вот запутать можно.
BAYES (2004-03-15 00:21:00) [9]Да ладно тебе глумиться, нужно от чего-то опираться(отпираться).
Сделал такую туфту
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('create table kont (id integer primary key)');
DM.ADOQuery1.ExecSQL;
DM.ADOQuery1.Close
Все гуд, но одновременно не гуд. Вот и полез в чащебу. Там получилось лучше.
DM.ADOConnection1.Close;
cat:=CreateOleObject('ADOX.Catalog');
tab := CreateOleObject('ADOX.Table');
cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db123.mdb');
tab.name:='kont';
tab.ParentCatalog:=cat;
tab.Columns.Append('id',adInteger,0);//первое поле - счетчик
tab.Columns[0].Properties['AutoIncrement'].Value:= True; // счетчик
cat.tables.Append(tab);
И опять не то.
JETSQL40.CHM - эту штуку уже изучаю, но вся проблема, результат нужен утром, а до утра не разобраться.
sniknik (2004-03-14 23:20:00) [10]крут, не разобрался с простейшими запросами полез в движок... уважаю.
рядом с ADO210.CHM лежит JETSQL40.CHM, не пробовал читать? в связи с create table ....