Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
MS Access

Программно добавить поле в DBEdit

08.02.2015, 19:50. Показов 4556. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно программно подставить поле в DBEdit? БД Access. Вот кусок кода.
Delphi
1
2
3
4
5
6
7
8
procedure TFEditTchmi.TNChange(Sender: TObject);  //FEditTchmi-это форма
begin
  if Tchm.Checked then   //Tchm-это RadioButton
  begin
    TN.DataSource := DM1.DSTchm; //TN-это DBEdit
    TN.DataField := String(TN);  //пробовал и без String, ошибка несоответствия полей
  end;
end;
Вообщем ситуёвина такая-у меня через радиобаттон должны переключаться таблицы (всего две). И в зависимости от выбранной таблицы в дбэдитах должны отображаться данные из соответствующей таблице. Также на форме есть дбгрид, так там я настроил, а с дбэдитами не могу разобраться. Такое чувство, что свойство DataField не открывается. Там, после того, как в DataSource должна открыться таблица DSTchm, появится поле TN. Вот код для дбгрида:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TFEditTchmi.TchmClick(Sender: TObject);
begin
 
if
 Tchm.Checked = true then
 DM1.ADOQueryTchm.SQL.Clear;
 DM1.ADOQueryTchm.SQL.Add('SELECT TN AS [Таб №], Name1 AS [Фамилия] FROM Tchm ORDER BY Name1');
 DBGrEditTchmi.DataSource := DM1.DSTchm; //DBGrEditTchmi-это дбгрид
 DM1.ADOQueryTchm.Open;
end;
 
procedure TFEditTchmi.TchmpClick(Sender: TObject);
begin
if
 Tchmp.Checked = true then
 DM1.ADOQueryTchmp.SQL.Clear;
 DM1.ADOQueryTchmp.SQL.Add('SELECT TN AS [Таб №], Name1 AS [Фамилия] FROM Tchmp ORDER BY Name1');
 DBGrEditTchmi.DataSource := DM1.DSTchmp;
 DM1.ADOQueryTchmp.Open;
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2015, 19:50
Ответы с готовыми решениями:

ADOQuery программно добавить поле
Привет, как можно программно добавить поле в ADOQuery к уже существующим ? чтоб указать тип Currency и тип поля калькулятор

Как программно добавить поле Lookup в ADOQuery
Здраствуйте! Помогите пожалуйста, Я выполняю запрос через компонент ADOQuery он у меня выводиться в DBGrid , выводятся три колонки,...

Программно добавить поле типа "дата" в таблицу mdb
Как программно добавить поле типа "дата" в таблицу mdb? Нужно, чтобы формат был краткий, типа "14.05.2015". Можно...

36
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
08.02.2015, 20:09
свойство DataField это название поля в соответствующем наборе данных. Для твоих запросов это [Таб №] или Фамилия. Но лучше использовать имена латиницей и без пробелов. А заголовки в DBGrid'e настроить через св-во TDBGrid.Columns.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
08.02.2015, 20:56  [ТС]
У меня же написано, что TN это и есть имя поля, которое и должно отображаться в одноименном Дбэдите

Добавлено через 3 минуты
Меня дбгрид вообще не интересует, он работает, его код я для примера привел. А вот с дбэдитом проблема.
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
08.02.2015, 22:44
Цитата Сообщение от Vongud Посмотреть сообщение
У меня же написано, что TN это и есть имя поля, которое и должно отображаться в одноименном Дбэдите
А у меня написано, что от тебя требуется имя поле в наборе данных, к которому ты подключаешь DBEdit, А это не твоя таблица, а запрос
SQL
1
'SELECT TN AS [Таб №], Name1 AS [Фамилия] FROM Tchm ORDER BY Name1'
А в нем ты сам установил псевдонимы для имен полей.

Добавлено через 51 секунду
Цитата Сообщение от Vongud Посмотреть сообщение
Меня дбгрид вообще не интересует
Меня тоже.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
09.02.2015, 00:07  [ТС]
Этот код, где я установил псевдонимы-для дбгрида, вообще не смотрите на него. Он для примера. А проблема в первом куске кода-он как раз для дбэдита. И когда я открываю таблицу через датасет, в датафилд как раз высвечиваются имена полей (а не псевдонимы). В частности и TN. Как время будет скину скрин с описанием.
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.02.2015, 00:26
Цитата Сообщение от Vongud Посмотреть сообщение
Этот код, где я установил псевдонимы-для дбгрида, вообще не смотрите на него. Он для примера.
И нафига приводить пример не имеющий отношения к вопросу? Чтобы на него никто не смотрел?
Цитата Сообщение от Vongud Посмотреть сообщение
И когда я открываю таблицу через датасет
Тогда пиши
Delphi
1
TN.DataField := 'TN';
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
09.02.2015, 03:09  [ТС]
Так тоже почему-то не работает. И без кавычек пробовал и по всякому уже. Хотя с точки зрения логики должно работать. То несовместимость типов (стринг и дбедит), то ещё какая ошибка. А иногда программа компилируется, а в дбэдите пусто. Вот что не так? А тот код, что для примера, так это чтобы показать, что в нём всё работает.
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.02.2015, 03:25
Цитата Сообщение от Vongud Посмотреть сообщение
Так тоже почему-то не работает. И без кавычек пробовал и по всякому уже. Хотя с точки зрения логики должно работать. То несовместимость типов (стринг и дбедит), то ещё какая ошибка. А иногда программа компилируется, а в дбэдите пусто. Вот что не так? А тот код, что для примера, так это чтобы показать, что в нём всё работает.
Вот тогда давай ты приложишь свой проект (архивированный естественно) к своему сообщению. Чтобы уж мы (форумчане) видели твой реальный код, а не примеры с дуба рухнувшие/ взятые/придуманные.
Иначе я просто не понимаю что из моих ответов у тебя может не работать!

P.S. Приложить проект к сообщению поможет кнопка "Расширенный режим" под окном для ввода сообщения.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
09.02.2015, 12:43  [ТС]
Вот весь проект. Меня интересуется форма редактирования сотрудников. Первая форма -> ТЧМИ -> Редактировать. И там дбэдиты. они не подписаны пока, но первый-это и есть пресловутый TN). Если с ним разберусь, то и остальные пойму.
Миниатюры
Программно добавить поле в DBEdit  
Вложения
Тип файла: rar Project.rar (1.63 Мб, 10 просмотров)
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.02.2015, 12:58
Ну что же ты пудришь мне мозги
UnitEditTchmi.pas
if Tchm.Checked = true then
TN.DataSource := DM1.DSTchm;
TN.DataField := 'TN'; // Вот здесь проблема
end;
DM.dfm
object DSTchm: TDataSource
DataSet = ADOQueryTchm
UnitEditTchmi.pas
DM1.ADOQueryTchm.SQL.Add('SELECT TN AS [Таб №], Name1 AS [Фамилия]FROM Tchm ORDER BY Name1');
Вот измени запрос так
Delphi
1
DM1.ADOQueryTchm.SQL.Add('SELECT TN , Name1 AS [Фамилия]FROM Tchm ORDER BY Name1');
И все получится.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
09.02.2015, 16:55  [ТС]
Ну и что измениться должно? Разве что в DBGride псевдоним пропал. А мне нужно, чтобы в DBEDITE отображались данные из той таблицы, в зависимости от токо, какой переключатель установлен. DBGrid итак работает. Вот здесь проблема:
Delphi
1
2
3
4
if Tchm.Checked = true then
TN.DataSource := DM1.DSTchm;
TN.DataField := 'TN'; // Вот здесь проблема
end;
Добавлено через 5 минут
Поле TN почему то как-будто не выбирается из DataField

Добавлено через 3 часа 39 минут
Может DataSource не устанавливается? Как тогда установить правильно? Ведь только после этой операции будет возможно в DataField выбрать необходимое поле. (в моём случае TN)
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
09.02.2015, 17:20
Цитата Сообщение от Vongud Посмотреть сообщение
А мне нужно, чтобы в DBEDITE отображались данные из той таблицы
Так и подключай его тогда к таблице! А ты его подключаешь к запросу.
Delphi
1
TN.DataSource := DM1.DSTchm; //привязали TN к источнику данных DM1.DSTchm
Delphi
1
2
object DSTchm: TDataSource
  DataSet = ADOQueryTchm     // А источник данных DSTchm привязан к ADOQueryTchm
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
10.02.2015, 18:44  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Так и подключай его тогда к таблице! А ты его подключаешь к запросу.
Цитата Сообщение от northener Посмотреть сообщение

Delphi
1
2
object DSTchm: TDataSource
* DataSet = ADOQueryTchm * * // А источник данных DSTchm привязан к ADOQueryTchm
Чё-т не понял, где именно прописать данный код?
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.02.2015, 19:35
Цитата Сообщение от Vongud Посмотреть сообщение
Чё-т не понял, где именно прописать данный код?
Он сам пропишется куда надо (в dfm-файл), когда ты выберешь в инспекторе объектов для источника данных DSTchm свойство DataSet и назначишь ему нужный TTable.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
10.02.2015, 20:01  [ТС]
У меня там в DataSet для DSTchm выбран ADOQueryTchm. Почему же при переключении радиокнопок не меняется в DataSource таблица? И вообще такое чувство, что и не назначается оная

Добавлено через 4 минуты
Вот чё для проверки делал
Delphi
1
2
3
4
5
6
7
procedure TFEditTchmi.TNChange(Sender: TObject);
begin
 if Tchm.Checked = true then
  begin
    ShowMessage('Источник не DSTchm');
  end;
end;
Checked у меня назначено в одноимённом свойстве радиобаттона

Добавлено через 18 секунд
Да, результата никакого
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.02.2015, 20:14
Цитата Сообщение от Vongud Посмотреть сообщение
У меня там в DataSet для DSTchm выбран ADOQueryTchm. Почему же при переключении радиокнопок не меняется в DataSource таблица?
А откуда там вообще возьмется хоть какая-то таблица если ты сам её не подключил?
Тем более если учесть то, что у тебя в проекте вообще нет ни одной таблицы. Только два TADOQuery. Вот ты и переключаешь свой DBEdit с одного на другой.

Добавлено через 44 секунды
Цитата Сообщение от Vongud Посмотреть сообщение
Да, результата никакого
Попроси помощи у автора этого кода. Авось он поможет.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
10.02.2015, 21:02  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Вот ты и переключаешь свой DBEdit с одного на другой.
Вот это мне и нужно.
А при подключении ADOQuery и подключается таблица (пусть и запрос из неё, что даже ещё лучше).
Цитата Сообщение от northener Посмотреть сообщение
Попроси помощи у автора этого кода. Авось он поможет.
Ты здесь, смотрю, самый умный-
Цитата Сообщение от northener Посмотреть сообщение
Вот измени запрос так
Код Delphi
1
DM1.ADOQueryTchm.SQL.Add('SELECT TN , Name1 AS [Фамилия]FROM Tchm ORDER BY Name1');
Добавлено через 5 минут
см. название темы

Добавлено через 10 минут
Вот доделал. Почему то не работает
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TFEditTchmi.TNChange(Sender: TObject);
begin
 if Tchm.Checked = true then
begin
TN.DataSource := DM1.DSTchm;
end
else if  TN.DataSource <> DM1.DSTchm
  then
  begin
    ShowMessage('Источник не DSTchm');
  end;
end;
Добавлено через 8 минут
почему не выскакивает сообщение?

Добавлено через 3 минуты
В DBEdit ничего не вводится-значит не подключена таблица. Таблица не подключится, пока не подключить DataSource. Как тогда подключить DataSource?
Delphi
1
DataSource := DM1.DSTchm;
Не так что-ли? Может по другому как-то?

Добавлено через 41 секунду
DM1-это просто модуль данных
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.02.2015, 21:48
Цитата Сообщение от Vongud Посмотреть сообщение
В DBEdit ничего не вводится-значит не подключена таблица. Таблица не подключится
Потому что её никто и не подключает. Подключается запрос, а в нем нет поля с именем 'TN'.
0
 Аватар для Vongud
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 39
10.02.2015, 22:51  [ТС]
Но здесь то это поле есть. Я, кстати, теперь и через свойства выставляю запрос и в DataField выбираю это поле-пишет, что его не существует. Вообще непонятно. Где-то чего-то наломал. Буду рассматривать
Изображения
 
0
пофигист широкого профиля
4770 / 3205 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
10.02.2015, 23:18
Цитата Сообщение от Vongud Посмотреть сообщение
Но здесь то это поле есть
Где здесь? Это какой компонент открыт в инспекторе объектов? Если это тот самый TN, то очевидно на сей момент в ADOQueryTchmp открыт запрос
SQL
1
SELECT * FROM Tchmp
а в этом запросе такое поле как раз есть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2015, 23:18
Помогаю со студенческими работами здесь

Как мне программно добавить поле в таблице и сделать поле ключевым
1. Как мне программно добавить поле в таблице и сделать поле ключевым? 2. Как программно организовать связь данных между двумя таблицами?

DBGrid. DBEdit вывод информации в поле Edit или DBEdit
Доброго времени суток уважаемые знатоки! Обращаюсь к вам за помощью так как сил и идей моих больше нету. Кароче создал я базу на...

Программно добавить значение в поле ввода
Здравствуйте. Подскажите пожалуйста, как программно добавить значение в поле ввода, которое имеет агрегатный тип &quot;Перечисление&quot;...

Программно добавить вычисляемое поле в DBGrid
Есть БД(Paradox), TTable, TDataSource и TDBGrid. БД к таблице подключается программно (через сессию). И вот возникла нужда добавить...

Программно добавить значение в html поле элемента
Добрый вечер. Имеется следующий код, который должен добавлять в поле CML2_ATTRIBUTES html код, но он не работает. Подскажите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru