Добавление поля в курсор

Андрей8989
Дата: 20.12.2012 09:15:10
Как добавить символьное поле длиной 10 в уже существующий курсор?
Андрей8989
Дата: 20.12.2012 09:22:09
При создании с другими полями написал " " as pri поле добавилось но оно слишком маленькое :)) т. .к я формирую отчет на основании этого курсора нужно более длинное поле делать..а так как я понял создается поле типа numeric. как символьное сделать
Андрей8989
Дата: 20.12.2012 09:22:45
вопрос закрыт. получилось
mosalova
Дата: 24.01.2013 14:30:05
А у меня похожая проблема - Обрезает данные символьного поля

есть таблица таб2 с 4 полями: налномер, фамилия c(30),имя c(30),отчество c(30)

написала функцию, которая объединяет поля: фамилия,имя,отчество в одну строку

Function JoinField (lastName, firstName, fatherName) 
	LOCAL fullName as Character
	
	fullName = ALLTRIM(lastName) + ' ' + ALLTRIM(firstName) + ' ' + ALLTRIM(fatherName)
RETURN fullName


А далее выборка в курсор

SELECT налномер, JoinField (фамилия,имя,отчество) AS fio FROM tab2 INTO CURSOR FullFio


При отладке переменная fullName - содержит всю информацию, например:
АБРАМОВА НАТАЛЬЯ АЛЕКСАНДРОВНА
А после SELECT, командой BROWSE и при передаче данных в объект Grid выводится:
АБРАМОВА НАТАЛЬЯ АЛЕКСАНДР - ровно 26 символов.

Поставила перед SELECT команду
CREATE CURSOR FullFio (fio c(80), nalnom c(10))

не помогло. Подскажите, что я сделала не так?
Sergey Sizov
Дата: 24.01.2013 14:38:33
mosalova
Подскажите, что я сделала не так?
Не указали в селекте фиксированную размерность получаемого результата переменной длины. В следствие чего при нулевом прогоне селекта был выбран размер по первой попавшейся информации, которая оказалась меньше нужной.

SELECT налномер, padr(JoinField (фамилия,имя,отчество), 80) AS fio FROM tab2 INTO CURSOR FullFio

Предварительное создание курсора бессмысленно ибо курсор пересоздается.
Penner
Дата: 24.01.2013 14:41:27
fullName = padr(ALLTRIM(lastName) + ' ' + ALLTRIM(firstName) + ' ' + ALLTRIM(fatherName))
Penner
Дата: 24.01.2013 14:42:09
Penner
fullName = padr(ALLTRIM(lastName) + ' ' + ALLTRIM(firstName) + ' ' + ALLTRIM(fatherName),92)
PaulWist
Дата: 24.01.2013 14:44:04
SELECT налномер, cast(JoinField (фамилия,имя,отчество) as c(100)) AS fio FROM tab2 INTO CURSOR FullFio
mosalova
Дата: 24.01.2013 14:44:27
Sergey Sizov,

Спасибо. я сейчас пробовала вариант
SELECT налном, ALLTRIM(фамилия) + ' ' + ALLTRIM(имя) + ' ' + ALLTRIM(отчество) AS fio;
		FROM таб2 INTO CURSOR FullFio


и сработало нормально, но благодаря вашему объяснению хоть поняла в чем ошибка
Redrik
Дата: 24.01.2013 21:55:45
mosalova
и сработало нормально

Слегка повезло! А в другом случае снова порежет!