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

Вниз

ADO и ACCESS2000   Найти похожие ветки 

 
Stas   (2002-12-24 09:21) [0]

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


 
LordOfSilence   (2002-12-24 09:39) [1]

Кажись, примерно так:

var Ado: Variant;

Ado := CreateOleObject("ADOX.Catalog");
Ado.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+PathToBase+"\BaseItSelf.Mdb;Jet OLEDB:Engine Type=5;");
Ado.ActiveConnection.Close;
Ado:= Null;


 
Stas   (2002-12-24 09:49) [2]

Это будет создана новая база или таблица в существующей базе ?
Вообще база уже имеется нужно просто программно добавить в существующую базу заданную таблицу.
Спасибо.


 
LordOfSilence   (2002-12-24 09:58) [3]

Извиняюсь, вчера с другом на двоих переусердствовали.
Да это создание базы, я неправильно вопрос прочитал...
Как насчет запросов Create Table?


 
Stas   (2002-12-24 17:06) [4]

Да можно и Create Table, но какой там синтаксис ?


 
sniknik   (2002-12-24 17:11) [5]

JETSQL40.CHM поищи у себя на машине.


 
Jura   (2002-12-29 00:19) [6]

Я создал две таблицы в Access c помощью Ado, используя компонент ADOConnection и ADOCommand. Если хочешь пришлю текст программы. Пришли ответ.

Народ кто что-нибудь знает о ADOX. пришлите чтонибудь. Мне надо вывести на форму (програмно) таблицы из Access. В Delphi я их уже описал, только надо вывести на форму. Кто знает Please Help!!!!!


 
sniknik   (2002-12-29 01:39) [7]

2 Jura (29.12.02 00:19)
рядом с JETSQL40.CHM файл ADO210.CHM это на 1/3 хелп по ADOX. Иши на машине с установленным офисом 2000 или старше. (полным с хелпами)

по остальному конкретнее чего не получается? и лутше в свою ветку.


 
Jura   (2003-01-02 22:23) [8]

народ а кто нибудь вообще знает как вывести таблицы из access на форму. Заранее благодарен за ответ.


 
sniknik   (2003-01-03 00:00) [9]

все знают. (кроме тебя похоже :-))

ничем не отличается от вывода из MSSQL,... etc.

пробуй.


 
Jura   (2003-01-06 17:15) [10]

> Sniknik
Спасибо за ответ. Получилось :)) Теперь новая проблема надо критнуть таблицы в Access через ADOX. Как саму базу критнуть я знаю но как таблицы если там я делал так тот как там
var
DataSource,cs:String;
Begin
DataSource:=
"provider=Microsoft.Jet.Oledb.4.0"+
";Data Source=c:\Base.mdb"+
";Persist Security Info=False";

ADOConnection1.ConnectionString:=DataSource;
AdoConnection1.LoginPromt:=False;
AdoCommand1.Connection:=AdoConnection1;
.....
cs:=Create Table TableName("+
"Field1 Text(20)";
AdoCommand1.CommandText:=cs;
AdoCommand1.Execute;
end.

С ADO это было примерно так. Но люди добрые помогите сделать ето через ADOX.(какие компоненты для этого необходимы?).

>Sniknik
Ты можеш прикалыватся, но я в этом деле как говорите вы чайник, но надо эту прогу написать. Надо как воздух. Если надыбаеш информации об ADOX пришли на майл.

>All
Заранее благодарен за ответ!


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

а я и не прикалывался, надо так надо, 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 раза говорил.


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

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


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

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;


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

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

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


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

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


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

>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 компонентов.
Так что народ вот такая проблема. Прошу подключиться в её решение.


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

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


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

Ну да теперь знаеш то что тебе на этой ветке 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:23) [19]

В том то и все дела что этого 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:29) [20]

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


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

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


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

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


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

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


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

Технологию? Учиш Бейсик (немного, достаточно синтаксиса и типов 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 15:40) [25]

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


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


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

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


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

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


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

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

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

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

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

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



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

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


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

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

Удачи.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.031 c
14-87124
Оливейра
2003-01-09 20:54
2003.01.27
Как же конструируется и инициализируется объект в Object Pascal


3-86678
mate
2003-01-08 13:53
2003.01.27
Очень нужна помощь


1-86915
CPPBuilderDev
2003-01-16 14:52
2003.01.27
Коллеги, помогите разобраться с TOle


1-86961
DDS
2003-01-13 09:36
2003.01.27
Cоздаю компонент. Как сделать так чтобы при изменении любого prop


7-87154
Дима
2002-11-14 19:56
2003.01.27
Подключение к USB порту





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский