Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
11-1062881082
Vitalon
2003-09-07 00:44
2004.04.18
Как создать базу данных используя KOLEdb?


9-1066226183
kopcap
2003-10-15 17:56
2004.04.18
Система боя


14-1079969320
}|{yk
2004-03-22 18:28
2004.04.18
Вопрос по ASP


1-1081000268
silya
2004-04-03 17:51
2004.04.18
Удаление/добавление строк в StringGrid


14-1079973876
Пилкин
2004-03-22 19:44
2004.04.18
Проблема с OutlookXP





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