C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Системный диск и БД — какая связь?, Очень наболевший вопрос
** laifik
  Отправлено: 15.12.2003, 13:19


Не зарегистрирован







Помогите, пожалуйста, разобраться. Может кто столкнулся с такой проблемой?
Из программы (С++ Игшдвук 6) я подключаю сетевой диск. Программа подсоединена к БД, находяйщеяся на сервере i1. Сетевой диск тоже расположен на этом же сервере и имеет login: disk, password: zz.
Провожу шесть экспериментов:
1) На форму кидаю Button и прописываю код запуска сетевого диска:
NETRESOURCE netResource;
LPSTR netPassword, netLogin;

ZeroMemory(&netResource, sizeof(NETRESOURCE));
netResource.dwType = RESOURCETYPE_DISK;
netResource.lpLocalName = "Y:";
netResource.lpRemoteName = "\\\\i1\\Archiv$";
netPassword = "zaqxsw";
netLogin = "disk";

if(WNetAddConnection2(&netResource, netPassword, netLogin, NULL) != NO_ERROR)
{
LPVOID lpMsgBuf;

FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
NULL);

MessageBox(Application->Handle,
(const char *)lpMsgBuf,
"GetLastError",
MB_OK | MB_ICONINFORMATION);

LocalFree(lpMsgBuf);
}
В проводнике виден созданный диск Archiv$.
2) На эту же форму добавляю компоненты TTable и DataSource, подключаю таблицу БД (сервер i1) и пробую подсоединить диск. Выходит сообщение, что я пробую подключиться к уже подключенному диску. Хотя это не так.
3) Меняю в коде lpRemoteName = "\\\\i1\\Archiv$"; на lpRemoteName = "\\\\160dep-537\\Archiv$"; 160dep-537-моя машина. У себя создаю Archiv$. Все подсоединяется.
4) На форме только компоненты TTable и DataSource с подключенной таблицей. Пробую подключить диск через net use по тому же пути, что в коде. Вылетает эта же ошибка.
5)Билдер вообще не запускаю. Базу открываю из Access-а. Запускаю диск по net use. Все проходит.
6) БД запускаю из SQL. Далее диск по net use. Все проходит.
Вывод такой: что вместе с открытием БД в приложении Билдера в какой-то момент запускается и подсоединению к диску, хотя в проводнике его нет. База подключается через BDE. Может там где-то есть ссылка? Но зрительно я ее не вижу.
В компоненте TTable есть только ссылка на базу DatebaseName и TableName.
В свойствах подключение к диску может быть многократное.
Что это может быть?
sad.gif

Вернуться в Вопросы программирования в C++Builder