0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14

Builder 2010 Access UnicodeString

13.09.2012, 14:33. Показов 1918. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть проект в билдере 2010. Есть таблица access в ней поле типа Text.
В билдере с таблицей связан компонент TTable.
Не получается записать в базу unicode символы (азерб. язык). Т.Е. они записываются, но на месте "спец" буков (которые отличаются от русских или англ.) записываются вопросы.
Если ручками в базу записать нужный текст, то он в базе сохраняется нормально, но прочитать его тоже никак не получается (опять вопросы).
Есть идеи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2012, 14:33
Ответы с готовыми решениями:

Отчет MS Access в с++ Builder 2010
Привет! Создал отчет в самой базе Access. Например Report1 Можно ли его вызывать средствами c++ Builder 2010. Сам проект подключен к...

Подключение к базе данных в С++ Builder 2010
Здравствуйте! У меня возникла проблема, не могу подключиться к базе данных через С++ Builder 2010. Для этого я добавил элемент...

Метод Locate не хочет работать в C++ Builder 2010
Здравствуйте! Не подскажете в чем тут проблема. Пишу код: UnicodeString s1, s2; if ((InputQuery("Ввод...

26
 Аватар для Oxotnuk
78 / 78 / 6
Регистрация: 18.06.2009
Сообщений: 533
13.09.2012, 17:19
<<Если ручками в базу записать нужный текст, то он в базе сохраняется нормально, но прочитать его тоже никак не получается (опять вопросы).

Ну так наверное дело в том,что нет такой кодировки(либо не поддерживается)?
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
13.09.2012, 21:15
Посмотреть в какой кодировке сама база.
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
14.09.2012, 09:24  [ТС]
Если в билдере вместо компонента TTable вставить компонент TADOTable, то с той же базой все получается, но переделывать на новый компонент довольно много придется и TADOTable не имеет свойства CachedUpdates, что для меня важно.

Добавлено через 1 час 26 минут
Попробовал обрабатывать запросы..Та же история. Tquery не работает, а TADOQery работает. Например:
Так не работает:
TQuery1->SQL->Clear();
TQuery1->SQL->Add(L"INSERT INTO Table_Master VALUES ('Əyilmə')");
TQuery1->ExecSQL();
А так да:
TADOQuery1->SQL->Clear();
TADOQuery1->SQL->Add(L"INSERT INTO Table_Master VALUES ('Əyilmə')");
TADOQuery1->ExecSQL();
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
14.09.2012, 11:00
Так посмотрите кодировку базы. В какой кодировке база у вас ?

Поиграйтесь с кодировкой базы. Попробуйте поставить cp1251
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
14.09.2012, 11:51  [ТС]
Так вроде база .mdb в таблицах типа text имеют кодировку unicode..Не понимаю где поменять кодировку базы
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
14.09.2012, 16:23
А если на компьютере во время копирования/ сохранения установлен азерб. язык т.е. текущий активный язык не русский и не английский, а азербайджанский. Получается сохранить ?
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
17.09.2012, 08:18  [ТС]
Не получаетсә все равно
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
17.09.2012, 10:52
А в какой момент перестало работать ? Я так понимаю, что раньше всё работало.
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
17.09.2012, 10:59  [ТС]
Раньше не было задачи хранить тексты на языках отличных от русского или английского, поэтому думаю что тоже не работало.
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
17.09.2012, 12:14
А сам проект переведён на Unicode ? Может стоит попробовать сам проект откомпилировать как Unicode и компонент нормально заработает.

Вот тут я задавал вопрос и мне помогли с переводом проекта
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
17.09.2012, 16:30  [ТС]
Перевел.. Результат тот же.. В новом пустом проекте созданном в юникоде тоже самое..видать компонент не работает должным образом просто
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
17.09.2012, 16:43
Я думаю, что проблема не с TTable, а со взаимодействием с базой. На каком-то этапе происходит перекодировка данных посылаемых в базу или считанных из неё.
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
18.09.2012, 12:47  [ТС]
В таком случае это можно настроить где-то...но вот где?
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
18.09.2012, 13:12
Можно попробовать сконвертировать строку, например, в AnsiString, перед отправкой в базу.

Собственно, напишите тут пример кода, как именно данные в базу засылаете ?
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
18.09.2012, 14:25  [ТС]
Например так:
Table1->Open();
Table1->Edit();
Table1->Append();
Table1StringField1->Value = Edit1->Text;
Table1->Post();
Table1->Close();

Добавлено через 27 минут
В билдере если зайти в sql-explorer (через компоненту TTable), то можно просматривать данные таблиц. (для которых соответственно есть пользовательский DSN), и если ручками через аксесс забить туда юникод символы, то соответственно через сам аксес они отображаются правильно, но в sql-explorer они все равно отображаются вопросами..
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
18.09.2012, 14:48
Table1StringField1->Value = Edit1->Text;

после Table1 не нужно "->" указывать ?

А если попробовать так ?
C++
1
Table1->StringField1->Value = AnsiString(Edit1->Text).c_str();
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
18.09.2012, 14:51  [ТС]
Ничего не меняется так
0
 Аватар для Kabak
159 / 145 / 14
Регистрация: 03.02.2012
Сообщений: 788
Записей в блоге: 1
18.09.2012, 15:01
Кстати, а в компоненте TTable у вас какой тип кодировки таблицы установлен в параметре Table1->TableType - ttDefault ?
0
0 / 0 / 0
Регистрация: 13.09.2012
Сообщений: 14
18.09.2012, 15:02  [ТС]
да именно так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2012, 15:02
Помогаю со студенческими работами здесь

Программное создание mdb в Builder 2010 с ADO
Информации в нете хоть и много, но она раздроблена. как в 2010 Билдере создать программно базу данных Акцесс, и в ней создать таблицу?...

Подключение к базе данных через C++ Builder 2010
Здравствуйте! Пытаюсь подключиться к базе данных base.fdb, находящейся в моей папке d:\student\my\base.fdb через код: void...

UnicodeString в с++ builder XE
чем в типе UnicodeString между собой отличаются c_str(); t_str(); w_str();?

Как использовать компоненты скомпилированные для C++ Builder 2007 в C++ Builder 2010?
Народ! Такая проблема... Есть набор компонентов т.н. Dicom VCL. Сайт производителя - http://www.medicalconnections.co.uk/. У них на...

Работа с объектами в C++ Builder 2010 (RAD 2010)
Плавно перехожу на программирование в Builder, появляется очень много вопросов по работе со стандартными встроенными объектами (формами). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru