Мемо поле
Модераторы: m0p3e, edward_K, Модераторы
Мемо поле
Не подскажите как мемо поле в галактике (характеристика ОС в ИК) т-sql -ем нормально вытащить в запросе?
ВБР РУЛИТ)))ИС3
Re: Мемо поле
Кодировка в "Галактике" - 866.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Мемо поле
ну тут вы правы на 30%.В MS SQL и в oracle может быть и 1251 или национальная. Для данного случая интересно иероглифами выводиться только мемополе или наименование ос тоже? Если да то либо попробуйте шрифт terminal либо покопайтесь в настройке вывода вашей СУБДRAJAH писал(а):Кодировка в "Галактике" - 866.
Re: Мемо поле
только мемо поле у меня иероглифами выводится.visual studio у меня не поддерживает терминал.
ВБР РУЛИТ)))ИС3
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Мемо поле
Тут тогда дело в том, что галка данные в обычных таблах может хранить в 1251, а при отображении, выводе в отчеты и при вводе мемо полей использует 866.
Вариант написать функцию в MSSQL для преобразования
Здесь для VB
http://www.gotdotnet.ru/forums/4/102961/
Вот простейшая для галки
Вариант написать функцию в MSSQL для преобразования
Здесь для VB
http://www.gotdotnet.ru/forums/4/102961/
Вот простейшая для галки
Код: Выделить всё
const
ansistr='╕щЎєъхэу°∙чї·Ї√тряЁюыфц¤ ўёьшЄ№с■и╔╓╙╩┼═├╪┘╟╒┌╘█┬└╧╨╬╦─╞▌▀╫╤╠╚╥▄┴▐' ;
oemstr ='ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ' ;
end ;
Function AnSiOem(wstr:string) : string ;
var w : string ;
k,i :longint ;
begin
w:='' ;
for(i:=1;i<=length(wstr);i:=i+1)
begin
k:=pos(substr(wstr,i,1),ansistr)
if k>0 then
w:=w+substr(oemstr,k,1)
else
w:=w+substr(wstr,i,1) ;
end ;
AnsiOem:=w ;
end ;
Function OemAnSi(wstr:string) : string ;
var w : string ;
k,i :longint ;
begin
w:='' ;
for(i:=1;i<=length(wstr);i:=i+1)
begin
k:=pos(substr(wstr,i,1),oemstr)
if k>0 then
w:=w+substr(ansistr,k,1)
else
w:=w+substr(wstr,i,1) ;
end ;
OemAnsi:=w ;
end ;
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Мемо поле
Пользуйтесь на здоровье .. писал 100 лет назад, так что не оптимально, но рабоче ))
Код: Выделить всё
FUNCTION fnReadMemoTXT (@NrecInf binary(8))
RETURNS VARCHAR(8000) AS
BEGIN
DECLARE @SMEM varchar(8000)
DECLARE @VMEM varchar(8000)
DECLARE @position bigint
DECLARE @ncod bigint
DECLARE @dcod bigint
SET @VMEM=(SELECT
CAST(SUBSTRING(XX$Memo.m#Data, 4,8000) AS char(8000))
FROM XX$Memo
WHERE dbo.FnNrToChBin(XX$Memo.m#nrec)=dbo.FnNrToChBin(@NrecInf) AND m#code=1705)
SET @VMEM=RTRIM(@VMEM)
SET @position = 1
SET @SMEM=''
WHILE @position <= DATALENGTH(@VMEM)
BEGIN
SET @ncod=ASCII(SUBSTRING(@VMEM, @position, 1))
IF @ncod=240 SET @dcod=ASCII('Ё')
IF @ncod=241 SET @dcod=ASCII('ё')
IF @ncod<=127 SET @dcod=@ncod
IF @ncod>127 AND @ncod<160 SET @dcod=@ncod+64
IF @ncod>159 AND @ncod<177 SET @dcod=@ncod+64
IF @ncod>220 AND @ncod<240 SET @dcod=@ncod+16
SET @SMEM=@SMEM+char(@dcod)
SET @position = @position+1
END
RETURN @SMEM
END
Время ведет!