Форум: "Начинающим";
Текущий архив: 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