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

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

Новая база [D7, MSSQL]


WhiteCat ©   (2006-07-22 21:53:00) 

Здравствуйте!
Подскажите, пожалуйста, как создать новую Access базу с несколькими таблицами из программы?


Barsky   (2006-07-24 12:58:00) [1]

Когда-то мне ответили на данный вопрос так:

Если таблицы не создавать, т.е. пустую базу и для русского языка, то можно так:

uses Dialogs, ComObj, ActiveX;
function CreateDatabase(DatabaseName: string): boolean;
var
DBEngine, Workspace: Variant;
const
dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0';
dbLangCyrillic = ';LANGID=0x0419;CP=1251;COUNTRY=0';
dbVersion20 = 32;
dbVersion30 = 64;
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,
      dbLangCyrillic + ';CollatingOrder=1049',
      dbVersion30);
    result := true;
  except on e0: EOleException do
      ShowMessage(e0.Message);
  end;
except on e1: EOleException do
    ShowMessage(e1.Message);
end;
end;

begin
CoInitialize(nil);
if CreateDatabase('Base777') then ShowMessage('OK')
else ShowMessage('Error')
end.


WhiteCat   (2006-07-23 22:17:00) [2]

to Anatoly
Ok! Подскажите как мне создать базу(как файл *.mdb) из Delphi и приконектится к ней. Создание таблиц я так понимаю через ADOCommand отработает.


Anatoly Podgoretsky   (2006-07-23 11:56:00) [3]

WhiteCat   (22.07.06 21:53)  
Это два разных вопроса - создание базы и создание таблиц
первое CREATE DATABASE
второе CREATE TABLE


Anatoly Podgoretsky   (2006-07-23 11:55:00) [4]

Fay ©   (23.07.06 09:15) [5]
А хрен его знает.


Fay   (2006-07-23 09:15:00) [5]

А каким боком тут MSSQL ?


Palladin   (2006-07-22 23:47:00) [6]


> Что тоже в теории очень мало вероятно. :)

Извиняюсь, на практике очень мало вероятно...


Palladin   (2006-07-22 23:44:00) [7]

Не сказать что не правильно, но хитро это точно. Главное - вполне рабочий способ. В теории, способ сломается тогда, когда полностью пропадет обратная совместимость Jet, установленной на клиенте и с которой создана изначальная БД. Что тоже в теории очень мало вероятно. :)


WhiteCat   (2006-07-22 23:20:00) [8]

Другой вопрос:
правильно ли будет:
если я создам пустую базу в Access, буду ее копировать в новый файл и подключаться к ней?


DiamondShark   (2006-07-22 22:28:00) [9]

Импортировать библиотеку типов DAO, называется она как-то вроде
Microsoft DAO X.X Object Library

потом что-то вроде такого:

var
  eng: DBEngine;
  db: Database;
  td: TableDef;
  f: Field;
begin
  eng := CoDBEngine.Create();
  db := eng.CreateDatabase('c:\mydb.mdb', ';LANGID=0x0419;CP=1251;COUNTRY=0', dbVersion30);
  td := db.CreateTableDef('MyTable', EmptyParam, EmptyParam, EmptyParam);
  f := td.CreateField('Id', dbLong, 4);
  td.Fields.Append(f);
  f := td.CreateField('Name', dbText, 50);
  td.Fields.Append(f);
  db.TableDefs.Append(td);
  db.Close();
end;


Наверх

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