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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2012, 02:14   #1
Darcangel
Пользователь
 
Регистрация: 24.07.2009
Сообщений: 35
По умолчанию Создание базы

Код:
function CreateAccessDatabase(FileName: string): string;
 var
 cat: OLEVariant;
 begin
 Result := '';
 try
 cat := CreateOleObject('ADOX.Catalog');
 cat.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName +'.mdb;');
 cat := NULL;
 except
 on e: Exception do Result := e.message;
 end;
 end;


procedure TForm1.BitBtn1Click(Sender: TObject);
var
  db:WideString;
begin
  SaveDialog1.FileName:='';
  SaveDialog1.Execute;
  if SaveDialog1.FileName<>'' then
  begin
    CreateAccessDatabase(SaveDialog1.FileName);

    ADOConnection1.Connected:=False;
    ADOConnection1.ConnectionString:='';


    db:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+SaveDialog1.FileName+'.mdb;';
    ADOConnection1.ConnectionString:=db;
    ADOConnection1.Connected:=True;

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.CommaText:='CREATE TABLE L_PROPNUMBER_TOP (ID_THIS INTEGER NOT NULL, ITS_GLOBAL INTEGER, ID_SYSTEM INTEGER, NUMPP INTEGER, NAME_MAX VARCHAR(200), MNEMO_CODE VARCHAR(32), DATE_CREATE DATE, DATE_UPDATE DATE, PRIMARY KEY (ID_THIS))';
    ADOQuery1.Open;
  end;
end;
база создаётся, подключается а адоконект, пишу запрос на создание таблицы - пишет ошибка с крейт

подскажите плиз как правильно создать запрос на создание таблиц
зарание благодарен


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.01.2012 в 11:43.
Darcangel вне форума Ответить с цитированием
Старый 06.01.2012, 09:54   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В SaveDialog1.FileName разве нет расширения .mdb? Если SaveDialog1 настроить правильно, то и не нужно его везде добавлять, а то может получится нечто в виде: Base.mdb.mdb
SQL.CommaText зачем? Не пользовался этим свойством, но запятые при этом должны удалиться вроде. Достаточно SQL.Text
Цитата:
ADOQuery1.Open;
Здесь нужен метод ExecSQL вместо Open
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 06.01.2012 в 10:28.
Аватар вне форума Ответить с цитированием
Старый 06.01.2012, 11:14   #3
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Код:
function _check_databasename(DatabaseFileName : string): Boolean;
begin
  Result := false;
  if Length(Trim(DatabaseFileName)) > 0 then Result := true;
end;

function _create_databasefile(DatabaseFileName : string): Boolean;
var OLE : Variant;
begin
  try
    if not _check_databasename(DatabaseFileName) then
    begin
      _get_error(0);
      Exit;
    end;
    OLE := CreateOleObject('ADOX.Catalog');
    OLE.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DatabaseFileName + ';');
    OLE := null;
    Result := True;
  except on e: exception do
  begin
    OLE := null;
    Result := False;
    MasError('Program Error',PChar(e.ClassName + #13#10 + e.Message),'mimerror','mbuok');
  end;
  end;
end;
Ну а та часть что у меня создает объекты БД. Тебе не поможет.
В виду того что там код более хитрый.
Ну и как сказали ранее ExecSQL вместо Open.

Ну собственно сам вызов
Код:
  _sv_dlg_.DefaultExt := '.mdb';
  _sv_dlg_.Filter := 'Access File|*.mdb';
  _sv_dlg_.FilterIndex := 1;
  _sv_dlg_.Execute();
  _create_databasefile(_sv_dlg_.FileName);
_sv_dlg_ как можно догадаться это SaveDialog.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)

Последний раз редактировалось rdama; 06.01.2012 в 11:20.
rdama вне форума Ответить с цитированием
Старый 06.01.2012, 15:03   #4
Darcangel
Пользователь
 
Регистрация: 24.07.2009
Сообщений: 35
По умолчанию

огромное спасибо. Помогло))
Darcangel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы данных marat58172 Помощь студентам 1 18.03.2011 06:09
Создание Базы Xander Помощь студентам 0 30.01.2010 13:35
Создание базы L_M SQL, базы данных 1 21.05.2009 22:28
Создание 3 базы из 2-х bosston БД в Delphi 14 23.04.2009 09:28
Создание базы данных TECHNIC SQL, базы данных 5 28.07.2008 15:23