Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.08.2012, 10:00
Oleghka777 Oleghka777 вне форума
Прохожий
 
Регистрация: 09.07.2012
Сообщения: 10
Репутация: 10
Вопрос поиск по содержимомму поля в БД ADO

Здравствуйте тема довльно избитая но все же... Не обходимо осуществить поиск в Базе данных, в частности в таблице по содержимому текстового поля и вывести все найденые значения. Значений может быть несколько. Я сделал запрос с параметром:
Код:
SELECT*
FROM контрольная_карточка2
WHERE Краткое_содерж LIKE:krs
На форме есть edit куда нужно вводить текст для поиска и кнопка по нажатию которой должен отобразится результат поиска код кнопки
Код:
begin
 datamodule1.sodquery.Active:=false;
 datamodule1.sodquery.Parameters.ParamByName('krs').Value:=soderjedit.Text;
datamodule1.sodquery.Active:=true;
soderjedit.Clear;
findrezform4.ShowModal;
end;
Проблема в том что находит не все значение в таблице удовлетворяющие критериям поиска первые три строчки таблицы почемуто не включены в поиск.
Ответить с цитированием
  #2  
Старый 08.08.2012, 10:04
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

есть возможность показать сие творение?
Ответить с цитированием
  #3  
Старый 08.08.2012, 11:23
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Oleghka777
Проблема в том что находит не все значение в таблице удовлетворяющие критериям поиска первые три строчки таблицы почемуто не включены в поиск.
Не, такого не может быть. Видимо действительно первые три строчки не удовлетворяют критериям поиска. И еще посмотри у компонента sodquery в свойстве Filter ничего случаем нет?
Да. Ещё эти первые строчки могут оказаться не первыми.
Ответить с цитированием
  #4  
Старый 08.08.2012, 23:16
Kristinoidrr Kristinoidrr вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 8
Репутация: 10
По умолчанию поиск по дате

Ребят, доброй ночи! Помогите, пожалуйста! Бьюсь уже не знаю сколько над этим..

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР='+DateToStr(datetimePicker1.Date));
ADOQuery1.Active:=True;

никак не могу настроить поиск по дате! ошибка синтаксиса и всё тут..
Ответить с цитированием
  #5  
Старый 08.08.2012, 23:43
MiraLaklamon MiraLaklamon вне форума
Новичок
 
Регистрация: 07.06.2012
Сообщения: 59
Версия Delphi: 6, 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kristinoidrr
Ребят, доброй ночи! Помогите, пожалуйста! Бьюсь уже не знаю сколько над этим..

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР='+DateToStr(datetimePicker1.Date));
ADOQuery1.Active:=True;

никак не могу настроить поиск по дате! ошибка синтаксиса и всё тут..
Дату помещай в кавычки:
Код:
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР='''+DateToStr(datetimePicker1.Date))+'''';
Ответить с цитированием
  #6  
Старый 09.08.2012, 00:06
Kristinoidrr Kristinoidrr вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 8
Репутация: 10
По умолчанию

пробовала, не хочет
"Несоответствие типов данных в выражении условия отбора"
Ответить с цитированием
  #7  
Старый 09.08.2012, 00:08
Kristinoidrr Kristinoidrr вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 8
Репутация: 10
По умолчанию

у меня тип поля ДР - дата. может из-за этого?
вот это работает:

If myFilter //булевский тип
Then
Accept := (DataSet.FieldByName('ДР').AsDateTime >= poisk1.dtp2.Date) And
(DataSet.FieldByName('ДР').AsDateTime <= poisk1.dtp4.Date)
Else Accept := True;

а по конкретной дате работать не хочет зараза
Ответить с цитированием
  #8  
Старый 09.08.2012, 00:25
MiraLaklamon MiraLaklamon вне форума
Новичок
 
Регистрация: 07.06.2012
Сообщения: 59
Версия Delphi: 6, 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kristinoidrr
пробовала, не хочет
"Несоответствие типов данных в выражении условия отбора"
А каким провайдером данных ты пользуешься? Это что Excel или Access?
Попробуй так:
Код:
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР=#'+FormatDateTime('mm/dd/yyyy', datetimePicker1.Date)+'#';

И обычно все проблемы с датами в SQL-запросе снимаются если с ними работать через параметры:
Код:
ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР=:DateParam';
ADOQuery1.Parameters.ParamByName('DateParam').Value:=datetimePicker1.Date;
Ответить с цитированием
  #9  
Старый 09.08.2012, 00:52
Kristinoidrr Kristinoidrr вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 8
Репутация: 10
По умолчанию

через Excel .
#'+FormatDateTime('mm/dd/yyyy', datetimePicker1.Date)+'#' - не работает так же - синтаксическая ошибка
второй вариант через параметры тоже не работает - "Несоответствие типов данных в выражении условия отбора"
Редактировать/Удалить сообщение
Ответить с цитированием
  #10  
Старый 09.08.2012, 02:17
MiraLaklamon MiraLaklamon вне форума
Новичок
 
Регистрация: 07.06.2012
Сообщения: 59
Версия Delphi: 6, 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kristinoidrr
через Excel .
#'+FormatDateTime('mm/dd/yyyy', datetimePicker1.Date)+'#' - не работает так же - синтаксическая ошибка
второй вариант через параметры тоже не работает - "Несоответствие типов данных в выражении условия отбора"
Редактировать/Удалить сообщение
Только что попробовала. Вот так у меня работает:
Код:
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР=#'+FormatDateTime('mm"/"dd"/"yyyy', datetimePicker1.Date)+'#');
  ADOQuery1.Active:=True;
Ответить с цитированием
Этот пользователь сказал Спасибо MiraLaklamon за это полезное сообщение:
Kristinoidrr (09.08.2012)
  #11  
Старый 09.08.2012, 07:57
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

я совершал десятки ошибок на эту тему, пока местные гуру не открыли мне тайну работы с параметрами, чего и тебе советую
Ответить с цитированием
  #12  
Старый 09.08.2012, 11:54
Kristinoidrr Kristinoidrr вне форума
Прохожий
 
Регистрация: 02.06.2011
Сообщения: 8
Репутация: 10
По умолчанию поиск по дате

Цитата:
Сообщение от MiraLaklamon
Только что попробовала. Вот так у меня работает:
Код:
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT * FROM [Лист1$] WHERE ДР=#'+FormatDateTime('mm"/"dd"/"yyyy', datetimePicker1.Date)+'#');
  ADOQuery1.Active:=True;

Ёлки, оказывается надо было просто кавычки нужные поставить) работает) спасибо большое за помощь!
а с параметрами конечно разберусь!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter