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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2010, 17:01   #1
skylost
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 10
Стрелка Проект Делфи + БД

Мне нужно создать приложение которое будет генерировать товарные чеки из продукции которая будет занесена в БД (это в двух словах).

Я хотел бы в этой теме задавать вопросы которые у меня будут возникать во время написания этой программы.

Для начала нужно создать форму авторизации, которая будет появляться при запуске приложения и спрашивать логин и пароль (они записаны в БД в таблице Менеджеры), и если авторизация прошла успешно, открывать основную форму.
Я гуглил и нашел темы где ставиться этот вопрос, но так как я новичек в ООП у меня возникли проблемы, например создавалась новая пустая форма вместо вызова той что я создал и т.д.

Пишу в RAD Studio 2009.

В заранее благодарен всем за внимание и помощь!
PS: не судите строго бедного студента.

Последний раз редактировалось skylost; 13.02.2010 в 22:31. Причина: дополнение
skylost вне форума Ответить с цитированием
Старый 13.02.2010, 21:03   #2
ram12
Новичок
Джуниор
 
Регистрация: 13.02.2010
Сообщений: 9
По умолчанию

всё хорошо описано в книге "библия дельфи" посматри её в соседней теме выкладывали ббуквально сегодня.
ram12 вне форума Ответить с цитированием
Старый 13.02.2010, 22:56   #3
skylost
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 10
По умолчанию

Спасибо, как раз с помощью этой книги я хотел писать программу.

Только вот все же как мне при запуске вызвать форму с авторизацией?

Вот что выдает при написании в главной форме программы:
Код:
procedure TMainForm.FormCreate(Sender: TObject);
begin
form1.showmodal;
end;
Выдаёт: точто на скрине.

Так с этим разобрался нужно было добавить:
Код:
Application.CreateForm(TForm1, Form1);
в
Код:
program MDIAPP;

uses
  Forms,
  Main in 'Main.pas' {MainForm},
  about in 'about.pas' {AboutBox},
  DostubBD in 'DostubBD.pas' {DataModule1: TDataModule},
  Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TAboutBox, AboutBox);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.Run;
end.
Но теперь получается что главная форма не MainForm а Form1 чем мне это грозит?
Изображения
Тип файла: jpg Снимок.JPG (18.4 Кб, 132 просмотров)

Последний раз редактировалось skylost; 13.02.2010 в 23:29.
skylost вне форума Ответить с цитированием
Старый 15.02.2010, 19:32   #4
skylost
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 10
По умолчанию

Во общем со всем этим разобрался, теперь как мне сравнивать данные введенные в поле Edit1 и Edit2 с записями в БД.

Вот так компилируется без ошибок но при нажатие клавишу где прописан данный код:
Код:
if DataModule1.LoginTable.FieldByName('Логин').Value=Edit1.text then
Выдает ошибку на подобие той что на предыдущем посте.

Неужели некто помочь не может???
хоть кто нибудь что нибудь думает? Создается впечатление будто игнорируете тему(((

Хоть что нибудь напишите


Даже элементарная операция(для проверки написал):
Код:
procedure TLoginForm.Button1Click(Sender: TObject);
begin
Edit1.Text:=inttostr(DataModule1.LoginTable.FieldCount);
end;
Вызывает ошибку!
Может от того что в БД имя полей написаны на русском?
Я уже не знаю что делать столько времени убил методом тыка!

Последний раз редактировалось Stilet; 16.02.2010 в 08:27.
skylost вне форума Ответить с цитированием
Старый 16.02.2010, 07:51   #5
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Цитата:
Неужели некто помочь не может???
Код:
if DataModule1.LoginTable.FieldByName('Логин').Value=Edit1.text then
-вот Это бред
Надо создавать запрос вроде
Код:
 'Select пароль from имя_вашей_таблицы where Логин='+quotedstr(edit1.text);
потом сравнивать
Код:
if query.fieldbyname('Пароль').Asstring=edit2.text{тот едит где вводится пароль} then {тот код код когда доступ разрешен}
else{логин и пароль неверные};
Почитайте про запросы в той же самой книжке
Имхо использовать компоненты типа TTable это моветон, намного лучше обойтись TQuery мобильнее как то все получается!
Google2010 вне форума Ответить с цитированием
Старый 16.02.2010, 08:04   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

1. Какая БД (в чём создана)
2. Делаете Форму авторизации убираете её из автосоздаваемых
3. В событии OnShow главной формы пишите что то вроде
Код:
 LoginForm:=TLoginForm.Create(Application);
 Loginform.ShowModal;
4. После ввода данных в поля логин формы делаете SQL запрос и смотрите есть ли такой пользователь
примерно такого типа
Код:
'select * from Менеджеры where User ="'+
     Loginform.LoginEdit.Text+'" and Password ="'+LoginForm.PasswordEdit.Text+'"';
SERG1980 вне форума Ответить с цитированием
Старый 17.02.2010, 21:08   #7
skylost
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 10
По умолчанию

Спасибо огромное за помощь! С этим разобрался!

Теперь как сделать так, чтобы удалять то поле в БД которое выделено в данный момент в DBGrid, делаю как Библии Делфи, автор пишет следующий код(говоря при этом что метод delete удаляет текущую запись из БД):
Код:
procedure TManagerForm.sDeleteClick(Sender: TObject);
begin
if application.messagebox(pchar('Ты действительно хочеш удалить '
+DataModule1.ManagerTableФамилия.Asstring), 'Внимание!',MB_OKCancel)=id_OK then
begin
DataModule1.ManagerTable.delete;

end;
Но он удаляет первую запись в БД, а не текущую которою я выделяю в DBGrid.
Наведите на мысль

Последний раз редактировалось skylost; 17.02.2010 в 21:13.
skylost вне форума Ответить с цитированием
Старый 18.02.2010, 08:05   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Да всё написано верно. Может у вас на данный момент в датасоурсе.датасет:=Query а не Table, тогда надо писать Query.Delete
SERG1980 вне форума Ответить с цитированием
Старый 18.02.2010, 09:32   #9
skylost
Пользователь
 
Регистрация: 13.02.2010
Сообщений: 10
По умолчанию

Да нет не query
Изображения
Тип файла: jpg Снимок.JPG (32.8 Кб, 80 просмотров)
skylost вне форума Ответить с цитированием
Старый 18.02.2010, 10:36   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Ну если не затруднит выложите Ваш проект
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проект LPMWorld Помощь студентам 0 19.01.2010 16:26
Проект lennon Общие вопросы по программированию, компьютерный форум 7 15.10.2009 00:30
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Проект на VB Без имени Фриланс 1 20.10.2007 20:36