OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 15 Октябрь, 2019 15:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
СообщениеДобавлено: Четверг, 01 Март, 2007 23:44 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Возможно ли?
В других системах разработки можно указать ConnectionString, в которой прописываются параметры (например путь к базе и используемый драйвер) и можно работать без предварительных псевдонимов в DSN. Если, к примеру, нужно создать просмотрщик dbf-файлов, то ведь не создавать же для каждой папки, где может найтись dbf-файл свою запись в DSN ODBC? Кто-нибудь победил это?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 13:30 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
sacred писал(а):
Если, к примеру, нужно создать просмотрщик dbf-файлов, то ведь не создавать же для каждой папки, где может найтись dbf-файл свою запись в DSN ODBC?

А зачем?
DSN="Файлы dBASE"
SELECT * FROM C:\DATA\PATH\TABLE.DBF


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 13:37 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
У меня сотня dbf в разных каталогах. "Файлы dBASE 0".."Файлы dBASE 99"?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 13:46 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Ivor писал(а):
У меня сотня dbf в разных каталогах. "Файлы dBASE 0".."Файлы dBASE 99"?

Нипонил. Зачем "Файлы dBASE 0".."Файлы dBASE 99"? Просто "Файлы dBASE".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 13:54 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Trurl писал(а):
DSN="Файлы dBASE"
SELECT * FROM C:\DATA\PATH\TABLE.DBF

Сууупер!
А нельзя ещё так: где-то указать (не в DSN!) путь к какому-нибудь каталогу, и в запросах SQL уже полный путь не указывать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 13:56 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Я конечно мало работал с ODBC, но там вроде одна запись DSN на одну БД? А один dbf-файл считается одной БД. Вот и выходит, что на каждый файл приходится лепить свою запись. Или я не прав?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 02 Март, 2007 14:03 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Ivor писал(а):
Я конечно мало работал с ODBC, но там вроде одна запись DSN на одну БД? А один dbf-файл считается одной БД. Вот и выходит, что на каждый файл приходится лепить свою запись. Или я не прав?

В общем случае - неправ. Во-первых для dbf-типа баз, базой считается не файл, а каталог с файлами, а каждый файл - таблица. Во-вторых, в общем случае создавать записи в DSN вообще не нужно, достаточно того, что в системе есть соответствующий ODBC драйвер. Можно к нему обратиться и указать любые параметры типа путь к базе, пароль, и т.д, не изпользуя DSN. К счастью, оказывается и в BlackBox можно почти то же самое делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 02 Март, 2007 14:43 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Большинство драйверов все-таки требует указания DSN.
Цитата:
А нельзя ещё так: где-то указать (не в DSN!) путь к какому-нибудь каталогу, и в запросах SQL уже полный путь не указывать?

Можно, но во-первых придется переписать SqlOdbc, а во-вторых это будет сильно зависит от драйвера ODBC. Например, для того же dbf у dBase и FoxPro драйверов разные параметры.
А не проще ли в DSN указать использовать текущий каталог и менять его по мере надбности?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 02 Март, 2007 15:30 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Trurl писал(а):
А не проще ли в DSN указать использовать текущий каталог и менять его по мере надбности?

Как его собссна менять? Через WinApi? Мож фукнцию навскидку помните?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 02 Март, 2007 15:41 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9147
Откуда: Россия, Орёл
Да эта... WinApi.SetCurrentDir, кажись...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 02 Март, 2007 15:50 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
SetCurrentDirectory


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Пока ещё неполная русификация?
СообщениеДобавлено: Воскресенье, 04 Март, 2007 23:24 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Спасибо всем за помощь.
Однако траблы не прекращаются. :)
Запускаю 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 всё скачано с этого сайта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 05 Март, 2007 09:17 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Попробуйте переименовать "Файлы dBASE" в "dBASE files".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 05 Март, 2007 11:46 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Trurl писал(а):
Попробуйте переименовать "Файлы dBASE" в "dBASE files".

Где именно? В DSN ? Не катит.
Необходимо создать приложение, не требующее предварительной настройки DSN, или, в крайнем случае, само выполняющее такую настройку, хотя это хуже.

И, кстати, SqlBrowser-то работает с "Файлы dBASE", и не жужжит...

Вы будете смеяться, я на убогом 1С могу подключаться к любым базам данных (ну может не совсем к любым, но на проблемы пока не натыкался), просто указав строку подключения и всё! Никаких настроек в DSN делать не нужно.

Скажите правду: я многого хочу? :)
Стандартная подсистема SQL так не умеет? Надо брать MSDN в зубы и кодить, кодить, кодить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 05 Март, 2007 12:37 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Скорее всего, проблема при компиляции строки и дальнейшей её интерпретации.
Вообще же "Файлы dBASE" - DNS который создаётся при установке DAC. Но его может и не быть. Например если винда нерусская или пользователь просто удалил ненужный DNS. Так что лучше проверить наличие и/или создать новый.
Сделать это можно разными способами:
функцией SQLConfigDataSource
добавить запись в ODBC.INI или в реестр
([HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI] или
[HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI])


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 05 Март, 2007 12:55 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
Ещё предложение. Копируем SqlOdbc3 и меняем в нем вызов SQLConnect на SQLDriverConnect.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 05 Март, 2007 16:15 
Аватара пользователя

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 13:17
Сообщения: 84
Откуда: Россия, Мурманск
Круто. Ну это просто спасибо огромное. Я бы сам долго искал. Буду пробовать.
Остаётся только осадочек из-за:
Цитата:
Скорее всего, проблема при компиляции строки и дальнейшей её интерпретации.

Т.е. вопрос неполной русификации, но это к моей задаче прямого отношения не имеет, это так, в целом.

СПАСИБО!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB