Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

Разбросать результат SQL-запроса по переменным   Найти похожие ветки 

 
McLotos ©   (2013-01-16 17:12) [0]

Доброго времени суток!
Имеем 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 и как работать с этими данными?


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

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


 
Jeer ©   (2013-01-16 17:19) [2]


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


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


 
sniknik ©   (2013-01-16 17:20) [3]

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

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


 
Jeer ©   (2013-01-16 17:23) [4]

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


 
McLotos ©   (2013-01-16 17:25) [5]


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

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


 
O'ShinW ©   (2013-01-16 17:29) [6]

  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:33) [7]

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


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


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


 
McLotos ©   (2013-01-16 17:38) [9]


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

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


 
O'ShinW ©   (2013-01-16 17:39) [10]


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

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


 
sniknik ©   (2013-01-16 17:45) [11]

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


 
sniknik ©   (2013-01-16 17:45) [12]

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


 
O'ShinW ©   (2013-01-16 17:48) [13]

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


 
McLotos ©   (2013-01-16 17:50) [14]


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


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

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


 
O'ShinW ©   (2013-01-16 17:59) [15]


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

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

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.10.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1366925402
Юрий
2013-04-26 01:30
2013.10.06
С днем рождения ! 26 апреля 2013 пятница


15-1366883286
О-Сознание
2013-04-25 13:48
2013.10.06
Наглядная настройка параметров.


2-1358236774
samborskijj
2013-01-15 11:59
2013.10.06
Неверный запрос (слишком мало параметров)


2-1358414836
O'ShinW
2013-01-17 13:27
2013.10.06
Моргает ListView.(D7)


15-1366626747
DevilDevil
2013-04-22 14:32
2013.10.06
Относитесь ли вы к своей профессии, как к творчеству? (Опрос)