|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Ну, собственно закончил наверно более менее работу по внедрению БД (вместо текстовух) в приложение с сохранением так сказать имеющегося функционала. Ну, тестировать конечно еще надо... Подопытная БД была создана "ручками" в Access-2000. Не уверен, что хорошим вариантом является таскание шаблона с дистрибутивом. Т.е. думаю: 1) Инсталлятор должен создавать шаблон 2) Прога должна уметь создавать шаблон если вдруг user тупо удалил файл mdb. Ну т.е. встал вопрос: Как лучше создать mdb с таблицами программно? Поиск по google я уже типа начал, не сомневаюсь есть куча способов. Коль скоро я "присосался" к ADODB, то наверно с помощью него тоже можно. Другие методы типа DAO думаю не есть good, не люблю сборных солянок. За ссылку на хороший пример заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 22:20 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77, - Для создания MDB я например в каталоге программы имею шаблон (готовый файл), а при необходимости копирую его в каталог размещения БД. - Для создания и начальной загрузки таблиц имею текстовый файл с расширением .sql и при необходимости его выполняю. - Так же (через текстовый файл, который доставляется клиентам по e-mail) организовано обновление структуры таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 22:33 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
bac- Для создания MDB я например в каталоге программы имею шаблон (готовый файл), а при необходимости копирую его в каталог размещения БД. Не ну это как то по-детски, так не хочу. Не, ну у вас БД может сама "взрослая". У меня БД "детская"-4 таблицы и никаких связей. Собственно весь код по "созданию". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
http://www.vb-helper.com/howto_adox_build_db.html Там и про таблицы дальше есть... Вот чего-то...ADOX... че за X новая либа, блин... Через ADODB никак нельзя? Кстати, как все-таки правильнее: Код: plaintext
Код: plaintext
И так и так работает. Про variant я понял, это дважды объяснять не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 22:46 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Через ADODB никак нельзя? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 22:50 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Antonariy, не ну table то ладно, а саму db execute создать может? (по здравой логике нет, ибо connection подключается к существующей уже БД) Потому как если ADOX код выше это единственный способ через "ADO", то таблицы можно через него же налепить, чего уж там. Будет DB, будут и таблицы... Опасения не праздные, так как X это доп. LIB, а к чему это может привести ясно из моего предыдущего топика с JRO (но там видимо нет другого выхода). А увеличивать шансы что что-то сглючит и разбирать подобные глюки удовольствие как понимаете ниже среднего, посему лучше потрепаться в начале пути, чем спасаться после недели скажем трудов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:04 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77, Через DAO можно создать. Эта штука предшественник ADO и RDO и уж точно на всех компах есть, как и ADO ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:34 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Shocker.Pro, ADOConnection1->Execute("CREATE TABLE "+ListBox1->Items->Strings[ListBox1->ItemIndex], cmdText, TExecuteOptions()); ADOConnection1->Execute("DROP TABLE "+ListBox1->Items->Strings[ListBox1->ItemIndex], cmdText, TExecuteOptions()); ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:39 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Shocker.ProДмитрий77, Через DAO можно создать. Эта штука предшественник ADO и RDO и уж точно на всех компах есть, как и ADO уже не совсем так (( http://www.sql.ru/forum/actualthread.aspx?tid=761751&hl=dao+vbs#8837580 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:49 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
GarfishShocker.Pro, ADOConnection1->Execute("CREATE TABLE "+ListBox1->Items->Strings[ListBox1->ItemIndex], cmdText, TExecuteOptions()); ADOConnection1->Execute("DROP TABLE "+ListBox1->Items->Strings[ListBox1->ItemIndex], cmdText, TExecuteOptions()); это мне зачем? Вопрос автора был про создание файла базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:57 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
ёуже не совсем так (( http://www.sql.ru/forum/actualthread.aspx?tid=761751&hl=dao+vbs#8837580 бьюсь головой о стену ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 23:58 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Shocker.Pro, >Через DAO можно создать Сказал же, не хочу сборных солянок. Garfish, не понял. Это видимо про таблицы. Не, ну ладно, если через ADO это через ADOX, пусть будет так допустим... Пошли создавать thetable. Код: plaintext 1. 2. 3. 4.
Формат поля=Полный формат даты Обязательное поле = нет Индексированное поле=нет Код: plaintext 1. 2.
Но хочу: Обязательное поле = нет Пустые строки=Да Индексированное поле=нет Сжатие Юникод=нет ADOX это умеет все прописать? С ходу не нашел. Сжатие Юникод - это вообще что? С чем кушать? Оно все-таки да или нет должно быть? Уже спрашивал, никто не ответил. >Через DAO можно создать. >уже не совсем так (( ADOX на голой Win7-x64 есть и работает -только что проверил. (С ADODB тоже впрочем проблем не накопал...) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 00:03 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77ADOX на голой Win7-x64 есть и работает -только что проверил. (С ADODB тоже впрочем проблем не накопал...) ото была бы "кумэдия", если бы ADOX - работал, а ADODB - "не совсем" Дмитрий77Хочу: нате ! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 00:09 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
ёДмитрий77Хочу: нате ! Догадка про Код: plaintext
Но в вашем примере (пока беглый просмотр) кажется не все что мне нужно. Где б взять полное описание ("blablabla")? А за наводку спасибо. Думаю я уже таки на верном пути. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 00:26 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Antonariy, не ну table то ладно, а саму db execute создать может? (по здравой логике нет, ибо connection подключается к существующей уже БД)Что мешает пустую базу засунуть в ресурсы exe и извлекать по необходимости? Надеюсь, что незнание забывчивость, а не религия или склонность к групповому сексу с кучей разных библиотек. Создание базы программно было бы целиком обосновано в том единственном случае, когда из-за пустой базы дистрибутив не помещается на дискету. Но это уже не актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 01:08 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
AntonariyЧто мешает пустую базу засунуть в ресурсы exe и извлекать по необходимости? Так бы я делать не стал. Есть еще антивирусы которые насколько у меня есть опыт очень неравнодушны ко всяким сомнительным "ресурсам". Я не думаю, что ADOX будет доп.проблемой если уж я подписался на ADODB. Счас немного застрял на свойствах столбцов. Конкретно: Код: plaintext 1. 2. 3. 4. 5. 6.
Как на "английськом" нарисовать? Дмитрий77Где б взять полное описание ("blablabla")? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 01:26 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
AntonariyЧто мешает пустую базу засунуть в ресурсы exe и извлекать по необходимости? И если на то пошло хочется эту БД сделать средствами ADO а не средствами Access. Кто его знает чего этот русский Access-2000 туда подмешивает... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 01:30 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Так бы я делать не стал. Есть еще антивирусы которые насколько у меня есть опыт очень неравнодушны ко всяким сомнительным "ресурсам".Ерунда. Структура базы далека от структуры исполняемого файла, а манипуляции с ресурсами происходят в операционке повсеместно. Кто его знает чего этот русский Access-2000 туда подмешивает...Еще большая ерунда. Сон разума рождает чудовищ. © ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 01:51 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Antonariy, AntonariyТак бы я делать не стал. Есть еще антивирусы которые насколько у меня есть опыт очень неравнодушны ко всяким сомнительным "ресурсам".Ерунда. Структура базы далека от структуры исполняемого файла, а манипуляции с ресурсами происходят в операционке повсеместно. Блин, сорри за ругань... jpeg обычный в ресурсы засунуть невозможно, авира на любой vb-custom ресурс ругается, даже проверять не хочу. вот порой такие сложные коды советуете, шо шерсть дыбом, а я вам отвечаю: а давайте лучше Shell ("какая-то прога я тут нашел") и еже с ними, с API и вашими классами, ета вот системная утилита от Microsoft© делает через cmd то же самое и в 100 раз надежней чем ваша простыня кода... а здесь началось: засунь базу в резервный фолдер, в ресурсы, в zip, в rar... Я не понимаю, что тут плохого если я простенькую базу создам программно? По делу. Дмитрий77.Properties("Формат Поля").Value = "Полный формат даты" Это сжевал: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 02:08 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
В смысле Код: plaintext
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 02:13 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 02:18 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Код: plaintext
Код: plaintext
Игорь Горбонос, спасибо, пойду изучать, надеюсь это поможет убить оставшихся двух зайцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 02:28 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Игорь Горбонос, Код: plaintext
Код: plaintext
Вот этого я там не нашел: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 02:43 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77Вот этого я там не нашел: Код: plaintext
Чего-то нигде не могу найти. М.б. это как раз прибамбас Access (отображение в таблице Access) и его можно не устанавливать (невозможно установить и лишено физического смысла)? По крайней мере если через Access установить "краткий формат даты" то данные про время никуда не деваются и в проге отображаются корректно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 03:21 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Дмитрий77, Да, это прибамбас аксесса, так же как и ширина столбца при отображении таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 13:03 |
|
Создать БД *.mdb и вставить туда таблицу(ы) программно.
|
|||
---|---|---|---|
#18+
Shocker.ProДа, это прибамбас аксесса, так же как и ширина столбца при отображении таблицы. А ну тогда я все сделал. Нудновато получилось, но ничего особо сложного. AntonariyКто его знает чего этот русский Access-2000 туда подмешивает...Еще большая ерунда. Сон разума рождает чудовищ. © Ерунда не-ерунда, но ведь "подмешивает" как выяснили. Зачем мне все эти лишние форматирования в базе? Вот еще вопрос по сути. В инсталлятор я допустим проверку/воссоздание БД влеплю куда-нибудь без проблем. Далее у меня есть 2 проги (exe), кот. с базой работают. 1) "надсмотрщик" 2) "User Interface" При старте каждой из них хотелось бы(разумно бы) добавить процедуру Код: plaintext 1. 2. 3.
Не создаст ли это потенциальной опасности "переклинивания"? Событие 1 :Одновременно обнаружили БД и одновременно попытались ее создать, одна из них понятно ругнется на то что БД уже есть в момент создания... В принципе вероятность того что: Событие 1: запустились одновременно с точностью до не знаю уж каких мс Событие 2: БД куда-то стибрили и ее нету крайне низка как по отдельности, а тем более выполнение обоих условий... Но тем не менее... ============= Более сложный вопрос с процедурой "Сжатие и восстановление БД" Пока не выяснял каким кодом это реализую, но по опыту знаю что в случае mdb это надо. Т.е. думаю как это "сжатие" авто-реализовать (в какой модуль засунуть) и делать ли каждый раз при старте модуля или часто не стоит. Проблема еще в том, что при запуске одного из модулей второй может быть запущен (они независимы), и тогда база ругнется на предложение ее сжать. (другой клиент к ней подключен). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2011, 16:59 |
|
|
start [/forum/topic.php?fid=60&msg=37098856&tid=2158986]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 152ms |
0 / 0 |