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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 18:23   #1
Romich41
Новичок
Джуниор
 
Регистрация: 26.12.2010
Сообщений: 2
Вопрос Логика программы

Здравствуйте!НЕ МОГУ РАЗОБРАТЬСЯ в программе.Посмотрите я правильно понимаю код программы(для более подробного восприятия скачайте исходник).Начнем с OtdelKadrov:
Код:
begin
  Application.Initialize;
  LoginForm := TLoginForm.Create(nil);  //создание формы  LoginForm
  try                                   //если верно
    if LoginForm.ShowModal <> mrOk then //если форма ????
      exit;                             //то закрываем форму
  finally
    LoginForm.Free;                     //освобождает память???
  end;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TFormAllInf, FormAllInf);
  Application.CreateForm(TDataModule3, DataModule3);
  Application.CreateForm(TPrinting, Printing);
  Application.Run;
end.
Затем появляется форма авторизации, где необходимо ввести логин и пароль. Здесь все понятно.
Далее…появляется главное окно программы и код этой формы понятен.
Все компоненты АДО для даботы с БД располагаются в ДатаМодуле и вот его код:
Код:
procedure TDataModule3.DataModuleCreate(Sender: TObject);  //при создании проектом объекта DataModule
begin
  SpisokRabQuery.Open;  //исполнение запроса SpisokRabQuery
  AdresQuery.Open;      //AdresQuery
  FamilyQuery.Open;     //FamilyQuery
  PassportQuery.Open;   // PassportQuery
  OtpyskQuery.Open;     // OtpyskQuery
  NazPerQuery.Open;     // NazPerQuery
end;
procedure TDataModule3.SpisokRabQueryAfterScroll(DataSet: TDataSet); //при перемещении по записям БД
var
  k: Integer;                   //объевление переменной k типа integer
  procedure ListSubSet(qu: TADOQuery); //процедура для присваивания кода работника
  begin
    with qu do                  //с объектом qu типа TADOQuery делаем следующие действия
    begin
      Close;                    //закрываем созданный объект qu типа TADOQuery
      Parameters[0].Value := k; //присваиваем 1-му столбцу переменную k
      Open;                     //открываем созданный объект qu типа TADOQuery
    end;
  end;
begin
  k := SpisokRabQuery.FieldByName('КодРаботника').AsInteger;  //заносим в переменную k значение поля КодРаботника
  ListSubSet(AdresQuery);    //присваивание кода работника для объекта AdresQuery
  ListSubSet(FamilyQuery);   //присваивание кода работника для объекта FamilyQuery
  ListSubSet(PassportQuery); //присваивание кода работника для объекта PassportQuery
  ListSubSet(NazPerQuery);   //присваивание кода работника для объекта NazPerQuery
  ListSubSet(OtpyskQuery);   //присваивание кода работника для объекта OtpyskQuery
end;
procedure TDataModule3.SpisokRabQueryAfterPost(DataSet: TDataSet);
var
  k: Integer; //объевление переменной k типа integer
  procedure SubSetPost(ds: TDataSource);  //процедура для ???
  begin
    with ds.DataSet do  //с объектом ds типа TDataSource делаем следующие действия
    begin
      if State in [dsEdit, dsInsert] then  //если DataSet объекта ds находится в состоянии редактирования или добаления, то
      begin
        FieldByName('КодРаботника').AsInteger := k; //присваиваем полю КодРаботника переменную k
        Post;                 //запись производится в конец таблицы ??? а при редактировании тоже???
        ds.AutoEdit := false; //защита от случайного изменения данных
      end;end;end;
begin
  k := SpisokRabQuery.FieldByName('КодРаботника').AsInteger; //заносим в переменную k значение поля КодРаботника
  SubSetPost(AdresSource);
  SubSetPost(FamilySource);
  SubSetPost(PassportSource);
  SubSetPost(NazPerSource);
  SubSetPost(OtpyskSource);
end;
procedure TDataModule3.SpisokRabQueryAfterEdit(DataSet: TDataSet); //после редактирования
begin
  AutoEditSubSets(true); //???
end;
procedure TDataModule3.SpisokRabQueryAfterCancel(DataSet: TDataSet); //при отмене редактирования
begin
  AutoEditSubSets(false);  //???
end;
procedure TDataModule3.AutoEditSubSets(IsAuto: boolean);   //  откуда такая функция AutoEditSubSets????
begin
  AdresSource.AutoEdit := IsAuto;
  FamilySource.AutoEdit := IsAuto;
  PassportSource.AutoEdit := IsAuto;
  NazPerSource.AutoEdit := IsAuto;
end;
Затем можно открыть расширенный просмотр инфы о сотруднике(здесь только 1 процедура):
Код:
procedure TFormAllInf.ActionList1Update(Action: TBasicAction; var Handled: Boolean);
Здесь располагаются кнопки ДОБАВИТЬ, УДАЛИТЬ, РЕДАКТИРОВАТИ и т.д.
Эти кнопки подключены к экшенам ActionList1. В ActionList1 создана категория Dataset, содержащая следующие экшены – скрин 2. Я выбираю например экшен Rabinsert захочу в его события и ничего не вижу в OnExecute!!! А как тогда ваще работают эти экшены???Где их код????
Затем я решил создать отчет, создал форму Printing и на ней разбросал и подключил компоненты QReport. А затем на кнопку написал:
Код:
Printing.QuickRep1.PreviewModal;
Но ничего не происходил..не отображается ничего=(Люди добрые помоги разобраться!!!! ПОЖАЙЛУСТО!!!!
Изображения
Тип файла: jpg Скрин 1.JPG (111.3 Кб, 48 просмотров)
Тип файла: jpg Скрин 2.JPG (23.3 Кб, 53 просмотров)
Тип файла: jpg Скрин 3.JPG (44.9 Кб, 42 просмотров)
Вложения
Тип файла: rar БД_1.rar (583.9 Кб, 15 просмотров)
Romich41 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Логика evklid Помощь студентам 2 28.10.2010 12:51
Логика КоТэ LOvE YoU Паскаль, Turbo Pascal, PascalABC.NET 4 08.10.2010 23:29
Математическая логика Dimon278 Помощь студентам 0 13.12.2009 21:50
Женская логика... Mr.Qwerty Свободное общение 23 28.07.2009 11:30
Логика монстра(ов) ChukCha Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 19.08.2008 15:31