Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разбросать результат SQL-запроса по переменным [D7]


McLotos ©   (2013-01-16 17:12:00) 

Доброго времени суток!
Имеем SQL-запрос к двум таблицам:

   ADOQuery.SQL.Clear;
   ADOQuery.SQL.Add('SELECT access.id, access.level,users.firstname,users.middlename,users.lastname');
   ADOQuery.SQL.Add('FROM access,users');
   ADOQuery.SQL.Add('WHERE access.login="' + Account.Values['Login'] + '"');
   ADOQuery.SQL.Add('AND access.passw="' + Account.Values['Password'] + '"');
   ADOQuery.SQL.Add('AND users.access_id = access.level');
 ADOQuery.Active := true;

 if (ADOQuery.RecordCount = 1)
  then
   begin
//!! здесь вместо того чтобы выводить логин и ip, по идее нужно вывести ФИО
     log.Lines.Add ('Пользователь ' + Account.Values['Login'] + ' - (' + socket.RemoteAddress + ') подключился');
   end;
 if (ADOQuery.RecordCount = 0)
   then
     begin
      log.Lines.Add('Попытка несанкционированного доступа '+Account.Values['Login']+' '+Account.Values['Password'])
     {здесь нужно будет записать данные клиента (имя пользователя в Windows, имя компьютера, ip-адрес,mac-адрес, номер пасспорта, адрес проживания) и отключить косячника от сервера}
     end;


Подскажите как сохранить полученные данные в переменные?
Или ещё лучше, чтобы не плодить кучу переменных, как можно работать с отдельной частью результата?
Ну вот например в php при запросе к базе мы получаем ассоциативный массив результатов. А что возвращется в Delphi и как работать с этими данными?


McLotos   (2013-01-16 18:00:00) [1]

Ясно. в общем разберусь. спасибо


O'ShinW   (2013-01-16 17:59:00) [2]


> McLotos ©   (16.01.13 17:50) [14]

на самом деле лучший совет - F1 :)

для Вас подойдет также Fields[] - это как в php столбцы в ассоциативном массиве

В отличии от в php, где строки в ассоциативном массиве текущая строка тут одна. Данные берутся из нее. После открытия - первая в наборе.
- Query.Next следующая строка будет текущей (Prior- предыдущая)


McLotos   (2013-01-16 17:50:00) [3]


> D7 старенькая, на 7ке действительно уже чего то нет, официально
> прекратили поддерживать.


для начала обучения пойдёт, когда научусь, куплю версию по-новее.

O'ShinW, спасибо, не знал про FieldByName.
Вот как нужно отвечать. Всего один пост и сразу в точку, а не как обычно на форумах, топик из 100 постов. из которых 1, максимум 2 по существу!
А с гуглом я знаком, как дельфи начал изучать, оттуда практически не выхожу =)


O'ShinW   (2013-01-16 17:48:00) [4]

http://www.google.ru/#hl=ru&newwindow=1&tbo=d&q=+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B5%D0%B2++%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+Delphi+7+%D0%B2+Windows+7&oq=+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B5%D0%B2++%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+Delphi+7+%D0%B2+Windows+7&gs_l=serp.12...15438.15742.4.17008.2.2.0.0.0.0.237.339.0j1j1.2.0...0.0...1c.1.Xn8lttnOFO0&bav=on.2,or.r_gc.r_pw.&bvm=bv.41018144,d.bGE&fp=2b08a412194167a7&biw =1281&bih=655


sniknik   (2013-01-16 17:45:00) [5]

> блин винда рулит
D7 старенькая, на 7ке действительно уже чего то нет, официально прекратили поддерживать.
> можно загрузить специальную программу.
ага, загрузи и установи.


sniknik   (2013-01-16 17:45:00) [6]

http://www.gunsmoker.ru/2009/11/delphi-7-windows-7.html


O'ShinW   (2013-01-16 17:39:00) [7]


> McLotos ©   (16.01.13 17:33) [7]

одинаково должны,
но нужно смотреть план


McLotos   (2013-01-16 17:38:00) [8]


> вот, а то понимаш мучаются над названиями, ночями не спят.

не понимаю что Вы хотите сказать


знайка   (2013-01-16 17:36:00) [9]


> users.access_id = access.level
вот, а то понимаш мучаются над названиями, ночями не спят.


McLotos   (2013-01-16 17:33:00) [10]

O'ShinW
а какой запрос будет работать лучше мой или Ваш?


O'ShinW   (2013-01-16 17:29:00) [11]

  ADOQuery.SQL.Text := 'SELECT A.id      ID,  
                                             A.level   LV,
                                             U.firstname FN,
                                             U.middlename MN,
                                             U.lastname  LN
                                  FROM access A
                                          join users U on U.access_id = A.level
                                  WHERE A.login=:LGN AND A.passw=:PWD ';
ADOQuery.Parameters.ParamByName('LGN ').AsString := Account.Values['Login'];
ADOQuery.Parameters.ParamByName('PWD ').AsString := Account.Values['Password']
ADOQuery.Open;
if ADOQuery.IsEmpty then
   log.Lines.Add('Попытка несанкционированного доступа..') else
   log.Lines.Add ('Пользователь ' + ADOQuery.FieldByName('FN').asstring + ' - (' + socket.RemoteAddress + ') подключился');


McLotos   (2013-01-16 17:25:00) [12]


> нажать F1 и почитать.

блин винда рулит
Справка для этой программы была создана в формате справки Windows, который зависит от компонента, не входящего в данную версию Windows. Для просмотра справки, созданной в формате справки Windows, можно загрузить специальную программу.


Jeer   (2013-01-16 17:23:00) [13]

Не барское дело хелпы читать:)


sniknik   (2013-01-16 17:20:00) [14]

рекорсет это структура для работы с данными, сортировки, локальный поиск, обьединения, ... ну и т.д.
массив по сравнению с ним убожество. (пусть даже ассоциативный, т.е. именованный, можно по имени к полю обратится. так?)

> и как работать с этими данными?
нажать F1 и почитать.


Jeer   (2013-01-16 17:19:00) [15]


> А что возвращется в Delphi и как работать с этими данными?


Данные по SELECT попадают в dataset в виде записей, соответствующих условиям выборки и объединения полей.
Работай как с массивом.
строки - записи;
поля - по имени ( ассоциативный ) тлт по номеру - массив;


sniknik   (2013-01-16 17:18:00) [16]

> А что возвращется в Delphi и как работать с этими данными?
рекордсет ("обертка" над ним ADODataSet), а вот эти ваши "ассоциативные массивы"... ну, "вот это не заливная рыба" короче.


Наверх

Титульная страница Поиск, карта сайта Написать письмо