Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 11

Поиск данных по таблице в базе данных

02.12.2012, 22:25. Показов 1830. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане, нужна ваша помощь. Я взаимодействую с базой данных Access с помощью компонентов ADOQuery, ADOConnection и DataSource. В базе данных есть 2 таблицы: Таблица1 (состоит из 3-ех столбцов: в первом хранятся id, во втором логины, а в третьем пароли) и Таблица2. Есть 3 переменные Login, Pass и ID. Нужно чтобы при нажатии на кнопку программа проверила столбцы с логинами и паролями Таблицы1 из базы данных на равенство значениям переменных Login и Pass и если в бд найдется строка со значением логина и пароля равным значениям переменным Login и Pass, то его ID (первый столбец) занесся в переменную id.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2012, 22:25
Ответы с готовыми решениями:

Как осуществить поиск данных по базе данных по связи многие-ко-многим
Репозиторий SqlApplicantRepository namespace theModel.Repository { public class SqlApplicantRepository:IApplicantRepository ...

Реализовать поиск и выбор данных в форме в базе данных Access
Здравствуйте! Подскажите пожалуйста,как реализовать поиск и выбор данных в форме в базе данных Access. Заданы таблицы товар,тип товара,...

Поиск по базе данных + постраничный вывод данных
Привет всем! в общем с поиском данных всё нормально! но не работает постраничный вывод ((( не знаю, где не так (! посомтрите пожалуйста,...

12
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 515
03.12.2012, 06:30
составьте SQL запрос такого вида
SQL
1
2
3
4
UPDATE table1,table2 
SET table1.id=table2.id
WHERE table1.login=table2.login
AND table1.pass=table2.pass
1
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 11
03.12.2012, 08:01  [ТС]
WoodHead, спасибо за ответ, но вы меня немного не допоняли. Все нужные данные бд находятся в 1 таблице. Если я пишу такой код:
Delphi
1
2
3
4
5
6
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE table1');
ADOQuery1.SQL.Add('SET ID=table1.код');
ADOQuery1.SQL.Add('WHERE Login=table1.Поле1');
ADOQuery1.SQL.Add('AND Pass=table1.Поле2');
ADOQuery1.Active:=True;
то после его выполнения в DBGrid исчезают все данные, даже если есть совпадение данных бд с переменными.
0
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 515
03.12.2012, 08:20
Цитата Сообщение от Awesome96 Посмотреть сообщение
WoodHead, спасибо за ответ, но вы меня немного не допоняли. Все нужные данные бд находятся в 1 таблице.
Как вы задали вопрос, так я на него и ответил. Сами сравните:
...Таблица1 (состоит из 3-ех столбцов: в первом хранятся id, во втором логины, а в третьем пароли) и Таблица2. Есть 3 переменные Login, Pass и ID. ... и если в бд найдется строка со значением логина и пароля равным значениям переменным Login и Pass, то его ID (первый столбец) занесся в переменную id.
Единственно, данные заносятся не в переменную, а в поле id.
В DBGrid, разумеется, исчезнут все данные, т.к. там содержатся данные текущего запроса SELECT. Выполните необходимый запрос, и данные в DBGrid опять появятся.

Добавлено через 8 минут
И, кстати, в конце не
Delphi
1
ADOQuery1.Active:=True;
, а
Delphi
1
ADOQuery1.ExecSQL;
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.12.2012, 09:36
Что это вы, уважаемые, удумали модифицировать данные в таблице вместо того чтобы просто проверить есть ли в таблице БД нужная пара логин-пароль.
Delphi
1
2
3
4
5
6
7
ADOQuery2.SQL.Text := 
        'select id from table1 where (Login = "'+Login+'") and (Pass = "'+Pass+'")';
ADOQuery.Open;
if not ADOQuery2.Eof then begin
  //указанная пара найдена
end;
ADOQuery2.Close;
1
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 515
03.12.2012, 11:29
Цитата Сообщение от Скандербег Посмотреть сообщение
Что это вы, уважаемые, удумали модифицировать данные в таблице вместо того чтобы просто проверить есть ли в таблице БД нужная пара логин-пароль.
Потому что ТС это не нужно.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.12.2012, 11:56
Это как же "не нужно"? Вот что ТС пишет:
Нужно чтобы при нажатии на кнопку программа проверила столбцы с логинами и паролями Таблицы1 из базы данных на равенство значениям переменных Login и Pass
0
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 515
03.12.2012, 12:00
Цитата Сообщение от Скандербег Посмотреть сообщение
Это как же "не нужно"? Вот что ТС пишет:
Так в SQL запросе не зря же введена секция WHERE. Или вам нужно проверку сделать ради самой проверки? Одним запрос проверяем, вторым запросом обновляем? Не кажется ли вам, что лишний раз дергать БД незачем?
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.12.2012, 12:24
В нашем споре ТС самоустранился, но я понял его вопрос не как обновление данных в базе, а проверка существования пары логин-пароль и при наличии таковой, присвоить переменной id значение из найденной строки, а не записывать значение id в другую таблицу базы.
Собственно, в этом наши отличия в понимании вопроса автора: не записывать найденное значение, а присвоить это значение переменной. И, если так, то ни о каком модифицирующем запросе речи не идет.
Delphi
1
2
3
4
5
6
7
ADOQuery2.SQL.Text := 
        'select id from table1 where (Login = "'+Login+'") and (Pass = "'+Pass+'")';
ADOQuery.Open;
if not ADOQuery2.Eof then begin
  ID := ADOQuery2['ID'] //указанная пара найдена
end;
ADOQuery2.Close;
Если же не так, то правда ваша. Но только ТС может разрешить это недоразумение.
1
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 515
03.12.2012, 12:47
Цитата Сообщение от Скандербег Посмотреть сообщение
...но я понял его вопрос не как обновление данных в базе, а проверка существования пары логин-пароль и при наличии таковой, присвоить переменной id значение из найденной строки, а не записывать значение id в другую таблицу базы...
Я почему-то подумал, что ТС описАлся, когда написал, что значение надо присвоить переменной, а не полю. Если он все-таки прав, ну, тогда не прав я, признаю.
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 11
03.12.2012, 19:14  [ТС]
WoodHead, прав товарищ Скандербег
2Скандербег, пишет: Несоответствие типов данных в выражении условия отбора
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
03.12.2012, 19:21
Видимо, поле таблицы БД не текстовое, или переменные не string.
Но это гадание на кофейной гуще - надо видеть где и как объявлены переменные и поля в таблице.
1
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 11
03.12.2012, 19:37  [ТС]
Проблема решена. Спасибо товарищу Скандербег за помощь. Решение оказалось следующим:
Delphi
1
2
3
4
5
ADOQuery1.SQL.Text:='select id from Таблица1 where (Login = :Login) and (Pass = :Pass)';
ADOQuery1.Parameters.ParamByName('Login').Value:=Login;
ADOQuery1.Parameters.ParamByName('Pass').Value:=Pass;
ADOQuery1.Open;
if ADOQuery1.RecordCount = 1 then ID:=ADOQuery1.FieldByName('id').AsInteger
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2012, 19:37
Помогаю со студенческими работами здесь

Сохранить сортировку в таблице в базе данных
Есть база данных в access. В ней дополнительная таблица из городов. Сделал добавление города в эту таблицу, и сделал сортировку городов, но...

Путь к таблице в другой базе данных в сохраненном запросе
Здравствуйте. Как указать сохраненному запросу на выборку путь к таблице в другой базе данных ? Или как организовать импорт данных из...

Как узнать количество и свойства полей в базе данных в определенной таблице
Добрый день подскажите каким образом узнать количество и свойства этих полей в базе данных в определенной таблице.

Макрос формирования одной таблице на базе данных другой с округлением времени
Доброе время суток ГУРУ Екселя! Я в макросах новичок. Да что там новичок, можно сказать лузер. Пытаюсь разобраться в уже готовых и порой...

Как сделать что если нет данных в таблице, чтобы шаблон этой самой таблице не выводился а писалось что данных в таблице нет
В общем проблема такая, есть админка где выводится список жалоб которые без ответа, когда они есть то всё нормально список выводится и с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru