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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2011, 05:34   #1
RuthlessD
Новичок
Джуниор
 
Регистрация: 16.06.2011
Сообщений: 5
Злость Изменение данных в одной таблице, с последующими заменами в другой. Delphi, ADO.

Всем доброе время суток. При создании бд в Delphi с помощью ADO возникла проблема. И так, у меня имеется 2 таблицы, первая с одним полем - специальность (оно же ключевое), вторая с двумя полями: специальность и дисциплина (дисциплина ключевое поле). Таблицы связаны по полю специальность один ко многим как уже можно было заметить. Дело в том что я создавал форму где можно было вводить данные, изменять и удалять. При изменении данных я столкнулся с проблемой - как можно сделать так что бы при изменении специальности в первой таблице, так же изменялись такие же специальности во второй ??
Добрые люди, подскажите начинающему.



Вот код того как я изменяю изменяю данные в первой таблице:

Жму на форме кнопку изменения данных.
procedure TForm12.Button2Click(Sender: TObject);
begin
Form13.show;
Adotable1.Edit;
end;



это кнопка на другой форме, с помощью которых я изменяю на введенные значение в dbedit
procedure TForm13.Button1Click(Sender: TObject);
begin
if dbedit1.text='' then begin messagebox(0,'Введите специальность!','Внимание',MB_OK); Abort; end else
form12.adotable1.post;
Form13.Close;
end;

Конечно у всех компонентах (dbedit) стоят необходимые настройки Datasource, Datafield и т.п.
RuthlessD вне форума Ответить с цитированием
Старый 17.06.2011, 11:16   #2
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

выложи проект я помогу
Gulik вне форума Ответить с цитированием
Старый 17.06.2011, 11:32   #3
RuthlessD
Новичок
Джуниор
 
Регистрация: 16.06.2011
Сообщений: 5
По умолчанию

Вот выложил, там уже наметки есть кое какие, но не реализуется..... смотреть форму 13, и так как я только учусь,то много некрасивого там =)
Вложения
Тип файла: rar БД Эл. справочник.rar (964.7 Кб, 15 просмотров)
RuthlessD вне форума Ответить с цитированием
Старый 17.06.2011, 12:56   #4
RuthlessD
Новичок
Джуниор
 
Регистрация: 16.06.2011
Сообщений: 5
По умолчанию

Всё проблема решена, кому интересно решение было таковым:
Код вызова формы редактирования изменения
Код:
procedure TForm12.Button2Click(Sender: TObject);
begin
edit1.Text:=adotable1.FieldByName('Specialnost').Value;
Form13.show;
Adotable1.Edit;
adotable2.Edit;
end;
Само изменение:
Код:
procedure TForm13.Button1Click(Sender: TObject);
var spec,newspec:string; I:integer;
begin
spec:=form12.edit1.text;//form12.ADOTable1.FieldByName('Specialnost').Value;
form12.adotable1.edit;
form12.adotable2.edit;

if dbedit1.text='' then begin  messagebox(0,'Введите специальность!','Внимание',MB_OK); Abort; end  else
newspec:=dbedit1.Text;
form12.adotable1.post;  // разрешаем редактирование, иначе вылетит
form12.adotable2.first; // таблицу в начало
for i:=1 to form12.adotable2.recordcount do // от 1 (первая запись) до recordcoun (число записей вообще)
begin
if (form12.adotable2.fieldbyname('Specialnost').asstring=spec) then begin
form12.adotable2.edit;
form12.adotable2.fieldbyname('Specialnost').asstring:=newspec; // проверка и замена
form12.adotable2.post;// сохранить изменения записи
end;
form12.adotable2.next; // перейти к следующей
end;
//edit1.Text:=spec;
//edit2.Text:=newspec;
Form13.hide;
end;
RuthlessD вне форума Ответить с цитированием
Старый 17.06.2011, 13:19   #5
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

В конечном счете весь твой код который "Само изменение" сократиться до этих строк:

Код:
   if Form12.ADOTable1.Modified then  // проверяем редактировалась ли таблица
      Form12.ADOTable1.Post ;          // сохраняем
   Form12.ADOTable2.Refresh ; // Обновляем записи в таблице 2, чтобы изменения были видны
   Close ;
Переделал твой проект, кое где ставил свои комментарии...
Суть твоего запроса заключалась в создании LookUp поля... На форме 12 увидишь как оно создается (см. ADOTable2)

БД Эл. справочник.zip

Последний раз редактировалось Gulik; 17.06.2011 в 13:21.
Gulik вне форума Ответить с цитированием
Старый 17.06.2011, 13:34   #6
RuthlessD
Новичок
Джуниор
 
Регистрация: 16.06.2011
Сообщений: 5
По умолчанию

Огромное спасибо, поучусь уму - разуму у вас !!!!
RuthlessD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базы данных изменение данных (Delphi (ADO)). RuthlessD Помощь студентам 0 16.06.2011 19:57
Умножение одной ячейки на нужную ячейку в другой таблице. spring.girl Microsoft Office Access 3 13.11.2010 10:09
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
Замена значений в одной таблице на значения из другой 1134 Microsoft Office Excel 10 09.04.2010 12:12
Установка указателя в одной таблице по значению из другой Avalonix БД в Delphi 1 31.05.2008 17:20