Проблема с украинской буквой i

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Проблема с украинской буквой i

Сообщение Al Prad » 24.09.2009 (Чт) 11:10

Здравствуйте!

Имеем: программа на VB6 и база данных в DBF. Заполняем текстбокс текстом по украински, где имеется буква i. При переносе текста в дбф обнаруживаем, что там не i, а подчеркивание ( ' _ ' ). Это я не смайлик нарисовал, а подчеркивание .

Вопрос , естественно - как это исправить?

Спасибо.

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

Re: Проблема с украинской буквой i

Сообщение Денис » 24.09.2009 (Чт) 12:12

А кодовая страница какая используется?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 24.09.2009 (Чт) 13:58

Денис писал(а):А кодовая страница какая используется?


А как это узнать? :oops:

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

Re: Проблема с украинской буквой i

Сообщение Денис » 24.09.2009 (Чт) 14:47

Она должна задаваться в строке подключения, иначе берётся дефолтная для системы? Полагаю у тебя второе, в таком случае, как локализована сама винда? Русская или украинская?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 24.09.2009 (Чт) 15:45

Денис писал(а):Она должна задаваться в строке подключения, иначе берётся дефолтная для системы? Полагаю у тебя второе, в таком случае, как локализована сама винда? Русская или украинская?

Пробовал на двух компах - на одном русская винда, на другом-английская. И там, и там получаю подчеркивания.

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

Re: Проблема с украинской буквой i

Сообщение Денис » 25.09.2009 (Пт) 8:14

Еще уточнение:
Пишешь на украинской раскладке, или в русскую раскладку добавляешь латиницу?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 25.09.2009 (Пт) 9:07

Денис писал(а):Еще уточнение:
Пишешь на украинской раскладке, или в русскую раскладку добавляешь латиницу?

Украинская раскладка.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: Проблема с украинской буквой i

Сообщение VVitafresh » 25.09.2009 (Пт) 9:23

Al Prad писал(а):Украинская раскладка.

Насколько я помню, если файл dbf использует "стандартную" для него кодировку cp866, то украинскую букву сохранить не удастся никак (вернее отображение будет возможно только при использовани keyrus и им подобных резидентных досовских программ, которые подменяют символы в кодовой странице).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 25.09.2009 (Пт) 11:22

VVitafresh писал(а):
Al Prad писал(а):Украинская раскладка.

Насколько я помню, если файл dbf использует "стандартную" для него кодировку cp866, то украинскую букву сохранить не удастся никак (вернее отображение будет возможно только при использовани keyrus и им подобных резидентных досовских программ, которые подменяют символы в кодовой странице).


А можно кодировку как-то поменять?

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

Re: Проблема с украинской буквой i

Сообщение Денис » 25.09.2009 (Пт) 12:20

Al Prad писал(а):А можно кодировку как-то поменять?

Ну да. Указать кодировку в строке подключения.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

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

Re: Проблема с украинской буквой i

Сообщение alibek » 25.09.2009 (Пт) 14:38

Денис писал(а):Ну да. Указать кодировку в строке подключения.

А ты пробовал?
Lasciate ogni speranza, voi ch'entrate.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 25.09.2009 (Пт) 14:46

Денис писал(а):
Al Prad писал(а):А можно кодировку как-то поменять?

Ну да. Указать кодировку в строке подключения.


Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;

А где тут кодировку указывать?

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

Re: Проблема с украинской буквой i

Сообщение Денис » 25.09.2009 (Пт) 15:19

:lol:
Извиняюсь. Перепутал dbf с парадоксовским db, но и у них кодовая страница задается извне, через движок bde. Значит не там. Ухожу из топика, чтобы, так сказать, не насоветовать еще больше.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: Проблема с украинской буквой i

Сообщение VVitafresh » 26.09.2009 (Сб) 10:28

Al Prad писал(а):А можно кодировку как-то поменять?

Можно, например, с помощью утилитки: viewtopic.php?t=34990&p=6680792#p6680792
Или же разбирать формат dbf и конвертировать вручную, задавая кодировку в заголовке и меняя кодировку самих данных (сам я этого не делал).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: Проблема с украинской буквой i

Сообщение VVitafresh » 26.09.2009 (Сб) 10:33

Но если это программа из темы: http://bbs.vbstreets.ru/viewtopic.php?f=5&t=40731, где
Al Prad писал(а):Программа будет работать совместно с программой сторонней компании, а они согласны только на дбф.
то конвертировать нельзя, иначе программа сторонней компании не будет корректно читать файл(ы).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Проблема с украинской буквой i

Сообщение HandKot » 28.09.2009 (Пн) 7:24

Al Prad писал(а):Здравствуйте!

Имеем: программа на VB6 и база данных в DBF. Заполняем текстбокс текстом по украински, где имеется буква i. При переносе текста в дбф обнаруживаем, что там не i, а подчеркивание ( ' _ ' ). Это я не смайлик нарисовал, а подчеркивание .

Вопрос , естественно - как это исправить?

Спасибо.


а как вы подключаетесь к ДБФ?

ЗЫЖ и приложите примерчик файла
I Have Nine Lives You Have One Only
THINK!

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 28.09.2009 (Пн) 8:44

VVitafresh писал(а):Но если это программа из темы: http://bbs.vbstreets.ru/viewtopic.php?f=5&t=40731, где
Al Prad писал(а):Программа будет работать совместно с программой сторонней компании, а они согласны только на дбф.
то конвертировать нельзя, иначе программа сторонней компании не будет корректно читать файл(ы).


Да, программа из этой темы, но ситуация складывается так, что правильные буквы становятся важнее сторонней компании, программу которой мы, похоже, вообще перестанем использовать. Кстати, у них буква i отображается нормально. Кажется, они в борланде писали.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 28.09.2009 (Пн) 9:18

HandKot писал(а):
Al Prad писал(а):Здравствуйте!

Имеем: программа на VB6 и база данных в DBF. Заполняем текстбокс текстом по украински, где имеется буква i. При переносе текста в дбф обнаруживаем, что там не i, а подчеркивание ( ' _ ' ). Это я не смайлик нарисовал, а подчеркивание .

Вопрос , естественно - как это исправить?

Спасибо.


а как вы подключаетесь к ДБФ?

ЗЫЖ и приложите примерчик файла



Для подключения использую элемент DATA. Свойство Connect ставлю dBASE 5.0;.

При запуске формы:

Код: Выделить всё
DataAvto.DatabaseName = AvtoVigruzkaDBPath
DataAvto.RecordSource = "SELECT * FROM " & TableNameAvto
DataAvto.Refresh


Файл положил сюда http://www.sharemania.ru/0134520
Почему-то за неделю использования он разросся до 3 МБ, хотя там 15 записей...

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Re: Проблема с украинской буквой i

Сообщение VVitafresh » 28.09.2009 (Пн) 13:16

Посмотри каким-нибудь просмотрщиком dbf-файлов (DBFNavigator,BDBF,DBU и т.п.) и убедишься, что все твои 1104 записи на месте -- отсюда и размер. Записи лишь помечены к удалению, чтобы их реально удалить нужно использовать метод PACK (Сжать).

P.S. Элементом Data не пользуюсь.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Проблема с украинской буквой i

Сообщение HandKot » 28.09.2009 (Пн) 13:20

элементом ДАТА тоже не пользуюсь и негде проверить,
но всё же попробуйте в элемент ДАТА подставить такую строку подключения

Код: Выделить всё
"Provider=vfpoledb;Data Source=Путь_к_файлу;Extended Properties=dBASE IV;User ID=Admin;Password=;"


Почему-то за неделю использования он разросся до 3 МБ, хотя там 15 записей...

вообще-то их там 1104, просто все, кроме 15, помечены как удаленные
I Have Nine Lives You Have One Only
THINK!

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 28.09.2009 (Пн) 15:56

HandKot писал(а):элементом ДАТА тоже не пользуюсь и негде проверить,
но всё же попробуйте в элемент ДАТА подставить такую строку подключения

Код: Выделить всё
"Provider=vfpoledb;Data Source=Путь_к_файлу;Extended Properties=dBASE IV;User ID=Admin;Password=;"


Почему-то за неделю использования он разросся до 3 МБ, хотя там 15 записей...

вообще-то их там 1104, просто все, кроме 15, помечены как удаленные


Для этого должен быть установлен vfp драйвер?
Да и не вижу я что-то для Data свойства Connectionstring...

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Проблема с украинской буквой i

Сообщение HandKot » 29.09.2009 (Вт) 7:25

Al Prad писал(а):Для этого должен быть установлен vfp драйвер?

разумеется. скопировать пару файлов в system32

Al Prad писал(а):Да и не вижу я что-то для Data свойства Connectionstring...

а как Вы указываете источник данных?

Al Prad 25.09.2009 (Пт) 14:46 писал(а):

Денис писал(а):
Al Prad писал(а):
А можно кодировку как-то поменять?

Ну да. Указать кодировку в строке подключения.


Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;

А где тут кодировку указывать?
I Have Nine Lives You Have One Only
THINK!

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 29.09.2009 (Вт) 9:01

HandKot писал(а):
Al Prad писал(а):Для этого должен быть установлен vfp драйвер?

разумеется. скопировать пару файлов в system32

Al Prad писал(а):Да и не вижу я что-то для Data свойства Connectionstring...

а как Вы указываете источник данных?

Al Prad 25.09.2009 (Пт) 14:46 писал(а):

Денис писал(а):
Al Prad писал(а):
А можно кодировку как-то поменять?

Ну да. Указать кодировку в строке подключения.


Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;

А где тут кодировку указывать?


Сначала определяю свойство connect (см картинку), а потом при загрузке формы
Код: Выделить всё
DataAvto.DatabaseName = AvtoVigruzkaDBPath ' AvtoVigruzkaDBPath = путь к папке с файлами
DataAvto.RecordSource = "SELECT * FROM " & TableNameAvto 'TableNameAvto = имя дбф файла
DataAvto.Refresh
У вас нет доступа для просмотра вложений в этом сообщении.

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Re: Проблема с украинской буквой i

Сообщение HandKot » 29.09.2009 (Вт) 10:29

мда, такого объекта я не видел
тогда попробуйте руками строку подключения поменять (Вы же понимали разговор о ней), может поможет
или придется использовать другой способ доступа к данным
I Have Nine Lives You Have One Only
THINK!

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Re: Проблема с украинской буквой i

Сообщение Al Prad » 29.09.2009 (Вт) 13:22

HandKot писал(а):мда, такого объекта я не видел
тогда попробуйте руками строку подключения поменять (Вы же понимали разговор о ней), может поможет
или придется использовать другой способ доступа к данным


Попробовал Adodc. Строку подключения брал на http://www.connectionstrings.com .
Что-то у меня Adodc с дбф не дружит. При попытке update пишет "querry is too complex" (в другом месте она у меня работала нормально с мдб). Кроме того , я использую True DBGrid, которая не подключается к Adodc, так что adodc - не мой выбор.
Пожалуй, придется перейти с дбф на мдб. Буква i заносится нормально.


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

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

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

    TopList