Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Независимое приложение. / 8 сообщений из 8, страница 1 из 1
14.10.2015, 12:56
    #39076478
Kortic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Независимое приложение.
Здравия люди добрые! Возник такой вопрос, возможно ли как то организовать толстый клиент так, чтобы он конектился к базе на любом компьютере, без предварительной установки ODBC драйверов? Чтобы все что нужно было клиенту лежало в одной папке с exe файлом, и больше он ничего от юзера не просил.

PB 6.5
СУБД SQL AnyWhere 9.

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

А можно ли как то программно полностью описать как клиенту связывать с базой через ODBC, просто будут случаи где толстый клиент будет запускаться там где вообще доступ ко всему будет закрыть напрочь.
...
Рейтинг: 0 / 0
15.10.2015, 15:39
    #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
15.10.2015, 16:48
    #39077872
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Независимое приложение.
Kortic,
а зачем пользователю, что-то объяснять по поводу ODBC и озадачивать?
В папке программы пусть лежит PBODBхх.DLL, а остальное пусть программа сама делает - регистрирует в реестре и т.д.
...
Рейтинг: 0 / 0
15.10.2015, 16:51
    #39077878
AIS
AIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Независимое приложение.
Кстати, у меня так с БД Firebird программа работает на РВ версии Desktop.
...
Рейтинг: 0 / 0
16.10.2015, 08:59
    #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
19.10.2015, 10:28
    #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
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Независимое приложение. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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