Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO и ACCESS2000 [D6, Access]


Страницы:   1 2

Stas ©   (2002-12-24 09:21:00) 

Подскажите, можно ли программно создать таблицу в MS ACCESS c помощью ADO.


sniknik   (2003-01-07 21:09:00) [1]

ты просто импортировал библиотеку. будеш читать хелп из ADO210.CHM будеш только путатся (я путался).

Удачи.


Jura   (2003-01-07 19:00:00) [2]

>Sniknik
хорошо, но на сайте я читал что ADOX компоненты устанавливаются так
Project|Import type Library|microsoftADO EXT.2.1 for DDl & Security [Version 2.1] и в ActiveX появляются 7 компонентов. В том числе и ADOXCatalog с помощью которого я создавал базу. Может я неправ? А насчёт других рук категорически против т.к. хочу добиться этого сам, и платить несобираюсь.
Спасибо тебе за всё! Буду пытаться самостоятельно.


sniknik   (2003-01-07 18:17:00) [3]

нет похоже тебе рано заниматся базами. читай основы языка (дельфи).

нет компонентов TADOXTable и TADOXCatalog, есть COM сервер ADOX и у него методы/свойства Table, Catalog ... и т.д.

> Судя по Help"у написано свё правельно
как же правильно если не можеш модуль подключить в котором функция описана (CreateOleObject).

p.s. отдай задание в другие руки, или заплати за него. или купи книг по Delphi, бейсику, SQL, COM и всему что будет встречатся.

не обижайся но последние вопросы я считаю не для форума это надо знать, раз уж берешся за большее не освоив начал.
и отвечать на них я лично не буду (хотя подсказку уже дал:-)), извини. :-((


Jura   (2003-01-07 17:24:00) [4]

>Sniknik
Судя по Help"у написано свё правельно.
Да вот, заместо
tbl:= CreateOleObject("ADOX.Table");
cat:= CreateOleObject("ADOX.Catalog");
нельзя вытянуть компоненты TADOXTable и TADOXCatalog и вних уже критить таблицу. Я в принципе только-что пробывал, но что-то невыходит.


sniknik   (2003-01-07 16:37:00) [5]

курсор на него и Ctrl+F1.


Jura   (2003-01-07 15:40:00) [6]

>Sniknik
Спасибо тебе!
В том то и дело что через ADO проще да и получается всё. Но сказано было сделать через ADOX. Только вот ещё ругательство:
procedure TForm1.Button1Click(Sender: TObject);
begin
tbl:= CreateOleObject("ADOX.Table");


[Error] Unit1.pas(33): Undeclared identifier: "CreateOleObject"


sniknik   (2003-01-07 03:08:00) [7]

Технологию? Учиш Бейсик (немного, достаточно синтаксиса и типов 150-200 стр. хорошей книги, в плохой больше :-(() и находиш соответствия что это значит в Дельфи. Пишеш.

p.s. Может хватит ерундой страдать? Пиши попроще для начала.

первый пример на дельфи, второй тебе для тренировки.
procedure CreateTable;
const
adInteger = 3;
adVarWChar = 202;
var
tbl, cat: Variant;
begin
tbl:= CreateOleObject("ADOX.Table");
cat:= CreateOleObject("ADOX.Catalog");

cat.ActiveConnection:=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Base.mdb;";
tbl.Name:= "MyTable";
tbl.Columns.Append("Column1", adInteger, 0);
tbl.Columns.Append("Column2", adInteger, 0);
tbl.Columns.Append("Column3", adVarWChar, 50);
cat.Tables.Append(tbl);

tbl:= Unassigned;
cat:= Unassigned;
end;


кстати почему именно ADOX и чем ADO неугодило? звучит красиво? а ведь есть еще Jro, Dao еще лутше звучит а ? :о))


Jura   (2003-01-07 00:17:00) [8]

> Sniknik
Помоги перевести это в нормальный вид.(объесни технологию)Заранее благодарен за ответ.


Jura   (2003-01-06 23:42:00) [9]

>Sniknik
Да Help поставил это откопал. Ты конечно извини, но с этим первый раз сталкиваюсь так что как переводить чтобы в Delphi всё шло я незнаю!8-((


sniknik   (2003-01-06 23:30:00) [10]

Jura (06.01.03 23:23)
:о)))))
так и впихнул? это же пример на бейсике переводить надо.


sniknik   (2003-01-06 23:29:00) [11]

Поставь 2000-й MSOffice или XP (нерезанный в пиратках часто сокращают), полная установка с хелпами, и все тебе будет.


Jura   (2003-01-06 23:23:00) [12]

В том то и все дела что этого helpa нет! А ето я отрыл уже давно.
А вот этот текст я пишу в событие кнопки
procedure TForm1.Button2Click(Sender: TObject);
begin
А дальше вот такая компьютерная брань.
[Error] Unit1.pas(44): Undeclared identifier: "Sub"
[Error] Unit1.pas(46): Missing operator or semicolon
[Error] Unit1.pas(46): "(" expected but identifier "Table" found
Может я не там пишу? Я незнаю?


sniknik   (2003-01-06 23:09:00) [13]

Ну да теперь знаеш то что тебе на этой ветке 2 раза показывали.
говорю же читай хелп, где лежит тоже говорил
вот оттуда

сделать таблицу
Sub CreateTable()

Dim tbl As New Table
Dim cat As New ADOX.Catalog

"Open the catalog.
" Open the Catalog.
cat.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind.mdb;"

tbl.Name = "MyTable"
tbl.Columns.Append "Column1", adInteger
tbl.Columns.Append "Column2", adInteger
tbl.Columns.Append "Column3", adVarWChar, 50
cat.Tables.Append tbl

End Sub


сделать индекс
Sub CreateIndex()

Dim tbl As New Table
Dim idx As New ADOX.Index
Dim cat As New ADOX.Catalog

"Open the catalog.
" Open the Catalog.
cat.ActiveConnection = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\Program Files\Microsoft Office\" & _
"Office\Samples\Northwind.mdb;"

" Define the table and append it to the catalog
tbl.Name = "MyTable"
tbl.Columns.Append "Column1", adInteger
tbl.Columns.Append "Column2", adInteger
tbl.Columns.Append "Column3", adVarWChar, 50
cat.Tables.Append tbl

" Define a multi-column index
idx.Name = "multicolidx"
idx.Columns.Append "Column1"
idx.Columns.Append "Column2"

" Append the index to the table
tbl.Indexes.Append idx

End Sub


переводи. не так уж это сложно.


Jura   (2003-01-06 23:05:00) [14]

маленько ошибся
DataSource:=
"Provider=Microsoft.Jet.OLEDB.4.0" +
";Data Source=" + dbName +
";Jet OLEDB:Engine Type=4";
Catalog1.Create1(DataSource);
вот так правильно. Помогите сделать таблицы с помощью ADOX компонентов.


Jura   (2003-01-06 22:42:00) [15]

>Sniknik
Вобщем ребята c AdoX я базу знаю как создать
var
DataSource,dbName:string;
Begin
dbName:="C:\*.mdb";
DataSource:=
"provider=Microsoft.Jet.Oledb.4.0"+
";Data Source=c:\Base.mdb"+
";Persist Security Info=False"+
";Jet.OleBd:engine type:=4";
ADOXCatalog1.Create1(DataSource);
end.
База теперь есль осталось критнуть в ней таблицы с ключами, но с помощью ADOX компонентов.
Так что народ вот такая проблема. Прошу подключиться в её решение.


sniknik   (2003-01-06 20:10:00) [16]

Лесник © (06.01.03 20:00)
а где же ADOX? :-)) согласен так намного проще.


sniknik   (2003-01-06 20:08:00) [17]

посмотри хелп, есть там и работа таблицами и индексами и примеры на бейсике только перевести.

непонятно зачем себе жизнь усложнять (понятно было бы если нельзя штатными средствами сделать, как создание базы например), но раз хочется... твое дело. насчет помоши, ложи сюда ктонибудь да ответит.


Лесник   (2003-01-06 20:00:00) [18]

var
a:String;
begin
a:="CREATE TABLE Friends([FriendID] Autoincrement,[LastName] text(50),[FirstName] text(50),[Birthdate] date,[Phone] text(15),";
a:=a+"[Notes] memo,[zarplata] Currency,[working] logical,[photo] OleObject,CONSTRAINT [Index1] PRIMARY KEY ([FriendID]));

ADOCommand1.CommandText:=a;
ADOCommand1.Execute;
end;

//вставить запись в таблицу
ADOCommand1.CommandText:="INSERT INTO Friends(FirstName,LastName)VALUES("Janka","Zasrankin")";
ADOCommand1.Execute;

// удалить таблицу
ADOCommand1.CommandText:="DROP TABLE Friends";
ADOCommand1.Execute;


Jura   (2003-01-06 19:46:00) [19]

>Sniknik
СПАСИБО бОЛЬШОЕ ЗА ТВОЙ БЫСТРЫЙ ОТВЕТ ПРИДУ ДОМОЙ БУДУ ПРОБЫВАТЬ.
Но это только создание самого mdb файла? Мне в принципе есчо надо в нём две таблицы с клечами Primary и Foreign. Могу я на тебя расчитывать в дальнейшем? Понимаешь мне поставили задачу создать прогу которая делает в mdb базе две таблицы с ключами с использыванием ADOX компонентов, как видел с ADO проблем никаких а вот с ADOX проблемы. Так что вот какие у меня делишки. Спасибо!!!


sniknik   (2003-01-06 17:39:00) [20]

а я и не прикалывался, надо так надо, ADOX так ADOX.
информацию см. в файле ADO210.CHM (повторяюсь. :( (sniknik © (29.12.02 01:39)))

компонент никаких не надо, пишеш примерно так (создание базы)

function CreateMDBBase(BaseName: string): boolean;
var AdoEngine: Variant;
begin
result:= false;
if Length(BaseName)=0 then begin
DoIfError("Не определено имя базы");
exit;
end;
try
BaseName:= Trim(BaseName);
if Copy(UpperCase(BaseName), Length(BaseName)-3, 4) <> ".MDB" then BaseName:= BaseName + ".MDB";
AdoEngine:= CreateOleObject("ADOX.Catalog");
AdoEngine.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+BaseName+";Jet OLEDB:Engine Type=5;");
AdoEngine.ActiveConnection.Close;
AdoEngine:= Null;
result:= true;
except
on E: Exception do DoIfError(E.Message);
end;
end;

единственное что нужно
Variant и CreateOleObject("ADOX.XXXXметодXXXX");
только может не все методы что тебе нужны в нем реализованы (срочно звони в микрософт по этому поводу :))

методы найдеш в том файле о котром я уже 2 раза говорил.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо