Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2008, 04:44   #1
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию создание файла базы

А как можно создать програмно фаил базы данный Access? с таблицей все как положенно: стобец-формат.

P.S. У меня есть програмка, так не знаю как реализовать такое и сделал просто: если файла базы нет, то уведомить и заблокировать управление.
Черничный вне форума Ответить с цитированием
Старый 25.06.2008, 06:29   #2
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Это уже было здесь
edgy вне форума Ответить с цитированием
Старый 25.06.2008, 06:31   #3
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

там только создание самого файла, а про создание таблиц стандартынми sql запросами я вообще не знаю
Черничный вне форума Ответить с цитированием
Старый 25.06.2008, 07:09   #4
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Ну тогда давайте для примера создадим таблицу "Person" с тремя столбцами.
1) Сперва создаете саму БД. Пример я уже привел.
2) Настраиваете свойство ConnectionString у компонента ADOConnection.
3) А теперь создадим саму таблицу:
Код:
  try
    ADOCommand1.Connection := ADOConnection1;
    ADOCommand1.CommandType := cmdText;
ADOCommand1.CommandText := 'CREATE TABLE Person (First_Name ' +        
    ' TEXT(20), Last_Name TEXT(25), birthday DATETIME )';
    ADOCommand1.Execute;
  except on E:Exception do
    begin
      ....
    end;
  end;
Таким образом мы создали таблицу Person с тремя полями с помощью SQL-запроса.
edgy вне форума Ответить с цитированием
Старый 25.06.2008, 07:14   #5
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Полный синтаксис DDL - выражения для конструкции CREATE TABLE выглядит так:

Код:
CREATE [TEMPORARY] TABLE таблица (поле1 тип [(размер)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [индекс1] [, поле2 тип [(размер)] [NOT NULL] [индекс2] [, ...]] [, CONSTRAINT индекс_нескольких_полей [, ...]])
Подробнее смотрите в справочнике по SQL, ну или здесь
edgy вне форума Ответить с цитированием
Старый 25.06.2008, 17:11   #6
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

edgy, а ADOCONECTION уже жолжен быть натсроен?
Черничный вне форума Ответить с цитированием
Старый 25.06.2008, 18:06   #7
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Не обязательно. Его можно настроить и в рантайм. Т.е. сперва создаем БД. Затем в свойстве ConnectionString компонента ADOConnection программно прописываем строку:

'Provider=Microsoft.Jet.OLEDB.4.0;U ser ID=Admin;Data Source=E:\Base.Mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'

Т.е. сам код будет выглядеть так:
Код:
 ADOConnection1.Close;
 ADOConnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0; ' 
      + ' User ID=Admin;Data Source=E:\Base.Mdb;Mode=Share Deny None; ' +
         ' Extended Properties="";Jet OLEDB:System database=""; ' +
         ' Jet OLEDB:Registry Path=""; Jet OLEDB:Database Password=""; ' +
         ' Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1; ' +
         ' Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB: ' +
         ' Global Bulk Transactions=1;Jet OLEDB: ' +
         ' New Database Password="";Jet OLEDB: ' + 
         ' Create System Database=False; Jet OLEDB: ' +
         ' Encrypt Database=False;Jet OLEDB:Don' + #39 + 
         't Copy Locale on Compact=False; ' +
         ' Jet OLEDB:Compact Without Replica Repair=False; ' +
         ' Jet OLEDB:SFP=False';
 ADOConnection1.LoginPrompt := false;
 ADOConnection1.Open;
Если с кавычками не напутал, то все это будет работать

Вместо прямой подстановки "E:\Base.Mdb" в строке путь можно считывать, например из Edit.

Ну а далее, создаем программно таблицу. Как это сделать - вы уже знаете.
edgy вне форума Ответить с цитированием
Старый 30.06.2008, 03:21   #8
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

а что значит он при выполнении кода выдает сообщение "невозможно найти устанавливаемый ISAM"
Черничный вне форума Ответить с цитированием
Старый 30.06.2008, 07:23   #9
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Вариант 1: Строку подключения я разбил на несколько строк, и в начале и конце каждой строки у меня стоят пробелы. Попробуйте удалить их. Вполне возможно, что не совсем корректно разпознается строка подключения. Если не поможет, то переходим к варианту 2.
Вариант 2: Обратите внимание на следующую строчку строчку: 'Provider=Microsoft.Jet.OLEDB.4.0;'
Вполне возможно, что у вас другая версия OLE DB provider и т.п.
Вообщем, по-быстрому все это можно решить так: Попробуйте не программно, а в design-time вручную настроить ADOConnection. Подключитесь к какой-нибудь БД. Посмотрите на строку подключения, которая сформировалась в ConnectionString. При желании можете скопировать ее и подставлять в runtime вместо той, которую привел я.
edgy вне форума Ответить с цитированием
Старый 30.06.2008, 09:09   #10
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

если просто скопировать то будет писать что не найдена. У меня в другой рабтающей программе Microsoft.Jet.OLEDB.4.0. Убрав пробелы вместо ISAM то же начинает писать фаил не найден

Последний раз редактировалось Черничный; 30.06.2008 в 09:17.
Черничный вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы в MS SQL Server 2005 badfilin SQL, базы данных 2 27.02.2009 07:50
Создание базы данных TECHNIC SQL, базы данных 5 28.07.2008 15:23
создание файла базы програмным методом Doget БД в Delphi 3 20.06.2008 17:31
Создание базы данных: проблема Камикадзе Помощь студентам 5 25.10.2007 19:40
Создание базы данных emfw БД в Delphi 5 04.03.2007 02:46