Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 17:27   #1
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию Одновременный поиск нескольких значений

В общем работаю с Delphi+ADO+Access и возник такой вопрос:

Есть таблица Table1 - в ней два столбца: ФИО и Телефон. В общем хотелось бы сделать так, чтобы мы допустим вводим в Memo сразу несколько телефонов, нажимаем на кнопку Найти и осуществляется поиск этих значений (из Memo) по столбцу Телефон и результат совпадения выводится в новый DBGrid.

Прошу подсказки в осуществлении данного алгоритма
Hayaname вне форума Ответить с цитированием
Старый 16.08.2012, 17:58   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

в memo = '4521122,4584455,6598854'

sql запрос = select* from table where telepon like ('''+memo.text+''')'

Если это тупо таблица то :
Пропарси мемо в масив строк. и
Код:
for x:=0 to length(arr) do 
//изменяем  столбик "j++"
 if  table.cells[i,j]=arr[x] then

Смысл я думаю уловил
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 09:36   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

может так
select * from t where tel IN ('t1', 't2', 't3', ....)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.08.2012, 12:33   #4
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Sm1Le Посмотреть сообщение
в memo = '4521122,4584455,6598854'

sql запрос = select* from table where telepon like ('''+memo.text+''')'

Если это тупо таблица то :
Пропарси мемо в масив строк. и
Код:
for x:=0 to length(arr) do 
//изменяем  столбик "j++"
 if  table.cells[i,j]=arr[x] then

Смысл я думаю уловил
Попробовал первый вариант:

PHP код:
begin
  
try
fDM.ADOQuery1.SQL.Clear;
fDm.ADOQuery1.SQL.Add('SELECT * FROM Table1 WHERE Telefon LIKE ('''+Memo1.Text+''')');
fDM.ADOQuery1.Active:= True;
except
  on e
:Exception do
  
end;
end
Ввожу в Memo1 несколько значений телефонов, нажимаю на кнопку...и ничего не происходит - данные не выбираются.

Пршел пробовать вторым вариантом
Hayaname вне форума Ответить с цитированием
Старый 17.08.2012, 12:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
ничего не происходит - данные не выбираются
И не выберутся, с чего бы это '4521122,4584455,6598854' нашлось в номере телефона. Если уж с помощью like, то
Код:
WHERE '4521122,4584455,6598854'  LIKE '%'+Telefon+'%'
если еще ACCESS съест
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.08.2012, 13:47   #6
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Hayaname Посмотреть сообщение
Попробовал первый вариант:

PHP код:
begin
  
try
fDM.ADOQuery1.SQL.Clear;
fDm.ADOQuery1.SQL.Add('SELECT * FROM Table1 WHERE Telefon LIKE ('''+Memo1.Text+''')');
fDM.ADOQuery1.Active:= True;
except
  on e
:Exception do
  
end;
end
Ввожу в Memo1 несколько значений телефонов, нажимаю на кнопку...и ничего не происходит - данные не выбираются.

Пршел пробовать вторым вариантом
помутненее))) "Лайк" там не надо ) Там "Ин" нужен.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 14:03   #7
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

C IN выбирает...но только одно значение. Если пишешь два и более то возвращает пустую таблицу (телефоны на входе существуют в БД)
Hayaname вне форума Ответить с цитированием
Старый 17.08.2012, 14:53   #8
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Hayaname Посмотреть сообщение
C IN выбирает...но только одно значение. Если пишешь два и более то возвращает пустую таблицу (телефоны на входе существуют в БД)
каждое значение в одинарные кавычки возьми.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 14:57   #9
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Sm1Le Посмотреть сообщение
в memo = '4521122,4584455,6598854'

Если это тупо таблица то :
Пропарси мемо в масив строк. и
Код:
for x:=0 to length(arr) do 
//изменяем  столбик "j++"
 if  table.cells[i,j]=arr[x] then
Смысл я думаю уловил
PHP код:
procedure TForm1.btn2Click(SenderTObject);
var
mas : Array of string;
integer;
begin
for i:=0 to Memo1.Lines.Count-do
 
mas[i] := Memo1.Lines.Strings[i];
end
Допустим вот так я вношу в массив строки из Мемо, но как тогда потом использовать данный массив в запросе SELECT?
Hayaname вне форума Ответить с цитированием
Старый 17.08.2012, 15:00   #10
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от Hayaname Посмотреть сообщение
PHP код:
procedure TForm1.btn2Click(SenderTObject);
var
public 
mas : Array of string;
integer;
begin
 
for i:=1 to Memo1.Lines.Count do
 
mas[i] := Memo1.Lines.Strings[i-1];
end
Допустим вот так я вношу в массив строки из Мемо, но как тогда потом использовать данный массив в запросе SELECT?
Во первых, массив динамический и надо выделять под него память.
И так не получиться если у вас номера например через запятую пишутся.
Как они у вас записаны ? Если каждый норме в новой строке то вам и не надо этот массив.
Не мучайтесь, разберитесь с запросом, при помощи его и легче и быстрее.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск нескольких значений Pral Microsoft Office Excel 1 07.02.2012 15:34
Поиск нескольких значений zenner Microsoft Office Excel 14 27.01.2012 17:43
Одновременный просмотр нескольких эл таблиц в одной книге Excel Raikhman Microsoft Office Excel 7 03.11.2010 08:11
Одновременный запуск нескольких аудио файлов из ресурса Trial Мультимедиа в Delphi 4 05.02.2010 17:56
поиск нескольких значений по одному запросу ilgis1 Microsoft Office Word 10 16.09.2009 19:49