Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.02.2016, 16:24
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию Создать файл базы данных MS-Access

Требуется по мере перехода из месяц в месяц содавать новый файл базы данных Access MS-Jet4.0.
Внутри базы создать таблицу не сложно, а вот сам файл???
Вышел из положения пока так:
Создал сначала базу с таблицей пустой, удалил таблицу, остался "скелет".
Этот скелет переименовал, и этот "скелет" копирую с переименованием - типо создаю новую базу при этом только вставляю туда нужные таблицы ))))
Но это как-то не правильно.... В случае потери этого образца то всё встаёт...
Делфи 6, Access 2003.MS-Jet4.0.
Подскажите ))
Ответить с цитированием
  #2  
Старый 02.02.2016, 19:27
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

Код:
program Project8;

{$APPTYPE CONSOLE}

uses
  SysUtils, Variants, ComObj, ActiveX;

Const
  adKeyPrimary = 1;
  adKeyForeign = 2;
  adKeyUnique = 3;

  adInteger = 3;
  adDate = 7;
  adVarWChar = 202;

Var
  Mdb,Tbl,Idx: Variant;
begin
 Coinitialize(nil);
 Mdb := CreateOleObject('ADOX.Catalog');
 Mdb.Create(Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s',['g:\1\DB1.mdb']));
 Tbl := CreateOleObject('ADOX.Table');
 Tbl.Name := 'Table1';
 Tbl.ParentCatalog := Mdb;
 Tbl.Columns.Append('intField', adInteger);
 Tbl.Columns.Append('txtField', adVarWChar, 50);
 Tbl.Columns.Append('dateField', adDate);
 Mdb.Tables.Append(Tbl);

 Idx := CreateOleObject('ADOX.Key');
 Idx.Name := 'PrimaryKey';
 Idx.Type := adKeyPrimary;
 Idx.Columns.Append('intField');
 Mdb.Tables[Tbl.Name].Keys.Append(Idx);
 Idx := Unassigned;
 Tbl := Unassigned;
 Mdb := Unassigned;
 CoUninitialize;
end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 04.02.2016, 17:01
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

Спасибо, но у Вас используется доп. библиотека ADOX, у меня её нет, и нет желания нагружать стандартную установку Delphi, так как большинство задач могут решаться стандартными библиотеками, которые есть всегда и не запутаешся в их версиях и совместимостях.
И ещё вопрос к этому - файл большой - порядка 3.2Мб, даже пустой - его можно сжать? или использовать другой тип Provider_a???
Задача очень простая, хранить таблицу с число-символьными записями и чтобы открывалась и редактировалась/искалась/выбиралась стандартным Access_ом.?
Ответить с цитированием
  #4  
Старый 04.02.2016, 17:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

AdoX - это расширение технологии Ado, которая интегрирована в Windows еще кажется с Windows 95, так что должно работать на любом из современных компьютеров, даже без установленного Ms Offiice.
Что касается другого хранилища, то вполне можно хранить в xml,txt,xls и т.д. Все эти форматы поддерживаются Акцесом и вы можете не импортировать их в акцес, а сделать на них ссылку из Акцеса. Обращатся к этим данным средствами Акцес можно как и к обычной таблице, но это несколько странная цепочка получается Дельфи - Адо - Акцес - Адо - Таблица. Проще исключить из этой цепочки Акцес - Адо и обращатся сразу средствами Адо к любому из этих форматов. Просто меняется немного строка подключения в Дельфи и вы получаете прямой доступ к таблице.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 04.02.2016 в 17:29.
Ответить с цитированием
  #5  
Старый 08.02.2016, 14:51
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

ADOX нет во вкладках DELPHI6 Entrprise ((((
Access нужен как стандарт ДЕ-ФАКТО, в котором можно сделать ВСЁ и со ВСЕМ. С другими форматами сложно делать выборку/сортировку/фильтрацию.
Программа нужна лишь для обработки файла данных самописца с записью их в MDB, подготовки отчета с графиком.
База нужна только для архивации данных техпроцесса, в принципе XML рассматривал, но не умею его "делать", да и как его потом использовать.. ??
Ответить с цитированием
  #6  
Старый 08.02.2016, 19:24
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

А Оле,Jpg,Png вы видите во вкладках? Существует туча невизуальных компонентов и библиотек, которых нет и никогда не будет во вкладках. предложенный мной вариант, это не сторонняя библиотека, а все тот-же Adо, просто в визульную часть по какой-то причине не стали выносить эти функции.
XML - формат интересный, с очень большими возможностями, но не компактный, ибо хранит все данные в текстовом представлении. К тому-же скорость работы с ним будет падать пропорционально объему данных. В общем не для всех задач его можно использовать.
Мне вообще несколько непонятно, почему не оставить что-то одно. Либо Дельфи, либо Акцес. Такой смешанный мутант выглядит как незаконченный проект.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 10.02.2016, 17:41
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

Спасибо что обратили внимание на меня))
Дело в том, Access не обязательно будет использоваться, а вот проверять входные данные с самописца, строить графики и отчёт - тут уж только своя прога...
Переходить на базу данных BDE или ещё что.. даже не знаю.
Но выкрутился поговорив с технологами - пишем не каждый день а месяц, теперь и файлов меньше и объём... только таблиц в базе 30 а не 1...
Но вопрос всёравно открыт, и хотелось бы его решить..
Вы говорите что ADOX есть? значит простопишу и должно работать?? попробую... но чёто сомневаюсь...
Ответить с цитированием
  #8  
Старый 17.02.2016, 15:32
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

Что-то никак не пойму как вытащить ADOX в проект... где этот компанент лежит.... или лыжи не едут или я ..

Хотя проект уже отдан в эксплуатацию , все довольны, но хотелось бы знать... ))) может не вижу очевидного....
Ответить с цитированием
  #9  
Старый 17.02.2016, 21:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

Цитата:
Хотя проект уже отдан в эксплуатацию , все довольны, но хотелось бы знать... ))) может не вижу очевидного....
Это просто уличная магия
Ну а если серьезно, то он является составной частью Windows и его нет необходимости отдельно устанавливать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 17.02.2016 в 21:16.
Ответить с цитированием
  #10  
Старый 28.02.2016, 05:35
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 65
Репутация: 518
По умолчанию

Ткните "мордой"... ну честно не знаю как подключить.. писал ADOX в uses и просто вставлял код, не понимает делфи это всё... )))) по хелпу встроенному в D6 прошёл поиском - не находит ни слова про ADOX. Есть только ADOExpress...
Ответить с цитированием
  #11  
Старый 28.02.2016, 12:58
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,714
Репутация: 52347
По умолчанию

Вы хотите сказать, что если вы создадите консольный проект и поместите туда код который я дал выше, то у вас он не работает?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter