powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компонент CurrencyEdit Поле не найдено. Как так-то?
18 сообщений из 18, страница 1 из 1
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073632
harvest6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Компонент CurrencyEdit не заполняется из запроса. Поле не найдено. Как так-то?
Ну собственно, вопрос в теме
Код: pascal
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.
procedure TFAsset_Change.DBLookupComboboxEh1Change(Sender: TObject);
begin
  DBLookupComboBoxEh1.KeyValue:=DBLookupComboBoxEh1.ListSource.DataSet.FieldByName(DBLookupComboBoxEh1.KeyField).Value;
  FDataModule.FDQueryRead.Close;
  FDataModule.FDQueryRead.SQL.Text:='select * from ASSET where AST_ID=:AstID';
  FDataModule.FDQueryRead.Params.ParamByName('AstID').AsInteger:=DBLookupComboBoxEh1.KeyValue;
  FDataModule.FDQueryRead.Open;
  sEdit1.Text:=FDataModule.FDQueryRead.FieldByName('AST_NAME').Value;
  DBLookupComboBoxEh2.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_INS_ID').Value;
  DBLookupComboBoxEh3.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_INS_ID').Value;
  DBLookupComboBoxEh4.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_CAP_ID').Value;
  DBLookupComboBoxEh5.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_CAP_ID').Value;
  DBLookupComboBoxEh6.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_BRK_ID').Value;
  DBLookupComboBoxEh7.KeyValue:=FDataModule.FDQueryRead.FieldByName('AST_BRK_ID').Value;
  FDataModule.FDQueryRead.Close;
  FDataModule.FDQueryRead.SQL.Text:='select CLD_DATE, RST_QUANTITY, RST_PRICE from REESTR join CALENDAR on RST_CLD_ID=CLD_ID where RST_AST_ID=:RstAstID and RST_OPR_ID=:RstOprID';
  FDataModule.FDQueryRead.Params.ParamByName('RstAstID').AsInteger:=DBLookupComboBoxEh1.KeyValue;
  FDataModule.FDQueryRead.Params.ParamByName('RstOprID').AsInteger:=23;
  FDataModule.FDQueryRead.Open;
  sLabel3.Caption:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').Value; //работает
  sDateEdit1.Date:=FDataModule.FDQueryRead.FieldByName('CLD_DATE').Value;
  sDateEdit2.Date:=FDataModule.FDQueryRead.FieldByName('CLD_DATE').Value;
  sCurrencyEdit1.Text:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').Value; //не работает
  sCurrencyEdit2.Text:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').Value;
  sCurrencyEdit3.Text:=FDataModule.FDQueryRead.FieldByName('RST_PRICE').Value;
  sCurrencyEdit4.Text:=FDataModule.FDQueryRead.FieldByName('RST_PRICE').Value;
end;
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073686
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле не найдено. Может А или Т русские? Попробуйте так:
Код: pascal
1.
2.
3.
4.
5.
s:string;
s:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').asString;
sLabel3.Caption:=s;
sCurrencyEdit1.Text:=s;
sCurrencyEdit2.Text:=s;
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073697
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы уверены, что нужно писать в sCurrencyEdit1.Text, а не в sCurrencyEdit1.Value ?
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073699
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
harvest6
Компонент CurrencyEdit
Проверь его класс, не data-aware ли
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073710
harvest6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bk0010
Может А или Т русские? Попробуйте так:

Такая же ошибка

DimaBr
Вы уверены, что нужно писать в sCurrencyEdit1.Text, а не в sCurrencyEdit1.Value ?

Value - численное значение Text.
Пробовал и так, и так... результат тот же

ma1tus
Проверь его класс, не data-aware ли

Можно подробней?
В этом случае тоже поле не найдено:
Код: pascal
1.
2.
s:string;
s:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').asString;



Вот такой вариант работает:
Код: pascal
1.
2.
3.
sLabel3.Caption:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').Value;
sCurrencyEdit1.Text:=sLabel3.Caption;
sCurrencyEdit2.Text:=sLabel3.Caption;
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073718
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
harvest6

Код: pascal
1.
2.
3.
4.
5.
s:string;
//В этом случае тоже поле не найдено:
s:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').asString;
// Вот такой вариант работает:
sLabel3.Caption:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').Value;



Попахивает пятничным троллингом
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073734
harvest6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrПопахивает пятничным троллингом
Все стер и новой написал тот же текст, чтоб возможные ошибки убрать
Этот вариант заработал
Код: pascal
1.
2.
3.
s:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').AsString;
sCurrencyEdit1.Text:=s;
sCurrencyEdit2.Text:=s;


Я хз... почему вчера выдавал ошибку.

Но вариант напрямую
Код: pascal
1.
sCurrencyEdit1.Text:=FDataModule.FDQueryRead.FieldByName('RST_QUANTITY').AsString


Поле не найдено..
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073744
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перенесите эту строчку выше
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073754
harvest6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrПеренесите эту строчку выше

Спасибо огромное, заработало.
Только в чем причина такого поведения, я не понял((
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073756
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположительно (с помощью хрустального шара), на sDateEdit1/sDateEdit2 есть обработчик события OnChange который срабатывает и закрывает(переоткрывает) датасет
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073761
harvest6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrПредположительно (с помощью хрустального шара), на sDateEdit1/sDateEdit2 есть обработчик события OnChange который срабатывает и закрывает(переоткрывает) датасет

Хрустальный шар не подвел)
Действительно, на sDateEdit1/sDateEdit2 есть обработчик события OnChange, который срабатывает и выполняет другой запрос, поэтому поле-то и не найдено.

Спасибо за пояснения.
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073803
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrВы уверены, что нужно писать в sCurrencyEdit1.Text, а не в sCurrencyEdit1.Value
.Value вообще никогда не надо писать. Надо всегда писать .AsЧтото. Иначе хрен знает что получится.
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073834
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Надо всегда писать .AsЧтото. Иначе хрен знает что получится.

Если я пишу X := Dataset['NameField'], то я делаю неправильно ?
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073873
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
kdv
Надо всегда писать .AsЧтото. Иначе хрен знает что получится.

Если я пишу X := Dataset['NameField'], то я делаю неправильно ?

Если NameField - строка и там null то будет исключение.
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40073956
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Если NameField - строка и там null то будет исключение.

А не видно что NameField в кавычках ?
А если X:Variant то какое исключение там будет ?
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40074129
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
А не видно что NameField в кавычках ?

Ок, разжую: если поле с именем "NameField" имеет тип CHAR/VARCHAR и в нём записано значение NULL, то конструкция X := Dataset['NameField'] выдаст исключение если X - строковая переменная.
DimaBr
А если X:Variant то какое исключение там будет ?

А если X: Variant, то никакого. А ты часто в приложении работаешь с вариантами в чистом виде? Его всё равно потом, скорее всего, к строке приводить придётся и если NULL не нужно обрабатывать отдельно от пустой строки, то проще сразу FieldByName().AsString использовать, ИМХО.
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40074190
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
если поле с именем "NameField" имеет тип CHAR/VARCHAR и в нём записано значение NULL, то конструкция X := Dataset['NameField'] выдаст исключение если X - строковая переменная.

В одном предложении ДВА если. Не много ли ?
alekcvp
А ты часто в приложении работаешь с вариантами в чистом виде?.

Регулярно.
alekcvp
то проще сразу FieldByName().AsString использовать

AsString к какому значению приводит Null ? Как после этого отличить от Null ?
...
Рейтинг: 0 / 0
Компонент CurrencyEdit Поле не найдено. Как так-то?
    #40074331
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
AsString к какому значению приводит Null ? Как после этого отличить от Null ?

Я как бы не осуждаю использование таких конструкций, я просто говорю к каким последствиям они могут привести в неопытных руках.
Если важно отличать null от пустой строки, то да - можно использовать вариант (а можно получить ссылку на поле и проверять .IsNull).
Если же разницы нет, то проще .AsString();
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компонент CurrencyEdit Поле не найдено. Как так-то?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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