Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
 Аватар для Kotta
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 21

Ado. Вывести значение в DBEdit из таблицы

29.01.2011, 02:30. Показов 7123. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Помогите пожалуйста, столкнулась с такой проблемой.
Использую Access и ADO. Есть две таблицы Заемщик и Поручители(главная и подчиненная). Использую Datasource,ADOQuery и ADOConnection. На главной форме расположены таблицы и кнопки редактирования, по которым открывается формы с добавлением, изменением,удалением записей. таблицы соединены по ключевому полю Num.

На форме добавления записей расположены Едиты. Мне необходимо чтобы при редактировании подчиненной таблицы Поручители по нажатию кнопки Добавить в поле dbEdit1 автоматически копировалось ключевое значение 'Num', которое берётся из таблицы и заносится только в главной 'Заемщик'(не счетчик). При запуске формы в Едитах отображены записи из таблицы.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.Button2Click(Sender: TObject);
begin
Form1.qry2.Insert;
with Form3.ADOQueryDob2 do begin Connection:=Form1.con1;
ADOQueryDob2.Insert;
ADOQueryDob2.FieldByName('Num').AsInteger:=DBEdit1.InstanceSize;
ADOQueryDob2.FieldByName('Data').AsString:=DBEdit2.DataField;
end;
end;
 
procedure TForm3.Button3Click(Sender: TObject);
begin
Form1.qry2.Post;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2011, 02:30
Ответы с готовыми решениями:

Не получается вывести нужное значение в dbedit
Собственно кидаю на форму сурс, адоквери, конекчусь к базе. Есть две таблицы, в первой 7 полей(TR_ID первичник, тип нумерик, TRAN_VID тип...

Поместить значение поля таблицы ADO в диалог MessageBox
Есть база данных Access, мне необходимо удалить одно из значений одной таблицы нажав на кнопку, но перед удалением удостоверится что...

Как узнать последнее значение в ключевом счетчике таблицы ADO
К примеру есть таблица. Я удалил 22ую, 32ую и последнюю - 45ую строку. Нужно получить число 46 в Label2. Есть ли более простой способ? ...

6
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
29.01.2011, 08:27
Присваивать значение вторичного ключа в подчиненной таблице лучше всего обрабатывая событие OnNewRecord. Если подчиненная таблица связана с объектом ADOQueryDob2 , то это может быть обработчик
Delphi
1
2
3
4
5
procedure Form3.ADOQueryDob2NewRecord(DataSet: TDataSet);
begin
//здесь присвоение полю вторичного ключа для 
//вставляемой записи значения ключевого поля главной таблицы
end;
0
 Аватар для Kotta
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 21
29.01.2011, 08:53  [ТС]
Да. AdoQueryDob2 находится на форме с добавлением записей и связан с Едитами и таблицей Заемщик,выводимой на главной форме, а qry2 (это AdoQuery)- связан с главной таблицей.

вот в том то вся и проблема как присвоить полю значение ключа. может присвоение прописать в коде самого TBEdit-а. или там же в моем коде? само поле сделала нередактируемым, т.к. его не нужно изменять в подчиненной. как прописать само присвоение без дополнительных событий,не понимаю. может через запрос как-то?
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
29.01.2011, 09:12
Цитата Сообщение от Kotta Посмотреть сообщение
как прописать само присвоение без дополнительных событий,не понимаю. может через запрос как-то?
Да, какая разница, что и на какой форме находится. Через Uses обеспечивается прозрачный доступ к формам без особых проблем. Поясню на примере. Пусть главная форма MAINFORM и на ней объект qry2 (если я правильно понял, это и есть главная таблица). У набора qry2 есть ключевое поле, допустим - ID.
На другой форме Form3 Ваша AdoQueryDob2, связанная с подчиненной таблицей. Тогда пишете обработчик
Delphi
1
2
3
4
5
procedure Form3.ADOQueryDob2NewRecord(DataSet: TDataSet);
begin
  ADOQueryDob2.FieldByName('ЗДЕСЬ ИМЯ ПОЛЯ ВТОРИЧНОГО КЛЮЧА').Value := 
    MAINFORM.qry2.FieldByName('ID').Value; 
end;
При этом не забываем в секции uses для Form3 сослаться на имя юнита MAINFORM
0
 Аватар для Kotta
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 21
30.01.2011, 01:50  [ТС]
gry1 - это главная таблица Карточка, gry2-подчиненная Поручители.

У меня обе таблицы соединяются по первому полю Num, идентификатора нету. подчиненная таблица правильно выводится на форму, но добавление не работает. NewRecord добавила, но возникла другая ошибка при нажатии Сохранить. AdoQueryDob2 на форме добавления не соединяется к AdoConnection. все свойства настроены правильно. и на форме редактирования главной таблицы тоже самое....
и в dbEdit значение автоматически не выводится.
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
30.01.2011, 07:11
Цитата Сообщение от Kotta Посмотреть сообщение
У меня обе таблицы соединяются по первому полю Num
Это поле для главной таблицы обладает свойсвом уникальности?

Цитата Сообщение от Kotta Посмотреть сообщение
идентификатора нету
Чего нет, не понял, какого идентификатора. У Вас в главной таблице есть поле NUM. В подчиненной - аналогичное поле (оно в общем случае может называться иначе, но тип должен совпадать с NUM главной). Далее, равенство значения этих полей в главной и подчиненной таблице и есть признак принадлежности записей подчиненной конкретной записи главной. Какого у Вас "идентификатора нету"

Цитата Сообщение от Kotta Посмотреть сообщение
NewRecord добавила
NewRecord или обработчик события OnNewRecord

Цитата Сообщение от Kotta Посмотреть сообщение
но возникла другая ошибка при нажатии Сохранить
Какая ошибка, это, конечно, большой секрет!

Цитата Сообщение от Kotta Посмотреть сообщение
AdoQueryDob2 на форме добавления не соединяется к AdoConnection
Скорее всего не хватает ссылки в uses
0
 Аватар для Kotta
1 / 1 / 0
Регистрация: 26.11.2009
Сообщений: 21
30.01.2011, 11:48  [ТС]
Я имела в виду Id нету. ключевое поле есть. добавила обработчик события. Все ссылки uses везде есть. Вот исходник базы. Добавление на главной таблице работает, а с подчиненной проблемы. помогите,пожалуйста. голову сломала уже. с ADO делаю впервые.

Сделала по другому и все заработало. Для главной таблицы оставила ADOQuery и DataSourse, данные добавляются и обновляются. А в подчиненной таблицу присоединила с ADOTable, ADODataSet, DataSourse, установила MasterSource и MasterField по ключевому полю и в форму автоматически добавляется ключевое значение. все работает как надо.


но с AdoQuery. DataSourse не работает, т.к. желательно сделать при помощи неё. Выдается ошибка о том что необходимо ввести Accounts(ключевое значение ) при нажатии кнопки Сохранить после ввода данных. с формы Добавления записей убрала ADOQuery,сделала напрямую

Delphi
1
2
3
4
5
6
7
8
9
procedure TForm4.Button2Click(Sender: TObject);
begin
Form1.qry3.Insert;
// Form1.qry3.FieldByName('Account').AsString:=DBEdit2.Text;    
Form1.qry3.FieldByName('F').AsString:=DBEdit2.Text;
Form1.qry3.FieldByName('I').AsString:=DBEdit3.Text;
Form1.qry3.FieldByName('O').AsString:=DBEdit4.Text;
Form1.qry3.FieldByName('DR').AsString:=DBEdit5.Text;
end;
обработчик событий ADOQueryNewRecords тоже не помогает

Добавлено через 14 минут
Данные заносятся в таблицу, если я вручную ввожу ключевое значение Accounts, такое же что и в исходной таблице. но надо чтобы автоматически присваивалось значение.

всё, разобралась, неправильно были созданы ключевые поля в таблицах всего навсего)
Вложения
Тип файла: rar Project1.rar (396.9 Кб, 162 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2011, 11:48
Помогаю со студенческими работами здесь

Проблема с маской dbedit, который расположен на другой форме от ADO компонентов
Есть форма1, где расположены DBEdit(ы), которым программно задается значение Dataset и Datafield в процедуре onCreate формы1. DataSource и...

Dbedit в 2 таблицы access
Собственно и вопрос: как запись из dbedit поместить в 2 таблицы access?

Умножить значение в Edit на значение в DbEdit
Всем доброго времени суток. Есть форма на которой есть Edit и 2 DBEdit Ну так вот... Мне нужно что бы я смог написать число в Edit...

Связать DBEdit-ы таблицы с гридом из запроса
Добрый вечер) есть грид в котором список из запроса на выборку:SELECT Студент.Фамилия, Студент.Имя, Студент.Отчество, Группы.Группа,...

Связать две таблицы через dbedit
Если кто сталкивался, подскажите как адаптировать данный delphi код для borland c++ procedure Tzakazchik.DBEdit1Change(Sender:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru