Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конвертация DBF файла от начала до конца / 7 сообщений из 7, страница 1 из 1
06.06.2012, 22:15
    #37828511
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
Всем привет,
Проблема в файле dbf. Данные в DOS кодировке, нужно преобразовать в WIN 1251.
Нашел код, который импортирует данные из DBF в DataGrid. А как же перевести его в нужный формат незнаю.

Option Explicit

Dim cnnD As New ADOdb.Connection
Dim rstD As New ADOdb.Recordset

Private Sub cmdConnect_Click()
Dim strSQL As String

cnnD.CursorLocation = adUseClient
cnnD.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & App.Path & ";UseProcForPrepare=No"
strSQL = "SELECT * FROM test.dbf"
rstD.Open strSQL, cnnD

Set dtgDbf.DataSource = rstD

End Sub

Private Sub Form_Unload(Cancel As Integer)

If cnnD.State = 1 Then
cnnD.Close
Set cnnD = Nothing
End If

If rstD.State = 1 Then
rstD.Close
Set rstD = Nothing
End If


End Sub

Вот форма, при нажатии на "Загрузить данные" они загрузились в таблицу, при нажатии на "Конвертировать",
данные в текущей таблице меняют кодировку на WIN (или можно другой способ, какой вы предложите мне главное результат)
и создается новый файл DBF с правильной кодировкой.



Никогда с dbf не работал, это дебют, поэтому объясните как можно понятнее))
...
Рейтинг: 0 / 0
06.06.2012, 22:18
    #37828518
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
Bobax012Всем привет,
Проблема в файле dbf. Данные в DOS кодировке, нужно преобразовать в WIN 1251.
Нашел код, который импортирует данные из DBF в DataGrid. А как же перевести его в нужный формат незнаю.

Option Explicit

Dim cnnD As New ADOdb.Connection
Dim rstD As New ADOdb.Recordset

Private Sub cmdConnect_Click()
Dim strSQL As String

cnnD.CursorLocation = adUseClient
cnnD.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & App.Path & ";UseProcForPrepare=No"
strSQL = "SELECT * FROM test.dbf"
rstD.Open strSQL, cnnD

Set dtgDbf.DataSource = rstD

End Sub

Private Sub Form_Unload(Cancel As Integer)

If cnnD.State = 1 Then
cnnD.Close
Set cnnD = Nothing
End If

If rstD.State = 1 Then
rstD.Close
Set rstD = Nothing
End If


End Sub

Вот форма, при нажатии на "Загрузить данные" они загрузились в таблицу, при нажатии на "Конвертировать",
данные в текущей таблице меняют кодировку на WIN (или можно другой способ, какой вы предложите мне главное результат)
и создается новый файл DBF с правильной кодировкой.



Никогда с dbf не работал, это дебют, поэтому объясните как можно понятнее))




Сорри не тот скрин)
...
Рейтинг: 0 / 0
07.06.2012, 03:14
    #37828698
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
Bobax012,

че нашел в моем древнем проекте.
recode -> это кажется DOS -> WIN
recodemin -то же самое с какой-то спецификой
decode -> WIN ->DOS

Ну, по крайней мере это мне в 2000-м году позволяло резво отображать данные в Win-проге из Dos-txt-файла, а потом туда же и сохранять в "родной" по тем временам DOS-кодировке.
Код: vbnet
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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Function recode(stroka As String) As String
Dim i As Integer
Dim k As Integer
    recode = ""
    For i = 1 To Len(stroka)
        k = Asc(Right(Left(stroka, i), 1))
        If (k >= 128) And (k <= 175) Then
            k = k + 64
        ElseIf (k >= 224) And (k <= 239) Then
            k = k + 16
        ElseIf k = 240 Then
            k = 168
        ElseIf k = 241 Then
            k = 184
        ElseIf k = 252 Then
            k = 185
        End If
        recode = recode & Chr(k)
    Next i
End Function
Function recodemin(stroka As String) As String
Dim i As Integer
Dim k As Integer
    recodemin = ""
    For i = 1 To Len(stroka)
        k = Asc(Right(Left(stroka, i), 1))
        If (k >= 128) And (k <= 175) Then
            k = k + 64
        ElseIf (k >= 224) And (k <= 239) Then
            k = k + 16
        ElseIf k = 240 Then
            k = 168
        ElseIf k = 241 Then
            k = 184
        ElseIf k = 252 Then
            k = 185
        ElseIf (k = 42) Or (k = 248) Or (k = 250) Then
            GoTo nopis
        End If
        recodemin = recodemin & Chr(k)
nopis:
    Next i
End Function
Function decode(stroka As String) As String
Dim i As Integer
Dim k As Integer
    decode = ""
    For i = 1 To Len(stroka)
        k = Asc(Right(Left(stroka, i), 1))
        If (k >= 192) And (k <= 239) Then
            k = k - 64
        ElseIf (k >= 240) And (k <= 255) Then
            k = k - 16
        ElseIf k = 168 Then
            k = 240
        ElseIf k = 184 Then
            k = 241
        ElseIf k = 185 Then
            k = 252
        End If
        decode = decode & Chr(k)
    Next i
End Function
...
Рейтинг: 0 / 0
07.06.2012, 13:17
    #37829350
Конвертация DBF файла от начала до конца
по-моему можно указать кодировку в строке подключения те 866 и все будет как надо
codepage=866; cp=866; или еще как-то вообщем поискать
...
Рейтинг: 0 / 0
07.06.2012, 13:25
    #37829375
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
А почему нужно использовать VB?
Если уж вам нужно из DBF получить DBF, то и пользуйте, например, VFP...
...
Рейтинг: 0 / 0
08.06.2012, 08:48
    #37830438
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
Дмитрий77,

Спасибо, но почему-то не получается перекодировать. Если текст в текстбоксе, то все проходит нормально, конвертация успешшна. А вот как дело касается загрузки самого DBF файла, так это не срабатывает(
...
Рейтинг: 0 / 0
08.06.2012, 08:50
    #37830440
Bobax012
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация DBF файла от начала до конца
AndreTM,

Я не изучал VFP.(
Незнаю как с ним работать.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конвертация DBF файла от начала до конца / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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