Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];

Вниз

Разбросать результат 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.003 c
15-1366947804
Genry_
2013-04-26 07:43
2013.10.06
Oracle between


15-1367181002
Юрий
2013-04-29 00:30
2013.10.06
С днем рождения ! 29 апреля 2013 понедельник


6-1269649035
defen
2010-03-27 03:17
2013.10.06
демодуляция сигнала с GMSK модуляцией


2-1358417243
Pcrepair
2013-01-17 14:07
2013.10.06
Замена указателей на Локал.Перем при работе функции в потоке


15-1367086920
О-Сознание
2013-04-27 22:22
2013.10.06
Поиск на Хабре.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский