Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ? / 20 сообщений из 20, страница 1 из 1
01.04.2014, 15:52
    #38602039
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
hi all

Жила-была таблица, в которой варчар-поле объявлено как:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE DOC_LIST (
    ID             DM_IDS NOT NULL /* DM_IDS = BIGINT NOT NULL */,
    DOC_NUMB       DM_NUMS /* DM_NUMS = VARCHAR(20) NOT NULL */,
    OPTYPE_ID      DM_IDS /* DM_IDS = BIGINT NOT NULL */,
    . . .
);

- и при этом:
Код: sql
1.
2.
3.
4.
5.
CREATE DOMAIN DM_NUMS AS 
VARCHAR(20) 
CHARACTER SET UTF8 
NOT NULL 
COLLATE NUMS_COLL 


Каждый раз, когда делается селект из этой таблицы, ИБЭ выводит данные из doc_numb с каким-то диким избытком по ширине (см аттач). Да, я делаю, конечно же, сразу Ctrl-[+] для автовыравнивания.
Но:
1) ИБЭ помнит это только до момента селекта из другой таблицы; как только я сделаю "другой селект", а затем снова вернуть к doc_list'у, - опять надо жмякать Упр-Плюс.
2) Откудова он вообще берёт размер графы для показа ? Не умножает ли он декларированную ширину (varchar( 20 )) на число байтов в кодировке (4), дабы получить ширину в октетах ? Ибо что-то очень похоже, судя по видимому размеру...
...
Рейтинг: 0 / 0
01.04.2014, 16:00
    #38602056
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоид,

Вполне может быть, что грид инициализирует ширину столбца по размеру поля в пересчете на байты.
...
Рейтинг: 0 / 0
01.04.2014, 16:19
    #38602091
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertВполне может быть, что грид инициализирует ширину столбца по размеру поля в пересчете на байты.А нельзя ли в далёком и светлом будущем (ввиду моратория :)) научить грид смотреть не на число октетов, на на число символов ?
...
Рейтинг: 0 / 0
01.04.2014, 17:06
    #38602150
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоид,

Короче, это в Options | Environment Options | Grid | Display formats задается.
...
Рейтинг: 0 / 0
01.04.2014, 17:21
    #38602167
NickDee
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
ТаблоидIBExpertВполне может быть, что грид инициализирует ширину столбца по размеру поля в пересчете на байты.А нельзя ли в далёком и светлом будущем (ввиду моратория :)) научить грид смотреть не на число октетов, на на число символов ?
И если число символов больше 100 (например 255, или 4096, или 32000), то не делать невменяемую ширину столбца, а ограничиться 50-100 символами :)
...
Рейтинг: 0 / 0
01.04.2014, 17:58
    #38602219
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertOptions | Environment Options | Grid | Display formats задается.там тока спиннер с надписью: "String Fields Width (chars)" c нулём.
Что значит "ноль" - брать число октетов из DDL столба ?
...
Рейтинг: 0 / 0
01.04.2014, 17:58
    #38602220
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
NickDeeИ если число символов больше 100 (например 255, или 4096, или 32000), то не делать невменяемую ширину столбца, а ограничиться 50-100 символами :)+1
...
Рейтинг: 0 / 0
01.04.2014, 18:09
    #38602230
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоидтам тока спиннер с надписью: "String Fields Width (chars)" c нулём.
Что значит "ноль" - брать число октетов из DDL столба ?

Ё-мое... Ноль значит как у тебя сейчас. Нравится, как сейчас? Тогда оставь ноль.
...
Рейтинг: 0 / 0
01.04.2014, 19:12
    #38602306
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertТаблоидтам тока спиннер с надписью: "String Fields Width (chars)" c нулём.
Что значит "ноль" - брать число октетов из DDL столба ?Ё-мое... Ноль значит как у тебя сейчас. Нравится, как сейчас? Тогда оставь ноль.Если выставить не ноль (например, 20), то эта величина перебьёт значение длины в декларации поля.
Все поля будут под одну гребёнку.
...
Рейтинг: 0 / 0
01.04.2014, 19:52
    #38602341
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоид,

Других бананьев у нас нэма.
...
Рейтинг: 0 / 0
01.04.2014, 20:36
    #38602371
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertДругих бананьев у нас нэма.ТаблоидА нельзя ли в далёком и светлом будущем <...> смотреть не на число октетов, на на число символов ?- ?
...
Рейтинг: 0 / 0
01.04.2014, 21:52
    #38602415
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
вполне бы устроило и просто запоминание последних использованных при просмотре ширин столбцов...
...
Рейтинг: 0 / 0
02.04.2014, 08:18
    #38602534
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоид,

Занудный ты... У меня тут далекое и светлое будущее уже наступило. Вчера...
...
Рейтинг: 0 / 0
02.04.2014, 09:34
    #38602597
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpert,

а что такое произошло?
...
Рейтинг: 0 / 0
02.04.2014, 09:40
    #38602601
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Симонов Дениса что такое произошло?

На 4 длину поделил ;)
...
Рейтинг: 0 / 0
02.04.2014, 19:46
    #38603484
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertНа 4 длину поделил ;)надеюсь, это только для UTF8 столбов такое деление ?
...
Рейтинг: 0 / 0
03.04.2014, 09:08
    #38603722
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertЗанудный ты... У меня тут далекое и светлое будущее уже наступило. Вчера...
. . .
На 4 длину поделил ;)Прошу прощения за назойливость, но у меня это светлое будущее до сих пор не наступает, несмотря на IBE 2014.4.1.1
Скрипт:
Код: plaintext
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.
recreate table t_utf8(
id bigint generated by default as identity primary key
,dts timestamp default 'now'
,s05 varchar(5) character set utf8
,s10 varchar(10) character set utf8
,s15 varchar(15) character set utf8
,s20 varchar(20) character set utf8 default '1234567890ABCDEFGHIJ'
);
commit;
insert into t_utf8(s05, s10, s15)
select
 rpad( '',  5, 'йцукенг' )
,rpad( '', 10, 'фывапро' )
,rpad( '', 15, 'ячсмитьбюждл' )
from rdb$formats rows 3;

insert into t_utf8(s05, s10, s15)
select
 rpad( '',  5, 'ЙЦУКЕНГ' )
,rpad( '', 10, 'ФЫВАПРО' )
,rpad( '', 15, 'ЯЧСМИТЬБЮЖДЛ' )
from rdb$formats rows 3;

commit;


recreate table t_win1251(
id bigint generated by default as identity primary key
,dts timestamp default 'now'
,s05 varchar(5) character set win1251
,s10 varchar(10) character set win1251
,s15 varchar(15) character set win1251
,s20 varchar(20) character set win1251 default '1234567890ABCDEFGHIJ'
);

commit;
insert into t_win1251(s05, s10, s15)
select
 rpad( '',  5, 'йцукенг' )
,rpad( '', 10, 'фывапро' )
,rpad( '', 15, 'ячсмитьбюждл' )
from rdb$formats rows 3;

insert into t_win1251(s05, s10, s15)
select
 rpad( '',  5, 'ЙЦУКЕНГ' )
,rpad( '', 10, 'ФЫВАПРО' )
,rpad( '', 15, 'ЯЧСМИТЬБЮЖДЛ' )
from rdb$formats rows 3;

commit;
Ввожу в SQL Editor'e:
Код: sql
1.
2.
3.
select 'utf8' c, x.* from t_utf8 x
UNION ALL
select 'win1251', x.* from t_win1251 x


И получаю тот же самый грид с "расточительно-широкими" столбами:
...
Рейтинг: 0 / 0
03.04.2014, 09:44
    #38603769
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
Таблоид,

не понятно что ты хочешь. При UNION ALL ширина столбца определяется по размеру самого большого
...
Рейтинг: 0 / 0
03.04.2014, 10:49
    #38603916
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
ТаблоидПрошу прощения за назойливость, но у меня это светлое будущее до сих пор не наступает, несмотря на IBE 2014.4.1.1


В этой версии светлое будущее уже не наступит.
...
Рейтинг: 0 / 0
03.04.2014, 12:30
    #38604098
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ?
IBExpertТаблоидПрошу прощения за назойливость, но у меня это светлое будущее до сих пор не наступает, несмотря на IBE 2014.4.1.1
В этой версии светлое будущее уже не наступит.ладно, подожду до след. билда.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Как IBE определяет отображаемую ширину в grid'e для varchar-столбов с charset UTF8 ? / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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