Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Запрос


Автор: Lola8669 6.2.2009, 14:16
Подскажите, пожалуйста, где писать запрос и примерно как он будет выглядеть, чтобы, когда открываешь прогу на Delphi, первой появлялась форма (скриншот прикреплён), в которой в Edit'ы добавлялись соответствующие поля (пароль, логин). Это нужно хранимой процедурой сделать, ну или хотя бы обычным запросом. Часть базы данных тоже в скриншоте. 

Автор: Rodman 6.2.2009, 14:25
ты не знаешь как залогиниться? или как форму сделать?

Автор: Lola8669 6.2.2009, 14:43
Цитата(Rodman @ 6.2.2009,  14:25)
ты не знаешь как залогиниться? или как форму сделать?

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

Автор: Данкинг 6.2.2009, 18:42
Зачем запрос-то? Обычный dataset.locate поможет...  smile А запрос писать в TQuery!

Автор: Akella 6.2.2009, 20:07
я ж тебе уже давал полное описание с примером  smile 

Автор: Kbl4AH 6.2.2009, 22:38
Код

// =============================================================================
// авторизация пользователя
// =============================================================================
procedure Logon;
begin
  with DM do
  begin    
    // установка значений переменных
    OracleQuery1.SetVariable('Login', FLogon.LabeledEdit1.Text);
    OracleQuery1.SetVariable('Password', FLogon.LabeledEdit2.Text);
    // выполнение запроса
    OracleQuery1.Execute;
    // если запрос ничего не вернул, то авторизация не пройдена
    if OracleQuery1.Eof then
      // выдать ошибку
      Application.MessageBox('Неверные имя пользователя или пароль', 'Ошибка!')
    // иначе - авторизация пройдена
    else
      begin
        // удалить переменные
        OracleQuery1.DeleteVariables;
        // закрыть запрос
        OracleQuery1.Close;
        // показать главную форму
        FMain.Show;
        // уничтожить форму авторизации
        FLogon.Free;
      end;
  end;     
end;

// =============================================================================
// нажатие кнопки "Принять"
// =============================================================================
procedure TFLogon.Button1Click(Sender: TObject);
begin
  // авторизация пользователя
  Logon;
end;

// =============================================================================
// создание формы
// =============================================================================
procedure TFLogon.FormCreate(Sender: TObject);
begin
  // описание переменных
  OracleQuery1.DeclareVariable('Login', otString);
  OracleQuery1.DeclareVariable('Password', otString);
  // текст запроса
  OracleQuery1.SQL.Text := 'SELECT login FROM wha_logon WHERE ' +
                                            'login = :Login AND password = :Password';
end;


Автор: Bose 7.2.2009, 03:51
Цитата(Lola8669 @  6.2.2009,  13:16 Найти цитируемый пост)
Подскажите, пожалуйста, где писать запрос и примерно как он будет выглядеть, чтобы, когда открываешь прогу на Delphi, первой появлялась форма (скриншот прикреплён), в которой в Edit'ы добавлялись соответствующие поля (пароль, логин). Это нужно хранимой процедурой сделать, ну или хотя бы обычным запросом. Часть базы данных тоже в скриншоте.  


Kbl4AH, lol  smile 
Код для подключения к Ораклу для девочки которой нужно чтобы хранимая процедура из Firebird/Interbase вызвала форму Логина в Delphi. Ребят вы жжёте! smile  
сорри за оффтоп


Lola8669, ты к базе умеешь подключаться? 
Lola8669, зачем тебе запрос(хранимая процедура)?
Lola8669, ты знаешь, что такое хранимая процедура?

Автор: Kbl4AH 7.2.2009, 11:12
 smile 
да вот не пофик, пусть OracleQuery на свой Query заменит... какая разница-то?

Автор: Lola8669 7.2.2009, 15:30
Воse, я к базе подключилась! Хранимой процедурой, чтобы обеспечить безопасность!
Я не в Oracle делаю.

Автор: Kbl4AH 7.2.2009, 19:15
Цитата(Lola8669 @  7.2.2009,  15:30 Найти цитируемый пост)
Я не в Oracle делаю.

Я знаю smile 
Цитата(Lola8669 @  7.2.2009,  15:30 Найти цитируемый пост)
Воse, я к базе подключилась! Хранимой процедурой, чтобы обеспечить безопасность!

А меня научи, пожалуйста, подключаться smile 

Автор: Lola8669 7.2.2009, 20:20
Есть форма для проверки логина и пароля с EDIT1 и EDIT2, в базе данных три таблицы: GRUPPI_GPO (ID_GRUPPI_GPO, название группы), RUKOVODITELI_GRUPP (ID_GRUPPI_GPO, ID_RUKOVODITELI) и RUKOVODITELI (ID_RUKKOVODITELI, ФИО).

Мне нужно, чтобы, когда вводили руководители логин и пароль в Edit'ы, то в Grid'е на другой форме выводились только его группы.

Правильно будет, если я положу на форму IBQuery и в нём напишу такой запрос:
select ID_GRUPPI_GPO from GRUPPI_GPO where "ID_GRUPPI_GPO" IN (select "ID_GRUPP_GPO" from RUKOVODITELI_GRUPP where "ID_RUKKOVODITELI"=(select "ID_RUKKOVODITELI" from RUKOVODITELI where "LOGIN"='+Edit1.text+' AND PAROL='+Edit2.Text+'))'  ??

Автор: Kbl4AH 7.2.2009, 21:05
QuotedStr(Edit.Text) ?
И '' по всему запросу убрать не нужно?

Добавлено @ 21:09
Код

select ID_GRUPPI_GPO from GRUPPI_GPO where "ID_GRUPPI_GPO" IN (select "ID_GRUPP_GPO" from RUKOVODITELI_GRUPP

А зачем выбирать ID_GRUPPI_GPO, а потом еще раз выбирать это же самое из полученного?

Автор: Lola8669 7.2.2009, 22:58
Блин, а как правильно будет?? Объясните, пожалуйста, на языке простых смертных smile 

Автор: Kbl4AH 7.2.2009, 23:19
Цитата(Lola8669 @  7.2.2009,  22:58 Найти цитируемый пост)
Блин, а как правильно будет?? Объясните, пожалуйста, на языке простых смертных

Спокойствие! Только спокойствие! (с) Сын Карла
Точно скажи, что тебе нужно...
Если ID группы, то:
Код

Query.SQL.Text := 'select ID_GRUPPI_GPO from RUKOVODITELI_GRUPP where ID_RUKOVODITELI = ' +
'(select ID_RUKOVODITELI from RUKOVODITELI where LOGIN = ' + QuotedStr(Edit1.text) + ' AND PAROL = ' + QuotedStr(Edit2.Text) + ')';


Автор: Lola8669 7.2.2009, 23:43
Цитата(Kbl4AH @ 7.2.2009,  23:19)

Спокойствие! Только спокойствие! (с) Сын Карла

Query.SQL.Text := 'select ID_GRUPPI_GPO from RUKOVODITELI_GRUPP where ID_RUKOVODITELI = ' +
'(select ID_RUKOVODITELI from RUKOVODITELI where LOGIN = ' + QuotedStr(Edit1.text) + ' AND PAROL = ' + QuotedStr(Edit2.Text) + ')';

 smile 
А что этот запрос в моём случае будет делать??

Автор: Kbl4AH 7.2.2009, 23:51
Цитата(Lola8669 @  7.2.2009,  23:43 Найти цитируемый пост)
А что этот запрос в моём случае будет делать??

 smile 
Наверное, тоже, что и этот:
Цитата(Lola8669 @  7.2.2009,  20:20 Найти цитируемый пост)
select ID_GRUPPI_GPO from GRUPPI_GPO where "ID_GRUPPI_GPO" IN (select "ID_GRUPP_GPO" from RUKOVODITELI_GRUPP where "ID_RUKKOVODITELI"=(select "ID_RUKKOVODITELI" from RUKOVODITELI where "LOGIN"='+Edit1.text+' AND PAROL='+Edit2.Text+'))'




Автор: Akella 8.2.2009, 00:21
/убегает в ужасе smile 

Автор: Данкинг 8.2.2009, 07:47
Цитата(Lola8669 @  7.2.2009,  20:20 Найти цитируемый пост)
Правильно будет, если я положу на форму IBQuery и в нём напишу такой запрос:

Сама придумала? smile Это всё для того, чтобы по логину пароль найти в таблице?

Автор: Kbl4AH 8.2.2009, 09:53
Цитата(Данкинг @  8.2.2009,  07:47 Найти цитируемый пост)
Сама придумала?  Это всё для того, чтобы по логину пароль найти в таблице?

Там более тонкая задумка smile  smile 

ЗЫ. Лола, не бойся, мы все равно тебе поможем smile даже если ты этого не хочешь... ты главное пиши подробнее свои вопросы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)