Добавить Ansi-text. Access.

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Добавить Ansi-text. Access.

Сообщение Nord777 » 10.02.2009 (Вт) 9:59

Необходимо в среде Access добавить в таблицу текст в кодировке Ansi.
По-умолчанию добавляется в юникоде.
Вопрос: можно ли обойтись средствами access без написания приложения?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Добавить Ansi-text. Access.

Сообщение alibek » 10.02.2009 (Вт) 10:02

Создавай базу в формате Access 95.
Lasciate ogni speranza, voi ch'entrate.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Добавить Ansi-text. Access.

Сообщение Nord777 » 10.02.2009 (Вт) 10:48

Создавай базу в формате Access 95.
База создана не мной. Менять нельзя. Значит только приложение?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Добавить Ansi-text. Access.

Сообщение Денис » 10.02.2009 (Вт) 10:51

Хранить данные в HEX-формате. Зачем программа?

А вообще, есть же API-функции, осуществляющие конвертирование между ANSI и UNICODE. Но даже не это главное, главное вот что: ЗАЧЕМ? даже если предположить, что у тебя один из пользователей работает с базой mdb 2000..2007 из под windows 98, то он все равно работает из под соответствующего access, разве нет? а при установке офиса, устанавливается вся необходимая поддержка юникода. Я не понимаю изначальной цели, зачем нужно ANSI
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Добавить Ansi-text. Access.

Сообщение Nord777 » 10.02.2009 (Вт) 12:31

С базой работает операционная система станка с ЧПУ.
В ней предусмотрена мультиязычная поддержка, но реализована не до конца|криво.
Весь текст, отображаемый в диалоговых окнах операционной системы интерпритируется как cp1251.
Причем, часть таблиц в базе русифицирована. И в access этот текст отображается крякозябрами,
но на станке всё нормально. Необходимо перевести оставшиеся таблицы. Думал можно сделать это без лишних заморочек...
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Добавить Ansi-text. Access.

Сообщение Andrey Fedorov » 11.02.2009 (Ср) 11:36

Nord777 писал(а):Необходимо перевести оставшиеся таблицы. Думал можно сделать это без лишних заморочек...


Вообще тут хорошо бы видеть базу. Точнее достаточно пару табличек из нее - нормальную и ненормальную.
А так можно сделать что угодно...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Добавить Ansi-text. Access.

Сообщение Nord777 » 11.02.2009 (Ср) 12:35

Вообще тут хорошо бы видеть базу. Точнее достаточно пару табличек из нее - нормальную и ненормальную
Это можно. В каком виде лучше представить?
Дело в том, что "хорошая таблица" в одном файле, а "плохая" в другом. Каждый .MDB весит примерно по 20мб.
С акцессом не дружу, поэтому наперед не знаю, удастся ли выдрать эти таблички(в их первостепенном виде) и засунуть в новую базу.
Сегодня вечером попробую. Если будут советы - всегда рад.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Добавить Ansi-text. Access.

Сообщение Andrey Fedorov » 11.02.2009 (Ср) 13:25

Nord777 писал(а):
Вообще тут хорошо бы видеть базу. Точнее достаточно пару табличек из нее - нормальную и ненормальную
Это можно. В каком виде лучше представить?
Дело в том, что "хорошая таблица" в одном файле, а "плохая" в другом. Каждый .MDB весит примерно по 20мб.
С акцессом не дружу, поэтому наперед не знаю, удастся ли выдрать эти таблички(в их первостепенном виде) и засунуть в новую базу.
Сегодня вечером попробую. Если будут советы - всегда рад.


Лучше просто поудаляй из оригинальной базы все лишнее. В двух табличках тоже оставь по десятку строк. Потом сожми базу. Далее пакуешь RAR-ом и все...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Добавить Ansi-text. Access.

Сообщение Nord777 » 11.02.2009 (Ср) 13:36

В архиве две базы и текстовик.
У вас нет доступа для просмотра вложений в этом сообщении.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Добавить Ansi-text. Access.

Сообщение Andrey Fedorov » 12.02.2009 (Чт) 3:24

Nord777 писал(а):В архиве две базы и текстовик.


Для понимания как все записано в "хорошей базе":

Код: Выделить всё
Public Sub T()
    Dim r As New ADODB.Recordset
   
    r.Open "SELECT TXT_TEXT FROM ALLG_TXT_MMC_RUS", CurrentProject.Connection, adOpenStatic, adLockReadOnly
    Do Until r.EOF
        Debug.Print ConvAS(r(0))
        r.MoveNext
    Loop
End Sub

Public Function ConvAS(ByVal ss As String) As String
    Dim i As Long
   
    If Len(ss) = 0 Then Exit Function
    ss = StrConv(ss, vbUnicode)
    For i = 1 To Len(ss) Step 2
        Mid$(ss, (i + 1) / 2, 1) = Mid$(ss, i, 1)
    Next i
    ConvAS = Left(ss, Len(ss) / 2)
End Function


Или другой вариант функции конвертации:

Код: Выделить всё
Public Function ConvAS(s As String) As String
    Dim m() As Byte, i As Long
   
    If Len(s) Then
        m = s
        For i = 0 To UBound(m) Step 2
            m(i / 2) = m(i)
        Next i
        ReDim Preserve m((UBound(m) + 1) / 2 - 1)
        ConvAS = StrConv(m, vbUnicode)
    End If
End Function


Ну, а обратную функцию, думаю, тебе уже несложно сделать самому...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Добавить Ansi-text. Access.

Сообщение Nord777 » 12.02.2009 (Чт) 18:56

Andrey Fedorov
Спасибо, идея понятна.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 127

    TopList