Драйвер ODBC
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Драйвер ODBC
Есть прога на С6, через ODBC общается с MySQL. Все работает.
Вопрос: Можно ли как-нибудь встроить драйвер ODBC в программу? ЧТобы не создавать источник ODBC, и т.д.
Спасибо за ответы)))
Вопрос: Можно ли как-нибудь встроить драйвер ODBC в программу? ЧТобы не создавать источник ODBC, и т.д.
Спасибо за ответы)))
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
Re: Драйвер ODBC
Использовать connection string:
Например:
В описании файла OWNER(ConnectionString)
Например:
В описании файла OWNER(ConnectionString)
Код: Выделить всё
ConnectionString = 'Driver={{SQL Native Client}; Server=sql-server; Database=MyDB; Trusted_Connection=yes'
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Драйвер ODBC
Во-первых здравствуйте. Я ,вообще говоря, начинающий программист, а в clarion тем более, но вот есть чем поделиться.
Также пользуюсь connection string-работает . Но вообще-то я не об этом хочу рассказать.
У меня версия mysql 5.1, драйвер myodbc 5.1. Версия Сlarion 6.3 9059-хотя в данном вопросе это не важно-судя по форумам подобная проблема и у 1с ников есть.
Так вот, если в такой связке сделать некую базу данных, то первое во что выльется компиляция простого примера с доступом к текстовому полю-это gpf.Опытным путем было установлено, что приложение создается лишь при установке всех текстовых полей в мускуле в кодировку utf8.(Как вариант можно перегнать и всю базу в utf-тоже помогает). Однако при таком решении есть один минус- сортировка русских слов становится чуть более чем странной, тем не менее кракозябр нет, гпф пропадает. В драйвере myodbc 3 была возможность послать после подключения команду set names, которая решала все проблемы с кодировками, в myodbc 5 ее убрали, однако если в коннекшене прописывать самостоятельно, то вроде бы даже работает(можно добиться возвращения кракозябр ) Но проблемы сортировки это не решает. Конвертация базы в ср1251 и вписывание в коннекшн ср1251 возвращает гпф.
Довольно долго я с этим жил, а потом зачем-то(читайте "от безысходности") попробовал следующее:
Удалил свой коннекшн стринг, сделал самый "умолчательный" источник данных и сконвертил базу в дефолтный для мускуля чарсет latin1 и выставил коллейшн latin1_bin. Теперь в базе лежат кракозябры, но из клариона всё видно очень симпатично, сортировка заработала. (Вобщем это как бы первое решение проблемы подключения через myodbc 5- в инернетах глядел-люди просто советуют переходить на myodbc 3).
Собственно вопрос: есть ли такое решенеие, чтобы база оставалась в ср1251 или "это фантастика"?
Также пользуюсь connection string-работает . Но вообще-то я не об этом хочу рассказать.
У меня версия mysql 5.1, драйвер myodbc 5.1. Версия Сlarion 6.3 9059-хотя в данном вопросе это не важно-судя по форумам подобная проблема и у 1с ников есть.
Так вот, если в такой связке сделать некую базу данных, то первое во что выльется компиляция простого примера с доступом к текстовому полю-это gpf.Опытным путем было установлено, что приложение создается лишь при установке всех текстовых полей в мускуле в кодировку utf8.(Как вариант можно перегнать и всю базу в utf-тоже помогает). Однако при таком решении есть один минус- сортировка русских слов становится чуть более чем странной, тем не менее кракозябр нет, гпф пропадает. В драйвере myodbc 3 была возможность послать после подключения команду set names, которая решала все проблемы с кодировками, в myodbc 5 ее убрали, однако если в коннекшене прописывать самостоятельно, то вроде бы даже работает(можно добиться возвращения кракозябр ) Но проблемы сортировки это не решает. Конвертация базы в ср1251 и вписывание в коннекшн ср1251 возвращает гпф.
Довольно долго я с этим жил, а потом зачем-то(читайте "от безысходности") попробовал следующее:
Удалил свой коннекшн стринг, сделал самый "умолчательный" источник данных и сконвертил базу в дефолтный для мускуля чарсет latin1 и выставил коллейшн latin1_bin. Теперь в базе лежат кракозябры, но из клариона всё видно очень симпатично, сортировка заработала. (Вобщем это как бы первое решение проблемы подключения через myodbc 5- в инернетах глядел-люди просто советуют переходить на myodbc 3).
Собственно вопрос: есть ли такое решенеие, чтобы база оставалась в ср1251 или "это фантастика"?
-
- ✯ Ветеран ✯
- Сообщения: 5008
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Re: Драйвер ODBC
А можно поподробнее об 'Driver={{SQL Native Client}'. Надо ставить SQL Native Client для определенного SQL сервака?
We are hard at work… for you.
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
Re: Драйвер ODBC
Зависит от драйвера
например для MS SQL 2005 'Driver={{SQL Native Client}'
для MS SQL 2000 'Driver={{SQL Server}'
например для MS SQL 2005 'Driver={{SQL Native Client}'
для MS SQL 2000 'Driver={{SQL Server}'
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
-
- ✯ Ветеран ✯
- Сообщения: 5008
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Re: Драйвер ODBC
А вот бы обойтись без установки драйвера. Приходится обойти все компы. А если их 100? Поэтому прописать источник ODBC - это уже ерунда по времени.
We are hard at work… for you.
- Andrew Listiev
- Активист
- Сообщения: 166
- Зарегистрирован: 07 Июль 2005, 11:16
- Откуда: Латвия, Рига
Re: Драйвер ODBC
Если вы админ в сети, то можно использовать vbs-скрипт, который регистрирует необходимые ODBC. Вот например скрипт регистритующий ODBC запись MSSQL сервера:
В качестве аргумента имя машины, куда хотим поставить
Ну и как вариант могу предложить использовать ADO, но придется переписывать приложение.
В качестве аргумента имя машины, куда хотим поставить
Код: Выделить всё
On Error Resume Next
const HKEY_LOCAL_MACHINE = &H80000002
Set Registry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & WScript.Arguments(0) & "\root\default:StdRegProv")
Call CreateValue("SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", "MySQLServer", "SQL Server")
DSNName = "SOFTWARE\ODBC\ODBC.INI\MySQLServer"
Call CreateKey (DSNName)
Call CreateValue(DSNName, "Driver", GetSystemDirectory(WScript.Arguments(0)) & "\SQLSRV32.dll")
Call CreateValue(DSNName, "Server", "MySQLServer")
Call CreateValue(DSNName, "UseProcForPrepare", "0")
Call CreateValue(DSNName, "QuotedId", "No")
Call CreateValue(DSNName, "AnsiNPW", "No")
Call CreateValue(DSNName, "LastUser", "Rescue")
Call CreateValue(DSNName, "AutoTranslate", "No")
DSNName = "SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo"
Call CreateKey (DSNName)
Call CreateValue(DSNName, "MySQLServer", "DBMSSOCN,MySQLServer,1433")
Sub CreateValue(KeyPath, ValueName, Value)
Return = Registry.SetStringValue(HKEY_LOCAL_MACHINE, KeyPath, ValueName, Value)
If (Return <> 0) And (Err.Number <> 0) Then
WriteOutput("SetValue failed. Error = " & Err.Number & " Key: " & Keypath & " Name: " & ValueName & " Value: " & Value)
End If
End Sub
Sub CreateKey(KeyPath)
Return = Registry.CreateKey(HKEY_LOCAL_MACHINE, KeyPath)
If (Return <> 0) And (Err.Number <> 0) Then
WriteOutput("SetValue failed. Error = " & Err.Number & " Key: " & Keypath)
End If
End Sub
Function GetSystemDirectory(Computer)
Set objWMIService = GetObject("winmgmts:\\" & Computer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objItem In colItems
GetSystemDirectory = objItem.SystemDirectory
Next
End Function
Sub WriteOutput(InputString)
Dim FileSystemObject, OutputFile
Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Set OutputFile = FileSystemObject.OpenTextFile("Install.log", ForAppending, True)
OutputFile.WriteLine Date & " - " & Time & ": " & InputString
OutputFile.Close
End Sub
- StillZero
- Ветеран
- Сообщения: 454
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Контактная информация:
Re: Драйвер ODBC
можно для 2005 и 2008 писать Driver={{SQL Server}апример для MS SQL 2005 'Driver={{SQL Native Client}'
для MS SQL 2000 'Driver={{SQL Server}'
Все сайты закрыты...
-
- Ветеран
- Сообщения: 390
- Зарегистрирован: 26 Август 2009, 12:41
- Откуда: Moscow
- Контактная информация:
Re: Драйвер ODBC
Вопрос изначально звучал в смысле : как НЕ устанавливая ODBC на комп , работать с MySql.
Задача тревиальная - есть прога, лежащая на сайте, которую скачивает и запускает пользователь.
Для ее решения и ставился вопрос. Собственно вывод: невозможно?
Для БАИ : С 5-м драйвером тоже не сраслось, поэтому спокойно использую 3. Там есть где определить set names...
Задача тревиальная - есть прога, лежащая на сайте, которую скачивает и запускает пользователь.
Для ее решения и ставился вопрос. Собственно вывод: невозможно?
Для БАИ : С 5-м драйвером тоже не сраслось, поэтому спокойно использую 3. Там есть где определить set names...