Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2019, 23:55   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию DataSet.Locate с преобразованием числового поля в стринговое не работает

Доброе время суток,
В БД firebird поле «NUMERAL_DSTU» integer, в нем числа например «302095».
В dataset, сделал вычисляемое поля типа string, и присвоил ему
Код:
ibdsDSTU.FieldByName('CALC_NUMBER_STRING').AsString := ibdsDSTU.FieldByName('NUMERAL_DSTU').AsString;
Делаю locate
Код:
DM.ibdsDSTU.Locate('CALC_NUMBER_STRING', '3020', [loPartialKey]);
Всеравно не позицонируется. Все получается только при вводе полного значения, т.е. «302095»
У других пишут выходит.

Где ошибка?
Заранее спасибо за ответ

P.S.
вообще пишут, что должно работать, напимер в https://delphi.fandom.com/wiki/TLocateOptions_Type

Последний раз редактировалось KBO; 12.09.2019 в 00:10.
KBO вне форума Ответить с цитированием
Старый 12.09.2019, 06:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сделай в запросе вычисляемое поле, а не на клиенте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.09.2019, 07:19   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сделай в запросе вычисляемое поле, а не на клиенте
но подождите, если например NUMERAL_DSTU это поле типа integer,
то запросом

Код:
select NUMERAL_DSTU, NUMERAL_DSTU as ND  from DSTU
да, я сделаю ND - вычисляемое, но какого оно будет типа, наверно тоже integer, а мне нужно string, т.к. в поле типа integer, я по части значения не найду нужную строку, я вообще ничего не найду
KBO вне форума Ответить с цитированием
Старый 12.09.2019, 07:45   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

cast(NUMERAL_DSTU AS varchar(10)) AS ND
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.09.2019, 08:24   #5
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
cast(NUMERAL_DSTU AS varchar(10)) AS ND
Ага, еще раз спасибо. Помогло.
А что всетаки с вычисляемым полем в dataset - НЕ ТАК?

Последний раз редактировалось KBO; 12.09.2019 в 08:30.
KBO вне форума Ответить с цитированием
Старый 12.09.2019, 08:39   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Потому что это виртуальное поле и его значение определяется при перемещении указателя записи, тогда и срабатывает OnCalcField. Locate просто перебором ищет в буфере не меняя в процессе указатель и просто не видит значений. По идее вообще должно на ошибку вывалиться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После добавления поля в dataset, access… при скроле KBO Помощь студентам 3 09.02.2017 18:04
Тип поля MEMO в Dataset User_IR_An Помощь студентам 2 13.04.2014 19:28
маска для числового поля adoquery haker270 БД в Delphi 3 18.11.2012 22:36
Обязательно ли создавать поля Dataset? DeveloPerchik БД в Delphi 4 15.08.2012 12:05
не работает Locate SERG1980 БД в Delphi 9 26.03.2009 17:04