powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Конвертация DBF файла от начала до конца
7 сообщений из 7, страница 1 из 1
Конвертация DBF файла от начала до конца
    #37828511
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
Конвертация DBF файла от начала до конца
    #37828518
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Конвертация DBF файла от начала до конца
    #37828698
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Конвертация DBF файла от начала до конца
    #37829350
по-моему можно указать кодировку в строке подключения те 866 и все будет как надо
codepage=866; cp=866; или еще как-то вообщем поискать
...
Рейтинг: 0 / 0
Конвертация DBF файла от начала до конца
    #37829375
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему нужно использовать VB?
Если уж вам нужно из DBF получить DBF, то и пользуйте, например, VFP...
...
Рейтинг: 0 / 0
Конвертация DBF файла от начала до конца
    #37830438
Bobax012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77,

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

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


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