Пренудительная смена кодировки в ADODB.Connection.

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Radik76
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 30.05.2006 (Вт) 5:27

Пренудительная смена кодировки в ADODB.Connection.

Сообщение Radik76 » 30.05.2006 (Вт) 5:45

Есть парадоксовские файлы с неверно установленной колировкой. В них проаисанно в заголовках "ascii". Реально они содержат текстовые поля в cp866. Делаю:

Dim WithEvents recDB As ADOdb.Recordset
Dim WithEvents recDBF As ADOdb.Recordset
Dim WithEvents conDB As ADOdb.Connection
Dim WithEvents conDBF As ADOdb.Connection
'
sub ЧётоТам()
If conDBF Is Nothing Then
Set conDBF = New ADOdb.Connection
End If
If conDB Is Nothing Then
Set conDB = New ADOdb.Connection
End If

With conDB
.CursorLocation = adUseClient
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source") = FilesConvert.Path
.Properties("Extended Properties") = "Paradox 4.X"
.Open
End With

With conDBF
.CursorLocation = adUseClient
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties") = "dBase IV"
.Properties("Data Source") = DirIn.Path
.Open
.Execute assData(idAssData, 5) ' здесь запрос на создание пустой таблицы
End With
If recDB Is Nothing Then
Set recDB = New ADOdb.Recordset
End If

If recDBF Is Nothing Then
Set recDBF = New ADOdb.Recordset
End If

With recDB
.Open assData(idAssData, 1), conDB, adOpenKeyset, adLockPessimistic, adCmdTable 'adCmdTableDirect
If Not (.BOF And .EOF) Then .MoveFirst
End With

With recDBF
.CacheSize = 2048
.Open assData(idAssData, 2), conDBF, adOpenKeyset, adLockPessimistic, adCmdTable
If Not (.BOF And .EOF) Then .MoveFirst
For k = 1 To recDB.RecordCount
.AddNew
For y = 0 To assData(idAssData, 3) - 1
.Fields(y) = recDB.Fields(y)
' В этом месте я читаю парадоксовский файл и загоняю его в дбфник
' Причом Фаелдс возвращает мне строки в нечитабельном виде.
' Это и не cp866 и не 1251 (виндовс)
'
Next y
.Update
.MoveNext
recDB.MoveNext
Next k
End With

recDB.Close
recDBF.Close
Set recDB = Nothing
Set recDBF = Nothing

conDB.Close
conDBF.Close
Set conDB = Nothing
Set conDBF = Nothing

End Sub

Если в заголовке .db вместо ascii написать cyrr то всё становится правильно. Фаелдс возвращает строки по русски. Видимо проблемма в том что драйвер парадокса интерпертируя заголовок подключает требуемую раскладку.

Так вот собственно вопрос. Как при открытии базы или таблицы выставить её пренудительно?

Вернуться в Базы данных

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

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList