OberonCore https://forum.oberoncore.ru/ |
|
Базы данных без предварительной настройки DSN https://forum.oberoncore.ru/viewtopic.php?f=5&t=393 |
Страница 1 из 1 |
Автор: | sacred [ Четверг, 01 Март, 2007 23:44 ] |
Заголовок сообщения: | Базы данных без предварительной настройки DSN |
Возможно ли? В других системах разработки можно указать ConnectionString, в которой прописываются параметры (например путь к базе и используемый драйвер) и можно работать без предварительных псевдонимов в DSN. Если, к примеру, нужно создать просмотрщик dbf-файлов, то ведь не создавать же для каждой папки, где может найтись dbf-файл свою запись в DSN ODBC? Кто-нибудь победил это? |
Автор: | Trurl [ Пятница, 02 Март, 2007 13:30 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
sacred писал(а): Если, к примеру, нужно создать просмотрщик dbf-файлов, то ведь не создавать же для каждой папки, где может найтись dbf-файл свою запись в DSN ODBC?
А зачем? DSN="Файлы dBASE" SELECT * FROM C:\DATA\PATH\TABLE.DBF |
Автор: | Иван Горячев [ Пятница, 02 Март, 2007 13:37 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
У меня сотня dbf в разных каталогах. "Файлы dBASE 0".."Файлы dBASE 99"? Вообще конечно возможно. Нужно всего лишь написать собственный драйвер для работы с dbf. |
Автор: | Trurl [ Пятница, 02 Март, 2007 13:46 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
Ivor писал(а): У меня сотня dbf в разных каталогах. "Файлы dBASE 0".."Файлы dBASE 99"?
Нипонил. Зачем "Файлы dBASE 0".."Файлы dBASE 99"? Просто "Файлы dBASE". |
Автор: | sacred [ Пятница, 02 Март, 2007 13:54 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
Trurl писал(а): DSN="Файлы dBASE"
SELECT * FROM C:\DATA\PATH\TABLE.DBF Сууупер! А нельзя ещё так: где-то указать (не в DSN!) путь к какому-нибудь каталогу, и в запросах SQL уже полный путь не указывать? |
Автор: | Иван Горячев [ Пятница, 02 Март, 2007 13:56 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
Я конечно мало работал с ODBC, но там вроде одна запись DSN на одну БД? А один dbf-файл считается одной БД. Вот и выходит, что на каждый файл приходится лепить свою запись. Или я не прав? |
Автор: | sacred [ Пятница, 02 Март, 2007 14:03 ] |
Заголовок сообщения: | Re: Базы данных без предварительной настройки DSN |
Ivor писал(а): Я конечно мало работал с ODBC, но там вроде одна запись DSN на одну БД? А один dbf-файл считается одной БД. Вот и выходит, что на каждый файл приходится лепить свою запись. Или я не прав?
В общем случае - неправ. Во-первых для dbf-типа баз, базой считается не файл, а каталог с файлами, а каждый файл - таблица. Во-вторых, в общем случае создавать записи в DSN вообще не нужно, достаточно того, что в системе есть соответствующий ODBC драйвер. Можно к нему обратиться и указать любые параметры типа путь к базе, пароль, и т.д, не изпользуя DSN. К счастью, оказывается и в BlackBox можно почти то же самое делать. |
Автор: | Trurl [ Пятница, 02 Март, 2007 14:43 ] |
Заголовок сообщения: | |
Большинство драйверов все-таки требует указания DSN. Цитата: А нельзя ещё так: где-то указать (не в DSN!) путь к какому-нибудь каталогу, и в запросах SQL уже полный путь не указывать?
Можно, но во-первых придется переписать SqlOdbc, а во-вторых это будет сильно зависит от драйвера ODBC. Например, для того же dbf у dBase и FoxPro драйверов разные параметры. А не проще ли в DSN указать использовать текущий каталог и менять его по мере надбности? |
Автор: | sacred [ Пятница, 02 Март, 2007 15:30 ] |
Заголовок сообщения: | |
Trurl писал(а): А не проще ли в DSN указать использовать текущий каталог и менять его по мере надбности?
Как его собссна менять? Через WinApi? Мож фукнцию навскидку помните? |
Автор: | Илья Ермаков [ Пятница, 02 Март, 2007 15:41 ] |
Заголовок сообщения: | |
Да эта... WinApi.SetCurrentDir, кажись... |
Автор: | Trurl [ Пятница, 02 Март, 2007 15:50 ] |
Заголовок сообщения: | |
SetCurrentDirectory |
Автор: | sacred [ Воскресенье, 04 Март, 2007 23:24 ] |
Заголовок сообщения: | Пока ещё неполная русификация? |
Спасибо всем за помощь. Однако траблы не прекращаются. Запускаю SQL\Browser. Пишу Database: Файлы dBASE, Driver: SqlOdbc3 Statement - без разницы какой, не в нём дело. Жму Execute - есть подключение! Смотрю исходник SqlBrowser, копирую из него код: Код: IF table = NIL THEN
SqlDB.OpenDatabase("SqlOdbc3", "", "", "Файлы dBASE", TRUE, TRUE, database, res); IF res = 0 THEN table := database.NewTable(); ELSIF res <= 3 THEN Dialog.ShowMsg("#Sql:CannotLoadDriver") ELSE Dialog.ShowMsg("#Sql:ConnectionFailed") END END; Имею ConnectionFailed (типа не указан драйвер). Пытаюсь найти различия. Вставляю в код текст: Log.String("Файлы dBASE"); Т.к. заподозрил, что что-то с кодировками. В логе русские буквы - не печатаются... Зашёл в тупик. Помогите. Установлен BlackBox 1.5 SP 4.01 всё скачано с этого сайта. |
Автор: | Trurl [ Понедельник, 05 Март, 2007 09:17 ] |
Заголовок сообщения: | |
Попробуйте переименовать "Файлы dBASE" в "dBASE files". |
Автор: | sacred [ Понедельник, 05 Март, 2007 11:46 ] |
Заголовок сообщения: | |
Trurl писал(а): Попробуйте переименовать "Файлы dBASE" в "dBASE files".
Где именно? В DSN ? Не катит. Необходимо создать приложение, не требующее предварительной настройки DSN, или, в крайнем случае, само выполняющее такую настройку, хотя это хуже. И, кстати, SqlBrowser-то работает с "Файлы dBASE", и не жужжит... Вы будете смеяться, я на убогом 1С могу подключаться к любым базам данных (ну может не совсем к любым, но на проблемы пока не натыкался), просто указав строку подключения и всё! Никаких настроек в DSN делать не нужно. Скажите правду: я многого хочу? Стандартная подсистема SQL так не умеет? Надо брать MSDN в зубы и кодить, кодить, кодить? |
Автор: | Trurl [ Понедельник, 05 Март, 2007 12:37 ] |
Заголовок сообщения: | |
Скорее всего, проблема при компиляции строки и дальнейшей её интерпретации. Вообще же "Файлы dBASE" - DNS который создаётся при установке DAC. Но его может и не быть. Например если винда нерусская или пользователь просто удалил ненужный DNS. Так что лучше проверить наличие и/или создать новый. Сделать это можно разными способами: функцией SQLConfigDataSource добавить запись в ODBC.INI или в реестр ([HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI] или [HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI]) |
Автор: | Trurl [ Понедельник, 05 Март, 2007 12:55 ] |
Заголовок сообщения: | |
Ещё предложение. Копируем SqlOdbc3 и меняем в нем вызов SQLConnect на SQLDriverConnect. |
Автор: | sacred [ Понедельник, 05 Март, 2007 16:15 ] |
Заголовок сообщения: | |
Круто. Ну это просто спасибо огромное. Я бы сам долго искал. Буду пробовать. Остаётся только осадочек из-за: Цитата: Скорее всего, проблема при компиляции строки и дальнейшей её интерпретации.
Т.е. вопрос неполной русификации, но это к моей задаче прямого отношения не имеет, это так, в целом. СПАСИБО! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |