|
|
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
В odbc определил источник(dBase файлы), где указал путь к базе. Как можно в PB получить путь к файлам dbf определенном в odbc? В хелпе не нашел (может плохо искал). Сам PB получает этот путь - при выборе таблиц в DW отображаются таблицы из каталога определенного в ODBC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 12:10 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Прохожий111В odbc определил источник(dBase файлы), где указал путь к базе. Как можно в PB получить путь к файлам dbf определенном в odbc? В хелпе не нашел (может плохо искал). Сам PB получает этот путь - при выборе таблиц в DW отображаются таблицы из каталога определенного в ODBC. Можно прочитать из реестра, например из HKEY_CURRENT_USER\Software\ODBC\ODBC.INI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 12:21 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Спасибо. А может кто знает функцию Windows? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 12:30 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Я давно не программировал на РВ по серьёзному,мелкие поделки не в счёт. Но вот помнится,приходилось клеится к MSSQL тоже через ODBC,но без того,что юзер должен на своём компе,что-либо определять. Так вот,я тогда присоединялся с помощью connection string,которая целиком сидела,в SQLCA.DBParm,кажись.А синтакс коммандной строки содрал с сайта http://www.connectionstrings.com/ Так вопрос,о том,где,что лежит просто не начинался,т.к.всё было под рукой-имя сервера,базы,тра-ля-ля-зы и прочего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 12:50 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Можно воспользоваться : Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 17:43 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Можно попробовать создавать ODBS - источник налету! Посмотрите здесь, может поможет: // так создаём динамически connect к ODBC transaction SQL string ls_connect, ls_databasefile, ls_driver,docpath, f_name integer i, li_cnt, li_rtn, li_filenum SQL = CREATE transaction // здесь даём пользователю выбрать в диалоговом режиме имя файла li_rtn = GetFileOpenName("Выберете файл",docpath,f_name,"XLS","Excel Files (*.XLS),*.XLS,","c:/Test") ls_DataBaseFile = f_name ls_Driver = "Microsoft Excel Driver (*.xls)" ls_connect = "'" + & "DBQ=" + ls_DataBaseFile + & ";Driver=" + ls_Driver + & ";FIL=MS Excel;" + & "'" SQL.DBMS = "ODBC" SQL.Autocommit = False SQL.DbParm = "ConnectString=" + ls_connect connect using SQL; if( SQL.SQLCode<> 0) then MessageBox('Test', 'SQLCode = :' + string( SQL.SQLCode) + '~r~n' + SQL.SQLErrText ) end if // так создаём дату window и заполняем её к примеру из datastore, простым копированием строк. string error_syntaxfromSQL, error_create, str int j string new_sql, new_syntax // Описание DataStore datastore my_store // dw_1 - это единственный контрол, который нам нужен w_main.dw_1.Reset() // Создаём DataStore my_store=Create datastore // Запрос SQL new_sql = 'SELECT * from "database"' //messagebox("",new_sql) // Полный синтаксис new_syntax = SQL.SyntaxFromSQL(new_sql, /*"" - по умолчанию*/'Style(Type=Grid)',error_syntaxfromSQL) IF Len(error_syntaxfromSQL) > 0 THEN // Выдается ошибка w_main.st_1.Text = error_syntaxfromSQL ELSE // Привязываем DataStore к запросу my_store.Create(new_syntax, error_create) // Привязываем контрол к данным w_main.dw_1.Create(new_syntax) IF Len(error_create) > 0 THEN w_main.st_2.Text = error_create END IF END IF // Вытаскиваем данные в DataStore my_store.SetTransObject (SQL) my_store.Retrieve() // Копируем данные из DataStore в Control my_store.RowsCopy(1,my_store.RowCount(), Primary!, w_main.dw_1,1,Primary!) Destroy SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 17:54 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Ну если по-уму то, лучше пользовать ODBC API ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 10:09 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
EYuriНу если по-уму то, лучше пользовать ODBC API И почему же это лучше? Всеравно все сведется к чтению реестра или odbc.ini ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 11:49 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Guest_10 EYuriНу если по-уму то, лучше пользовать ODBC API И почему же это лучше? Всеравно все сведется к чтению реестра или odbc.ini Вот именно поэтому и лучше. Как здесь уже обсуждалось, названия registry hives и ключей могут быть зависимы от ОС, API же само знает, какие registry hives и ключи нужно читать, в зависимости от ОС, на которой зовётся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 18:23 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Вообще-то, у ODBC есть возможность расшифровки DSN в строку. Читать реестр совершенно не нужно. Во первых этим занимается функция SQLDriverConnect() которой на вход даешь полную, не полную или вообще пустую строку описывающую коннект. Функция может вызвать встроенный в ODBC-driver диалог, для запроса недостающих параметров. И подключится к базе, а в одном из параметров будет полная, расшифрованая строка подключения. Во вторых есть функция SQLBrowseConnect() которая занимается последовательной расшифровкой строки. Примеры использования есть в описании ODBC. Вот только вызвать их напрямую из PB подозреваю что не получится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 18:36 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Если callbacks в них не нужны, то получится вызвать их напрямую из PB без проблем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 20:02 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
На кой леший там колбеки могут понадобиться? ODBC ж не объектный протокол. В общем, у меня сегодня все сервера работали, так что я развлекался :) Как результат развлечений получилась вот такая PBL: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 01:00 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
я раньше выкладывал библеотеку для работу с ODBC API. Конечно не все функции реализованы, но многое можно найти. Ну и MSDN не помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:28 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
To White Owl Глянул на твою pbl -ку. Хм... интересно. Только вот я не врубаюсь, как же все это применить к нормальному sqlca.DBParm ? Думаю, твои советы могли бы нам пригодиться, т.к. развлекаемся который месяц с ODBC и слишком много проблем. Речь идет о связке MS SQL Server 2000 & PowerBuilder 9.0.2 Build 7509 В основном гемор идет, когда есть подключение через Client Network Utility по TCP/IP (клиенты и сервер базы расположены в разных сетях). Когда подключение идет через именованные каналы (клиенты и сервер в одной сетке), то проблем нет. При этом sqlca.DBParm выглядит так: ConnectString='DRIVER=SQL Server;SERVER=My_Server;DATABASE=SUPPER; Uid=cerb;Pwd=[eqdfv;Trusted_Connection=no;APP=MY_APP 2005.09.07 13:50 ODBC',PacketSize=65536,CallEscape='No',DisableBind=1,SQLCache=0, CommitOnDisconnect='No',Async=1,DelimitIdentifier='No', ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT',Date=' \''dd.mm.yyyy\'' ',DateTime=' \''dd.mm.yyyy hh:mm:ss.fff\'' ' Ошибки такого рода: (999)SQLSTATE = 08S01 [Microsoft][ODBC SQL Server Driver]Ошибка связи (999)Select error: SQLSTATE = S1000 [Microsoft][ODBC SQL Server Driver]Protocol error in TDS stream (1205)Select error: SQLSTATE = 40001 [Microsoft][ODBC SQL Server Driver][SQL Server]Transaction (Process ID 61) was deadlocked on lock resources with another process and has chosen as the deadlock victim. Return the transaction. И т.д. Некоторые удалось прибить, другие все еще лезут. MDAC - последний установлен у клиентов. Некоторые говорят, что все дело в связи между двумя сетками (клиенты в одной, сервер в другой сети), но мне кажется это слишком странным, ибо на MSS так сильно клиенты не глючили. Хотелось бы добиться большей стабильности работы, но пока это только мечты. Может, посоветуешь чего-нибудь изменить, прикрутить?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:39 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
Black Savage To White Owl Глянул на твою pbl -ку. Хм... интересно. Только вот я не врубаюсь, как же все это применить к нормальному sqlca.DBParm ? Прикол в том, что применять это в реальности не рекомендуется :) Извращение оно извращение и есть. Но если хочется более низкого взаимодействия с ODBC драйвером то это все таки возможно. Теоретически можно вообще отказаться от использования Transaction объектов PB и работать с ODBC напрямую :) Black SavageРечь идет о связке MS SQL Server 2000 & PowerBuilder 9.0.2 Build 7509 В основном гемор идет, когда есть подключение через Client Network Utility по TCP/IP (клиенты и сервер базы расположены в разных сетях). ээээ... я не специалист по MS SQL Server, извините. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 17:41 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
White OwlНа кой леший там колбеки могут понадобиться? ODBC ж не объектный протокол. Это было сказано а ответ на эту безосновательную реплику: White OwlВот только вызвать их напрямую из PB подозреваю что не получится :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 18:16 |
|
||
|
Путь к базе данных.
|
|||
|---|---|---|---|
|
#18+
ФилиппЭто было сказано а ответ на эту безосновательную реплику: White OwlВот только вызвать их напрямую из PB подозреваю что не получится :). На эту безосновательную реплику надо было отвечать: "А какие там могут быть сложности? Получится конечно!", а не ссылаться на колбэки которых в стандартном ODBC вообще нет. Колбэки есть только как расширения для некоторых драйверов. И вообще, я просто на тот момент ни разу не пробовал делать ODBC вызовы напрямою из PB :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 18:26 |
|
||
|
|

start [/forum/search_topic.php?author=nikli&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 486ms |
| total: | 665ms |

| 0 / 0 |
