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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2011, 12:52   #1
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию DBEdit.EditText как изменить программно?

Добрый день!
На форме ввода два компонента DBEdit. В один значения вводятся руками, в другой значения вносятся программно, т.е. свойству DBEdit.EditText присваивается некое значение в результате работы программы. Оба DBEdit-а привязаны к полям базы MS Access (ADOConnection, ADOQuery, DataSource, DBGrid). Вопрос в следующем: DBEdit, в который значения вводятся руками, передаёт значения в базу в закреплённое за ним поле; другой компонент, в котором DBEdit.EditText изменяется программно, значения в базу не передаёт. В чём причина?
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 14:44   #2
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

Может кто поймёт мои хотелки высылаю кусок кода
Код:
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
  DBEdit1.EditText:=Edit1.Text;
  DBEdit4.EditText:=MaskEdit1.Text;
  DBEdit5.EditText:=MaskEdit2.Text;
  close;
end;
Объясню почему такой код. В DBEdit1 вводится короткая целочисленная величина, которую лучше регулировать через UpDown. Но UpDown не привязывается к DBEdit. Поэтому DBEdit1.Visible я сделал false, т.е. невидимым, а на его место я разместил Edit c UpDown. Т.е. технология такая: UpDown-ом я подгоняю необходимое значение в Edit, которое в означенном коде должно по моей хотелке передаваться в DBEdit1, а DBEdit1 его в свою очередь должен отправлять в базу. С DBEdit4 и DBEdit5 такая же петрушка. Туда нужно вводить дату, которую собственно нужно брать из MaskEdit.
Связь с БД через ADOConnection, ADOQuery, DataSource, DBGrid

У нас принято оформлять код специальным тегом. Кнопка #. Модератор

Последний раз редактировалось dr.Chas; 16.07.2011 в 16:12.
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 14:56   #3
BoozZzilla
Форумчанин
 
Аватар для BoozZzilla
 
Регистрация: 26.01.2009
Сообщений: 125
По умолчанию

Я боюсь конечно сморозить глупость. Но у этого вашего DBEdit есть свойство какое нибудь что то типа changed или метод OnChange
он же в какой то момент передаёт эти данные, попробуйте посмотреть этот метод и ручками его запустите после передачи значения.

вот мне делать нечего...
http://www.sql.ru/forum/actualthread.aspx?tid=738759

Последний раз редактировалось BoozZzilla; 12.07.2011 в 15:22.
BoozZzilla вне форума Ответить с цитированием
Старый 12.07.2011, 15:32   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

прямое изменение поля в наборе данных
Код:
adoquery.fieldbyname('поле').value:=updown.value;
это можно повесить в события Updoun вместо ваших
edit1.Text:=
и никаких проблем.
не нужно прятать DBedit не нужен обычный edit
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.07.2011 в 15:47.
evg_m на форуме Ответить с цитированием
Старый 12.07.2011, 16:18   #5
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

Я извиняюсь за тупость, но как применить ваш ответ в моей конкретной ситуации: файл БД Zayavki.mdb, таблица в нём "Заявки", поле в таблице "Номер"?

Код:
adoquery.fieldbyname('поле').value:=updown.value;

Последний раз редактировалось dr.Chas; 16.07.2011 в 16:13.
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 16:28   #6
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

Пытался поэкспериментировать - не получается:

Код:
Form2.ADOQuery1.FieldByName('Номер'):='25';
компиляция не проходит

Последний раз редактировалось dr.Chas; 16.07.2011 в 16:14.
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 16:29   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

можно так
Код:
DBedi1.Field.Value:=updown1.value;
можно так
Код:
ADOquery1.fieldbyname(DBedit1.Fieldname).AsInteger:=updown1.value;
можно так
Код:
ADOquery1.Fieldbyname('<здесь указать нужное имя поля>').asVariant:=updown.Value;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 12.07.2011 в 16:33.
evg_m на форуме Ответить с цитированием
Старый 12.07.2011, 16:46   #8
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

Мой Delphi 7 не знает такого свойства у UpDown как Value. Компилятор натыкается на UpDown.Value и всё
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 16:51   #9
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

попробовал такое:
Form2.ADOQuery1.Fieldbyname('Номер' ).asVariant:=Form3.Edit1.Text
Результат на скрине
Изображения
Тип файла: jpg ris.JPG (15.6 Кб, 211 просмотров)
Red_Garry вне форума Ответить с цитированием
Старый 12.07.2011, 16:59   #10
Red_Garry
Пользователь
 
Регистрация: 03.10.2010
Сообщений: 55
По умолчанию

попробовал все варианты... Причём после равно ставил просто константы, например, :='22'. Результат тот же что на картинке
Red_Garry вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить программно фрагмент html кода? Arsenx777 Работа с сетью в Delphi 4 25.06.2011 16:43
Как программно изменить CheckBox в файле Excel Sharmon Общие вопросы Delphi 10 23.06.2011 15:02
Как программно изменить положение картинки? quarty Общие вопросы Delphi 2 03.01.2011 00:55
Как программно изменить наличие Series gs199 Компоненты Delphi 1 27.04.2010 10:11
Как программно изменить цвет кнопки в Delphi Source-of-life Помощь студентам 8 13.04.2010 21:18