0 / 0 / 2
Регистрация: 14.05.2012
Сообщений: 28

База данных в "Мои Документы"

14.10.2012, 23:35. Показов 1469. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть трабл в задаче.
Суть такова:

При запуске программы проверить есть ли файл БД(*.mdb) в папке "Мои Документы"/"UserDB", если такового нету - создать DefaultDB.mbd, со всего лишь одной таблицей "DefaultTable" (key, data).

Порядок действий таковой:
1. Проверить наличие папки "UserDB" в "Мои документы". Если нету - создать и папку и файл соответственно!

2. Если же папка есть проверить наличие файлов БД(*.mdb). если отсутствуют - создать DefaultDB.mbd, со всего лишь одной таблицей "DefaultTable"(key, data).

3. Если файлы есть проверить проверить соответствует ли БД нужной в программе.
3.1. Есть ли три таблицы Input(date, sum, comment); Output(date,sum,commnet), Details(date,sum); если ни одной из них нет, предложить преобразовать файл БД в требуемый и по согласию удалить все имеющиеся там таблицы и создать три те которые нужно. (тот же вариант если есть только некоторые из этих двух таблиц.)

Использовать необходимо ADO.

Прошу помочь кто чем может. Ссылками, кусками кода, простым объяснением почему я идиотъ и т.д.

P.S. Предусмотреть вариант того что используемая ОС может быть Win 98, Win XP, Win 7, (x32, x64). (заранее неизвестно!)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2012, 23:35
Ответы с готовыми решениями:

Мои документы
У меня возникает проблема с открытием файла который хранится в Моих документах обращение к моим документам происходит в таком вот виде ...

Мои документы
Добрый вечер! Как мне в Label1 возвести адрес к папке мои документы?

Пропали все документы из корня папки "Мои документы"
Здравствуйте! Возникла указанная в теме проблема. В инете нашла ссылку на данный форум , на похожую тему, перешла по ссылке в ней в Правила...

12
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.10.2012, 09:30
Цитата Сообщение от deadstrike Посмотреть сообщение
1. Проверить наличие папки "UserDB" в "Мои документы". Если нету - создать и папку и файл соответственно!
C++
1
 FileExist()

Цитата Сообщение от deadstrike Посмотреть сообщение
2. Если же папка есть проверить наличие файлов БД(*.mdb). если отсутствуют - создать DefaultDB.mbd, со всего лишь одной таблицей "DefaultTable"(key, data).
SQL
1
CREATE TABLE


Сделай первых 2 пункта, а 3 пункт потом я подскажу
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
15.10.2012, 16:40
Sasha, можно поинтересоваться каким образом команда
SQL
1
CREATE TABLE
делает вот это:
Цитата Сообщение от deadstrike Посмотреть сообщение
2. ... создать DefaultDB.mbd
?
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.10.2012, 16:57
Цитата Сообщение от The_Immortal Посмотреть сообщение
Sasha, можно поинтересоваться каким образом команда
делает вот это:

?
Упс затупил конечно не этой командой эта команда для создания таблицы/
Cоздать базу вот Какую БД выбрать?
2
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
15.10.2012, 17:05
deadstrike,

Цитата Сообщение от deadstrike Посмотреть сообщение
создать DefaultDB.mbd
Еще как вариант использовать специализированный класс: TAccessApplication.

C++
1
2
3
4
5
    String dbFile = "c:\\DefaultDB.mdb";
 
    AccessApplication1->Connect();
    AccessApplication1->NewCurrentDatabase(dbFile.c_str());
    AccessApplication1->Disconnect();
1
0 / 0 / 2
Регистрация: 14.05.2012
Сообщений: 28
15.10.2012, 17:23  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение

C++
1
2
3
4
5
    String dbFile = "c:\\DefaultDB.mdb";
 
    AccessApplication1->Connect();
    AccessApplication1->NewCurrentDatabase(dbFile.c_str());
    AccessApplication1->Disconnect();
Цитата Сообщение от Sasha Посмотреть сообщение
Упс затупил конечно не этой командой эта команда для создания таблицы/
Cоздать базу вот Какую БД выбрать?
Это конечно спасибо и + вам. Но самое ВАЖНОЕ - файл должен создаваться в "Мои документы" заранее неведомой ОСи (см. выше).
Как распознать папку "Мои документы" не зная ОСи?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.10.2012, 17:35
Цитата Сообщение от deadstrike Посмотреть сообщение
Как распознать папку "Мои документы" не зная ОСи?
Да путь прописать на эту папку и всё
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
15.10.2012, 17:40
deadstrike,
Цитата Сообщение от deadstrike Посмотреть сообщение
Как распознать папку "Мои документы" не зная ОСи?
Для
Цитата Сообщение от deadstrike Посмотреть сообщение
Win 98, Win XP
проверять путь "C:\Documents and Settings\...".

Для
Цитата Сообщение от deadstrike Посмотреть сообщение
Win 7
проверять путь "C:\Users\...".

Т.е. либо идентифицировать ОС и потом уже проверять конкретный путь (1 из 2), либо втупую сразу 2 путей проверять

Ну а вообще по уму, наверное, есть макрос какой-нибудь универсальный Что-нибудь типа %HOMEPATH%, %USERPROFILE%

P.S. А имя юзера, под которым сидишь, тоже можно узнать: GetUserName
0
0 / 0 / 2
Регистрация: 14.05.2012
Сообщений: 28
15.10.2012, 17:41  [ТС]
win 7 - C:\Users\UserName\Documents (Хотя у меня вообще E:\...)
win XP - C:\Documents and Settings\... и т.д.
Ось и имя пользователя не знаю.
Может я туплю и есть какая-то спец. переменная для этого - но увы не обучен... (самоучка.)
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
15.10.2012, 17:44
Да надо действительно определить какая ОС, потом определить системный диск, а уж потом на этом системном диске искать путь согласно ОС к папке мои документы
1
0 / 0 / 2
Регистрация: 14.05.2012
Сообщений: 28
15.10.2012, 18:36  [ТС]
То есть проще никак?
Ну и на том спасибо. Хоть порядок действий знаю.
Остался только пункт 3.
Все остальное погуглю разберусь...
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
15.10.2012, 19:47
deadstrike,
Цитата Сообщение от deadstrike Посмотреть сообщение
То есть проще никак?
Можно все найти в реестре. Например так в переменную MyDocsPath получаем путь до папки "Мои документы":

C++
1
2
3
4
5
6
7
8
    TRegistry *reg = new TRegistry();
    reg->RootKey = HKEY_CURRENT_USER;
    reg->OpenKeyReadOnly("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders");
    AnsiString MyDocsPath;
    MyDocsPath = reg->ReadString("Personal");
    ShowMessage(MyDocsPath);
    reg->CloseKey();
    delete reg;
Справедливо и для XP и для Win7.
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
16.10.2012, 01:07
Лучший ответ Сообщение было отмечено как решение

Решение

Уже ведь писали про системные пути, зачем узнавать версию ОС? А пользовать? А диск?
Проще использовать стандартные методы и получится что-то вроде:
C++
1
2
char MyDocumentPath[255];
SHGetSpecialFolderPath(0,MyDocumentPath,CSIDL_PERSONAL,true);
Только не забываем подключить:
C++
1
#include "shlobj.h"
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2012, 01:07
Помогаю со студенческими работами здесь

окошко "мои документы"
после каждой загрузки винды любуюсь открытым окошком "мои документы".. как побороть?

Windows 7 и мои документы
Здравствуйте! Проблема вот в чём: Решил переместить папку Мои Документы с системного диска С на диск D. На диске С/пользователи/имя...

Папка мои документы
Не помню, какой был атрибут у папки, но обнаружилось что при установки игры в папке не создается раздел, куда обычно сохранялки пишутся....

Windows 7 мои документы
Всем Привет,случайно мои документы переместил в папку пользователя и теперь не могу вернуть обратно,все сохраняется в папке user где...

Windows 7 и Мои Документы
Еще одна проблема с Windows 7. На Windows XP можно было с легкостью куда угодно перекинуть папку Мои Документы. Я обычно перекидывал ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru