powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Независимое приложение.
8 сообщений из 8, страница 1 из 1
Независимое приложение.
    #39076478
Kortic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравия люди добрые! Возник такой вопрос, возможно ли как то организовать толстый клиент так, чтобы он конектился к базе на любом компьютере, без предварительной установки ODBC драйверов? Чтобы все что нужно было клиенту лежало в одной папке с exe файлом, и больше он ничего от юзера не просил.

PB 6.5
СУБД SQL AnyWhere 9.

Заранее благодарю за информацию.
...
Рейтинг: 0 / 0
Независимое приложение.
    #39077340
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делал подобное. Вместе с приложением копировал нужный драйвер ODBC (dll-ки и прочее) и прописывал базу в реестре при запуске программы.
Причем если права были делал общий источник, если нет - делал локальный для пользователя.
В какие ветки что пишется можно отследить монитором реестра.
...
Рейтинг: 0 / 0
Независимое приложение.
    #39077701
Kortic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001,

А можно ли как то программно полностью описать как клиенту связывать с базой через ODBC, просто будут случаи где толстый клиент будет запускаться там где вообще доступ ко всему будет закрыть напрочь.
...
Рейтинг: 0 / 0
Независимое приложение.
    #39077781
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
15.10.2015 14:37, Kortic пишет:

> А можно ли как то программно полностью описать как клиенту связывать с
> базой через ODBC

Минимум - DSN-Less connection, но для неё всё равно нужна запись в
Software\ODBC\ODBCINST.INI.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Независимое приложение.
    #39077872
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kortic,
а зачем пользователю, что-то объяснять по поводу ODBC и озадачивать?
В папке программы пусть лежит PBODBхх.DLL, а остальное пусть программа сама делает - регистрирует в реестре и т.д.
...
Рейтинг: 0 / 0
Независимое приложение.
    #39077878
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, у меня так с БД Firebird программа работает на РВ версии Desktop.
...
Рейтинг: 0 / 0
Независимое приложение.
    #39078256
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через реестр и описывается и прописывается, а пользователь просто запускает ваше приложение.
Исключение составляет только файловые БД, там и устанавливать наверное ничего не нужно, только работать вам придется с файлами самостоятельно, без SQL. В вашем случае так не получится.
Вот пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
public function integer getodbc (string odbc_name);
//Функция возвращает наличие ODBC источника
//При его отсутствии создает
string ls_path_mdb
string ls_odbc
string ls_path_mdw
string ls_out_path
long i

if odbc_mode_user then ls_odbc='HKEY_LOCAL_MACHINE' else ls_odbc='HKEY_CURRENT_USER'
if RegistryGet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"DBQ", RegString!, ls_path_mdb)=1 then
//есть источник
else
//нет источника - создаем
	
ls_out_path=is_win

ls_path_mdb=ProfileString(inifile,"Connect","PathBD",'')
ls_path_mdw=ProfileString(inifile,"Connect","PathMDW",'')
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"Driver", RegString!, ls_out_path+"\System32\odbcjt32.dll")
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"DBQ", RegString!,ls_path_mdb )
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"SystemDB", RegString!,ls_path_mdw )
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"DriverId", ReguLong!, 25)
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"FIL", RegString!, "MS Access;")
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"SafeTransactions", ReguLong!, 0)
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name, &
"UID", RegString!, "")

RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name+"\Engines\Jet", &
"ImplicitCommitSync", RegString!, "")
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name+"\Engines\Jet", &
"MaxBufferSize", ReguLong!, 2048)
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name+"\Engines\Jet", &
"PageTimeout", ReguLong!, 5)
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name+"\Engines\Jet", &
"Threads", ReguLong!, 3)
RegistrySet(ls_odbc+"\Software\ODBC\ODBC.INI\"+odbc_name+"\Engines\Jet", &
"UserCommitSync", RegString!, "Yes")

RegistrySet(ls_odbc+"\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", &
odbc_name, RegString!, "Driver do Microsoft Access (*.mdb)")

end if
return 0
end function
...
Рейтинг: 0 / 0
Независимое приложение.
    #39079802
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
string ls_connect, ls_databasefile, ls_driver, ls_current_folder 

ls_current_folder = GetCurrentDirectory( )

ls_DataBaseFile = ls_current_folder + "\MMM.mdb" 
ls_Driver = "Microsoft Access Driver (*.mdb)"

ls_connect = "'" + &
	"DBQ=" + ls_DataBaseFile + &
	";Driver=" + ls_Driver + &
	";FIL=MS Access;" + &
	"'"

SQLCA.DBMS 		= "ODBC"
SQLCA.Autocommit 	= TRUE
SQLCA.DbParm 	= "ConnectString=" + ls_connect

connect using SQLCA;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Независимое приложение.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]