вопрос по PostgreSQL
Модератор: Модераторы
Re: вопрос по PostgreSQL
Скачала заплатку pgconnection, скопировала файл, перекомпилировала Лазарь и всё равно и в DBGRid, и в SQLQury.SQL при просмотре результатов запроса не все записи с кириллицей отображаются правильно. В PGAdmin III SELECT возвращает все строки корректно. Кодировка базы в Postgres UTF8.
Некоторые записи показываются пустыми, хотя там есть данные, некоторые обрезаются, а в некоторые добавляются дополнительные символы. Что я делаю неправильно?
Некоторые записи показываются пустыми, хотя там есть данные, некоторые обрезаются, а в некоторые добавляются дополнительные символы. Что я делаю неправильно?
Re: вопрос по PostgreSQL
Это ошибка не Lazarus, а FPC. Поэтому перекомпилировать нужно именно его. Для этого Вам нужно скачать исходники fpc.
Re: вопрос по PostgreSQL
Самое забавное, что увеличив в Postgres длину поля на 5 символов всё отлично отображается. Хотя в базе-то хватало и так символов.
Re: вопрос по PostgreSQL
Я выше по топику пояснял эту проблему. Это в pgconnection выделяется буфер по количеству символов, а не по количеству байт, а UTF8 имеет два байта на символ, вот и получается, что половина кирилицы обрезается. Латинские символы и цифры проходят правильно.
Добавлено спустя 13 минут 57 секунд:
исходники fpc лучше брать из svn :
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc-2.3.x
здесь вносятся все последние правки.
Оригинальный файл fpc-2.3.x/packages/fcl-db/src/sqldb/postgres/pqconnection.pp переименуйте, а вместо него запишите патченый.
Затем зайдя в каталог fpc-2.3.x, наберите команду make clen all. Если не найдет компилятор, то наберите make clean all PP=ПУТЬ_К_КОМПИЛЯТОРУ/ФАЙЛ_КОМПИЛЯТОРА.
После завершения компиляции, инсталлируем новую версию:
make install
только после компиляции fpc перекомпилируем Lazarus. Проблема исчезнет.
Постарайтесь освоить этот процесс, это поможет в будущем легко вносить правки и изменения.
Добавлено спустя 13 минут 57 секунд:
исходники fpc лучше брать из svn :
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc-2.3.x
здесь вносятся все последние правки.
Оригинальный файл fpc-2.3.x/packages/fcl-db/src/sqldb/postgres/pqconnection.pp переименуйте, а вместо него запишите патченый.
Затем зайдя в каталог fpc-2.3.x, наберите команду make clen all. Если не найдет компилятор, то наберите make clean all PP=ПУТЬ_К_КОМПИЛЯТОРУ/ФАЙЛ_КОМПИЛЯТОРА.
После завершения компиляции, инсталлируем новую версию:
make install
только после компиляции fpc перекомпилируем Lazarus. Проблема исчезнет.
Постарайтесь освоить этот процесс, это поможет в будущем легко вносить правки и изменения.
Re: вопрос по PostgreSQL
Nadin писал(а):Самое забавное, что увеличив в Postgres длину поля на 5 символов всё отлично отображается. Хотя в базе-то хватало и так символов.
Nadin предлагаю пока не заморачиватся на этой проблеме делайте пока для рускоязычных полей длину поля умноженую на 2 , если вы используете тип varchar он все равно упаковывается и не будет занимать больше места в файлах таблицы чем по физической длине конкретно взятой строки.
Re: вопрос по PostgreSQL
Спасибо за ответы! Просто для поля, хранящего значения "М" и "Ж" пришлось сделать величину поля 2 символа, а не один. Я переписываю свой давний проект с VB6 база в MS Access на Lazarus и база на Postgres. Проект с кучей форм и таблиц много всяких. Так что вопросов будет много ещё.
Теперь осталось ещё с выводом в Open Office разобраться. Из VB6 я сделала без проблем, а вот в Lazaruse придётся помучаться, судя по ответам на этом форуме.
Re: вопрос по PostgreSQL
Nadin
Здесь один человек предлагал компонент, который делает отчеты в файл OpenOffice Calc. Поищите поиском...
Здесь один человек предлагал компонент, который делает отчеты в файл OpenOffice Calc. Поищите поиском...
Re: вопрос по PostgreSQL
Nadin писал(а):Просто для поля, хранящего значения "М" и "Ж" пришлось сделать величину поля 2 символа, а не один.
могла бы в Логику перегнать тут то всего 2 значения или мужчина или женщина (ну если конечно не учитывать извратов запада)) )
Re: вопрос по PostgreSQL
Если бы дело было только в вопросе выбора пола.
У меня же полно других символьных полей.
Re: вопрос по PostgreSQL
Nadin писал(а):Если бы дело было только в вопросе выбора пола.У меня же полно других символьных полей.
ну я пока эту дыру заляпал удвоением типа varchar , физически риска нету благо этот тип только ограничивается цифрой максимума, но физически строки упаковываются так что база не распухнет
-
Андрей Варкентин
- новенький
- Сообщения: 21
- Зарегистрирован: 17.09.2010 11:56:14
Re: вопрос по PostgreSQL
Господа, у меня такая же проблема с DBGrid'ом, только подключаюсь к SQLite3 компонентом TSQLite3Connection из вкладки SQLdb. Кодировку использую UTF-8, лазарь версии 0.29.27526, fpc 2.4.3. Может в fpc 2.4.0 эта проблема отсутствует? Есть ли вариант решения проблемы без удвоения символьных полей в базе? Кто и как решает эту проблему?
Если есть решение - ткните меня лицом.
Если есть решение - ткните меня лицом.
Re: вопрос по PostgreSQL
Андрей Варкентин писал(а):Господа, у меня такая же проблема с DBGrid'ом, только подключаюсь к SQLite3 компонентом TSQLite3Connection из вкладки SQLdb. Кодировку использую UTF-8, лазарь версии 0.29.27526, fpc 2.4.3. Может в fpc 2.4.0 эта проблема отсутствует? Есть ли вариант решения проблемы без удвоения символьных полей в базе? Кто и как решает эту проблему?
Если есть решение - ткните меня лицом.
Дык предлагаю вообще не использовать ограничение по размеру, думаю на скорости это не отразится во всяком случае по моим тестам даже чуток быстее стало, единственный момент это ширина колонок грида по дефолту будут самыми большими, но у меня полюбому была надобность для каждого пользователя держать персональные настройки поэтому ити данные всегда переопределялись в зависимости от предпочтений конкрретного юзверя))
-
Андрей Варкентин
- новенький
- Сообщения: 21
- Зарегистрирован: 17.09.2010 11:56:14
Re: вопрос по PostgreSQL
grigoreo, спасибо за совет. Действительно данный способ работает нормально.
Re: вопрос по PostgreSQL
Народ пожалуйста напишите как сделать селект и инсерт в постгрес с помощью зеоса на лазаре уже 2-ой день бьюсь ничего не получается, пишет bookmark was not found, непонятно вообще причем там букмарк, это происходит прилюбых действиях опен или коннект, буду очень благодарен если кто нибудь вышлет рабочий пример на delphiec90@mail.ru
Re: вопрос по PostgreSQL
delphiec
Zeos какой версии?
Zeos какой версии?
