Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизСоздание базы данных Access средствами DAO Найти похожие ветки
← →
Lony © (2004-03-17 13:28) [0]Почему при создании базы данных Access это функцией создаётся база данных Access версии 95?
function CreateDatabase(DatabaseName:String):boolean;
var
DBEngine, Workspace: Variant;
const
dbLangGeneral = ";LANGID=0x0409;CP=1252;COUNTRY=0";
dbVersion30 = 32;
begin
result:=false;
try
try
DBEngine := CreateOleObject("DAO.DBEngine.36");
except
try {For DAO 3.5}
DBEngine := CreateOleObject("DAO.DBEngine.35");
except
raise;
end;
end;
Workspace := DBEngine.Workspaces[0];
try
Workspace.CreateDatabase(DatabaseName, dbLangGeneral, dbVersion30);
except on e0:EOleException do
ShowMessage(e0.Message);
end;
except on e1:EOleException do
ShowMessage(e1.Message);
end;
result:=true;
end
← →
sniknik © (2004-03-17 13:44) [1]dbVersion30 - (Default и максимальное заодно, по моему хелпу) Creates a database that uses the Microsoft Jet database engine version 3.0 file format (compatible with version 3.5).
для справки версия jet уже давно 4.0.
хотя можеш попробовать dbVersion40 = $00000040; (по импортируемой dll) по идее в DAO.36 создаст для 97.
← →
kaif © (2004-03-17 13:54) [2]А ты попробуй средствами ADOX создать базу Access. Я попробовал - у меня работает. Для этого нужно импортировать в ActiveX библиотеку ADOX, а затем воспользоваться методами ADOX.
что-то вроде:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ADODB, ADOX_TLB, Menus, StdCtrls, ComCtrls;
.......
.......
var
ACatalog: Catalog;
DS: string;
procedure TForm1.Button1Click(Sender: TObject);
const
BaseName = "С:\mydemo.mdb";
begin
DS :=
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+BaseName;
// Создать экземпляр объекта ADOX Catalog
ACatalog := CoCatalog.Create;
// Если база данных существует, удалим ее
If FileExists(BaseName) Then DeleteFile(BaseName);
// Создадим новый MDB-файл
ACatalog.Create(DS);
....
end;
Если установлен Office, то устанавливается и библиотека ADOX, позволяющая, в отличие от ADO, работать и с метаданными тоже (создавать базы, просматривать структуры таблиц и т.д.).
Где-то в WWW есть примеры использования ADOX. Поищи.
← →
Lony © (2004-03-17 20:51) [3]А как импортировать в ActiveX библиотеку ADOX?
← →
BAYES © (2004-03-17 23:28) [4]Очень просто.
1.Select Project | Import Type Library
2Выберите "Microsoft ADO Ext 2.x for DDL and Security (Version 2.x)"
3.Измените "TTable" на "TADOXTable"
4.Измените "TColumn" на "TADOXColumn"
5.Измените "TIndex" на "TADOXIndex"
6.Нажмите кнопку Install (перекомпиляция пакетов (packages))
7.Нажмите один раз OK и дважды Yes
8.File | Close All | Yes
← →
kaif © (2004-03-17 23:47) [5]2 BAYES © (17.03.04 23:28) [4]
Кстати, у меня с этими заменами ("TTable" на "TADOXTable") что-то не очень получилось. Назначать новые имена классов надо в интерфейсе импорта ActiveX или потом как-то в другом интерфейсе или даже прямо в получившемся модуле ADOX_TLB.pas ? Можно чуть детальнее этот момент? Я прямо при импорте сказал переименовать - у меня все осталось, как есть:
Table = _Table;
Column = _Column;
Index = _Index;
Key = _Key;
Group = _Group;
User = _User;
Catalog = _Catalog;
:((
← →
BAYES © (2004-03-18 00:06) [6]kaif © (17.03.04 23:47) [5]
У меня все ОК! Прошло и работает. Ты кстате вот по этой ссылке не подскажешь, да и Lony, тоже может пригодиться.
http://delphimaster.net/view/3-1079272168/
← →
kaif © (2004-03-18 01:15) [7]2 BAYES © (18.03.04 00:06) [6]
Знаешь, я честно говоря практически никогда не работал с Access. Первое в жизни, что я с ним сделал - это создал базу данных через ADOX. Именно с этого и начал, чтобы убедиться, что имеет смысл этим заниматься вообще. Надеюсь в дальнейшем поработать с Access.
У меня есть версия происходящего. Где ты видишь опцию заполнять "случайным значением"? Если в каком-то интерфейсе управления базой данных, например внутри самой оболочки Access, то вполне возможно, что это вообще не имеет отношения к метаданным *.mdb-файла, а есть фишка самого access-приложения, которое и генерит эти "случайные значения". Но это только версия. Возможно я и не прав и есть такое свойство поля. Но тогда в документации его можно будет найти, поискав слова
random, rnd и им подобные. Может и есть что-то подобное в свойствах полей? Я не знаю...
← →
V-A-V © (2004-03-18 07:38) [8]Че вы голову ломаете с ADOX.
Скачай и установи свежую версию Jet движка
http://www.vdovin-av.narod.ru/Download/Jet40SP7_9xNT.exe
и при помощи стандартных дельфийных компонентов и справки по MsAccess создается база и все прибамбасы в ней...
← →
Lony © (2004-03-18 19:09) [9]А создавать базу данных программно с помощью функции, которую я указал в самом начале темы?
← →
Lony © (2004-03-18 19:13) [10]Можно как-нибудь ещё программно создать БД Access?
← →
sniknik © (2004-03-18 20:16) [11]у тебя есть 2 способа, нафига еще третий? (хотя наверняка есть, кроме координально отличающихся способов еще и куча оберток того же ADOX/DAO)
скажи чем не нравится каждый, и я скажу в чем ты не прав. ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.043 c