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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2012, 15:03   #11
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Проверил ... если каждое значение взять в кавычки все работает.

Вводить список номеров с кавычками не удобно.
По этому, добавь обработку.

POS ( ... ) - найдет тебе твою "," и вернет порядковый номер в строке.
Copy (...) - ДОбавить " ' " перед запятой и после .... по типу pos()-1 - это до и pos()+1 - это будет после ... значаение параметров поищи ... ничего там сложного.
Skype : UASm1Le.

Последний раз редактировалось Sm1Le; 17.08.2012 в 15:07.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 15:17   #12
mansuetudo
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 46
По умолчанию

Каждый номер вводить в мемо новой строкой (иначе потом провести анализ, где чего - проще застрелиться).
Перед поиском определять количество строк и в цикле склеивать значения с кавычками и запятыми так, как это должно быть представлено в итоге, в смысле, 'tel1','tel2','tel3' и т.д.
Результат присвоить переменной.
Запрос будет иметь вид вроде этого:
Код:
select * from t where tel IN ('+v+')
где v=''tel1','tel2','tel3''
mansuetudo вне форума Ответить с цитированием
Старый 17.08.2012, 15:25   #13
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от mansuetudo Посмотреть сообщение
Каждый номер вводить в мемо новой строкой (иначе потом провести анализ, где чего - проще застрелиться).
Перед поиском определять количество строк и в цикле склеивать значения с кавычками и запятыми так, как это должно быть представлено в итоге, в смысле, 'tel1','tel2','tel3' и т.д.
Результат присвоить переменной.
Запрос будет иметь вид вроде этого:
Код:
select * from t where tel IN ('+v+')
где v=''tel1','tel2','tel3''
с кавычками лажа, их по 2 должно быть. Одну кавычку он не увидит вообще

А про парсит строку это 2 строчки кода. Зато мне проще ввести в мемо номер и программа это сделает за меня чем вставлять кавычку вручную.

___________________________________ ___________________________________ __________________________
перед выполнением запроса напиши строку

Showmessage(Query.sql.text);

И сам сможешь понять где у тебя ошибка.
Skype : UASm1Le.

Последний раз редактировалось Sm1Le; 17.08.2012 в 15:27.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 15:30   #14
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Спасибо всем! Буду пробовать!
Hayaname вне форума Ответить с цитированием
Старый 17.08.2012, 17:08   #15
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от mansuetudo Посмотреть сообщение
Каждый номер вводить в мемо новой строкой (иначе потом провести анализ, где чего - проще застрелиться).
Перед поиском определять количество строк и в цикле склеивать значения с кавычками и запятыми так, как это должно быть представлено в итоге, в смысле, 'tel1','tel2','tel3' и т.д.
Результат присвоить переменной.
Запрос будет иметь вид вроде этого:
Код:
select * from t where tel IN ('+v+')
где v=''tel1','tel2','tel3''
Примерно так попробовал:

PHP код:
var
  
string;
  
iInteger;
begin
   
for := 0 to mmo1.Lines.Count do
   
mmo1.Lines[i] := #039 + mmo1.Lines[i]+#039+#044;
  
s:= mmo1.Lines.DelimitedText;
  try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Table1 WHERE Telefon IN ('+s+')');
Showmessage(ADOQuery1.SQL.Text);
ADOQuery1.Active:= True;
except
  on e
:Exception do
  
end
Образуются лишние кавычки...а это плохо.
Просто хотелось бы, чтобы можно было вводить каждый номер телефона с новой строки, но при этом не добавлять запятую. Поскольку если телефонов 100, а мы допустим просто копируем список телефонов для проверки в Мемо, то потом сидеть и расставлять запятые как то не очень)
В общем будем искать

Последний раз редактировалось Hayaname; 17.08.2012 в 17:16.
Hayaname вне форума Ответить с цитированием
Старый 17.08.2012, 17:13   #16
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Хотя посмотрел, последняя запятая не играет роли, да и номера легко вводятся построчно, не нарушая запроса, окей, буду делать Pos и Copy

А если брать как вариант с добавлением запятых после каждого номера, то что если сначала объединить введенные строчки:

Код:
s:=#039 + mmo1.Lines.DelimitedText;
А потом просто в общей строке s найти все запятые и заменить их на последовательность: #039+#044+#039 ?)

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

Отталкивайся от того как ты вводишь номера ...

если построчно и без запятых в конце

Код:
str:='''';
for  i:=0 to form1.Memo1.Lines.count-1 do
begin
str:=str+form1.Memo1.Lines.Strings[i]+'''';
if i<>(form1.Memo1.lines.count-1) then
str:=str+','''
end;
а если через запятую в строку, то примерно так.
Код:
while true do 
begin
If pos(',', ...) then 
INSERT('''',string,pos(...))
else
break;
end;
сори нету времени нормально описать.
Skype : UASm1Le.

Последний раз редактировалось Sm1Le; 17.08.2012 в 17:54.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 21:31   #18
Hayaname
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Sm1Le Посмотреть сообщение
Отталкивайся от того как ты вводишь номера ...

если построчно и без запятых в конце

Код:
str:='''';
for  i:=0 to form1.Memo1.Lines.count-1 do
begin
str:=str+form1.Memo1.Lines.Strings[i]+'''';
if i<>(form1.Memo1.lines.count-1) then
str:=str+','''
end;
а если через запятую в строку, то примерно так.
Код:
while true do 
begin
If pos(',', ...) then 
INSERT('''',string,pos(...))
else
break;
end;
сори нету времени нормально описать.
Огромное спасибо)
Hayaname вне форума Ответить с цитированием
Старый 20.08.2012, 11:23   #19
mansuetudo
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Hayaname Посмотреть сообщение
Просто хотелось бы, чтобы можно было вводить каждый номер телефона с новой строки, но при этом не добавлять запятую. Поскольку если телефонов 100, а мы допустим просто копируем список телефонов для проверки в Мемо, то потом сидеть и расставлять запятые как то не очень)
В общем будем искать
А зачем их расставлять? Пусть номера будут без запятых, их вполне можно добавить при анализе содержимого мемо (так же, как мы ставим кавычки). Если мы ставим кавычки программно, то и запятые расставить не проблема, а если мы вручную ставим запятые, то зачем кавычки ставить в программе?
mansuetudo вне форума Ответить с цитированием
Старый 20.08.2012, 13:10   #20
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от mansuetudo Посмотреть сообщение
А зачем их расставлять? Пусть номера будут без запятых, их вполне можно добавить при анализе содержимого мемо (так же, как мы ставим кавычки). Если мы ставим кавычки программно, то и запятые расставить не проблема, а если мы вручную ставим запятые, то зачем кавычки ставить в программе?
все зависит от того как у автора добавляются данные ...

может у него список через запятые из другой программы выдаеться ... а может человек руками вбивает каждый норме ... тогда проще нажать ентер после ввода ... и использовать анализ по строкам ... вообщем. Автор умолчал свой способ. А мы может только догадываться.
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