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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2014, 17:29   #1
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
Злость Форма входа через mysql 2008 r2

Не ругайте сильно, подскажите. Есть mysql 2008 r2 база данных "8" таблица users. Смысл такой что после ввода логина и пароля правильного из БД должна запускаться следующая форма, ADOQuery1 в Connection string базу подключил, в параметре sql прописал запрос select * from users, но при выводе формы в ComboBox1 нет логинов из БД, подскажите что тут не так ?

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (ComboBox1.Text<>'') And (Edit2.Text<>'') then
 begin
  with ADOQuery1 do
   begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Users WHERE login=' +#39 + ComboBox1.Text + #39+'AND pass=' + #39 + Edit2.Text + #39);
    Open;
    if not Recordset.EOF then
    else
      Application.MessageBox('Проверьте имя пользователя или пароль','Ошибка входа',MB_OK OR MB_ICONWARNING);
   end
 end
else
  Application.MessageBox('Заполните пустое поле','Ошибка входа',MB_OK OR MB_ICONWARNING);
end;
end.
spotip вне форума Ответить с цитированием
Старый 08.04.2014, 21:15   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

1. У вас не mysql 2008 r2 ! Наверно MS SQL Server 2008 r2
2. Запрос на таблице users надо так

Код:
procedure TForm1.Button1Click(Sender: TObject);
  var s: string;
begin
 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
   s:= 'SELECT * FROM Users WHERE login='QuotedStr(ComboBox1.Text)+'AND pass='QuotedStr(Edit2.Text);
    ADOQuery1.Open;
    if  not ADOQuery1.IsEmpty then
     begin
       Form1.Hide;
       Form2.Show;
     end
     else
     begin
       MessageDlg('Проверьте имя пользователя или пароль',mtError,[mbOK],0);
     end;
 end;
Если логин и пароль правильно ! То открываем второе форма .

3. Не забывайте на второе форму прописать из события OnClose прописать
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
   If Application.MessageBox('Вы действительно хотите закрыть программу','Предупреждения ',MB_ICONQUESTION+MB_YESNO)=IDYES
    then
     application.Terminate
   else
  Action:=caNone;
 end;

Последний раз редактировалось xxbesoxx; 08.04.2014 в 21:20.
xxbesoxx вне форума Ответить с цитированием
Старый 08.04.2014, 22:46   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
mysql 2008 r2
это что такое?
автор бросайте программирование, не ваше оно
eval вне форума Ответить с цитированием
Старый 09.04.2014, 06:46   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

У товарища проблема в другом.
У него нет пользователей в комбо ещё до того как он пароль вводит и пытается логиниться.
Тут надо просто создать не комбобокс а TDBComboBox и его настроить на вывод логинов из таблицы юзеров (свойство Keyfield).
Либо комбо ручками заполнять в цикле, чего у Вас либо нет, либо Вы не показали нам.
phomm вне форума Ответить с цитированием
Старый 09.04.2014, 09:15   #5
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

ну зачем вы так сразу...ошибся случайно конечно это MS SQL Server 2008 r2
spotip вне форума Ответить с цитированием
Старый 09.04.2014, 09:20   #6
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
1. У вас не mysql 2008 r2 ! Наверно MS SQL Server 2008 r2
2. Запрос на таблице users надо так

Код:
procedure TForm1.Button1Click(Sender: TObject);
  var s: string;
begin
 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
   s:= 'SELECT * FROM Users WHERE login='QuotedStr(ComboBox1.Text)+'AND pass='QuotedStr(Edit2.Text);
    ADOQuery1.Open;
    if  not ADOQuery1.IsEmpty then
     begin
       Form1.Hide;
       Form2.Show;
     end
     else
     begin
       MessageDlg('Проверьте имя пользователя или пароль',mtError,[mbOK],0);
     end;
 end;
Если логин и пароль правильно ! То открываем второе форма .

3. Не забывайте на второе форму прописать из события OnClose прописать
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
   If Application.MessageBox('Вы действительно хотите закрыть программу','Предупреждения ',MB_ICONQUESTION+MB_YESNO)=IDYES
    then
     application.Terminate
   else
  Action:=caNone;
 end;
Спасибо большое за помощь, всё получилось.
да забыл отписать добавил + перед QuotedStr

Код:
 s:= 'SELECT * FROM Users WHERE login='+QuotedStr(DBComboBox1.Text)+'AND pass='+QuotedStr(Edit2.Text);

Последний раз редактировалось spotip; 09.04.2014 в 10:13. Причина: забыл написать
spotip вне форума Ответить с цитированием
Старый 09.04.2014, 10:03   #7
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
У товарища проблема в другом.
У него нет пользователей в комбо ещё до того как он пароль вводит и пытается логиниться.
Тут надо просто создать не комбобокс а TDBComboBox и его настроить на вывод логинов из таблицы юзеров (свойство Keyfield).
Либо комбо ручками заполнять в цикле, чего у Вас либо нет, либо Вы не показали нам.
Ваш совет также помог заменил ComboBox на DBLookupComboBox1 настроил ADOConnection1 на него ADOQuery1 и DataSource1. Спасибо.

Последний раз редактировалось spotip; 09.04.2014 в 11:52. Причина: изменение кнопки
spotip вне форума Ответить с цитированием
Старый 09.04.2014, 12:35   #8
spotip
Пользователь
 
Регистрация: 09.06.2010
Сообщений: 68
По умолчанию

а можно уточнить если мне надо открыть после определённого логина форму 3 к примеру как это реализовать ?

Последний раз редактировалось spotip; 09.04.2014 в 15:59. Причина: вопрос
spotip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма входа glebast Помощь студентам 2 26.09.2012 21:53
Форма входа Ucoz makar3000 HTML и CSS 10 13.01.2011 00:32
Сессии + форма входа spein PHP 13 27.03.2009 18:18
форма входа на Flash vanDJ Софт 4 08.08.2008 10:01
Не работает форма входа. vvsh PHP 12 10.06.2008 17:00