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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.11.2013, 02:06
bsambo2013 bsambo2013 вне форума
Прохожий
 
Регистрация: 28.11.2013
Сообщения: 6
Версия Delphi: RAD XE3
Репутация: 10
Смех как организовать поиск в БД

Привет всем можете помочь написать код
я к ADOConnection подключил БД access,вывел в DBgrid1 все таблица показывает.
Какой код нужно написать чтобы :и скал по таблице dbgrid1,в edi1 вводить данные и на button1 кликать и он производил поиск,а при выборе radioButton2 он производил поиск только фамилии,а по RadioButton3 только Страна, и на radiobutton1 отдельно просто жмешь и он выводил первые три результата
и все результаты показывал в dbgrid2
и прошу чтоб код: чтоб результат поиска записывался в текстовый файл .txt
вот скрины

Ответить с цитированием
  #2  
Старый 28.11.2013, 06:56
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Скрины не видны.
2. Сумбурно, но более менее понятно. Задача настолько элементарная, что даже думать не хочется. Если ты хочешь видеть результат поиска в другом гриде, то просто надо по твоим параметрам генерировать запрос и выполнять его (не уверен, что access поддерживает ограничение кол-ва выводимых записей, тут надо смотреть). Если устраивает фильтрация в основном гриде, то можно "сесть" на событие OnFilterRecord. Тогда даже кнопки никакие не нужны, все будет работать автоматически на локали.
3. Вывод в файл тоже делается без особых проблем, но зависит от данных, которые надо выводить.
4. Для получения более конкретной помощи необходимо выкладывать свой код и КОНКРЕТНО вопросы ЧЕГО НЕ ПОЛУЧАЕТСЯ. С темами "сделайте мне" и "дайте готовый код" надо в раздел "Работа" или "Код на шару".
Ответить с цитированием
  #3  
Старый 28.11.2013, 10:43
bsambo2013 bsambo2013 вне форума
Прохожий
 
Регистрация: 28.11.2013
Сообщения: 6
Версия Delphi: RAD XE3
Репутация: 10
По умолчанию

ПОмогите а то я вобще тупой =(
ВОт сылка на саму программу :http://files.mail.ru/A78000242DFA48B4B2C827CA07254B34
скрины



Последний раз редактировалось bsambo2013, 28.11.2013 в 10:46.
Ответить с цитированием
  #4  
Старый 28.11.2013, 21:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну брось еще один ADOQuery, подключи его (пусть это будет ADOQueryFind).
При клике на кнопку "Найти" напиши примерно такой код (имен полей не знаю, соотв, поставил по русски):

Код:
procedure Form1.btFindClick(Sender : TObject);
const
  cQuery = 'SELECT * FROM Таблица WHERE %s = ''%s''';
var
  sQuery : String;
  sField : String;
begin
  If rbLastName.Checked 
    Then sField := 'Фамилия'
    Else sField := 'Страна';
  sQuery := Format(cQuery,[sField,edFind.Text]);
  ADOQueryFind.SQL.Clear;
  ADOQueryFind.SQL.Add(sQuery);
  ADOQueryFind.Open;
end;

Это для точного сравнения.
Для точного сравнения без учета регистра, константу надо описать так:
Код:
const
  cQuery = 'SELECT * FROM Таблица WHERE UPPER(%s) = UPPER(''%s'')';

Для неточного сравнения (по началу строки), но с учетом регистра, надо сделать такую константу:
Код:
const
  cQuery = 'SELECT * FROM Таблица WHERE %s LIKE ''%s%''';
Ну, как убрать зависимости от регистра в последнем случае, сам сообразишь.


Но я бы все-равно лучше бы "сел" на OnFilterRecord. Так красивее получается И не нужен дополнительный грид.

ЗЫ. Все, дальше или в "Код на шару", или в "Работу".
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
bsambo2013 (28.11.2013)
  #5  
Старый 28.11.2013, 23:09
bsambo2013 bsambo2013 вне форума
Прохожий
 
Регистрация: 28.11.2013
Сообщения: 6
Версия Delphi: RAD XE3
Репутация: 10
По умолчанию

у меня ошибка когда adoqueryfind подключаю к базе в activ ставлю на true И
ADOQueryFInd :Missing SQL propertly.Я вобще тупой не могли бы вы сами подравить?прошу очень сильно =( http://files.mail.ru/A78000242DFA48B4B2C827CA07254B34

Код:
begin
  ADOQuery2.SQL.Text:='SELECT';
  if CheckBox1.Checked then ADOQuery2.SQL.Add('TOP 3');
  ADOQuery2.SQL.Add('* FROM Temp');
  If length(Edit1.Text)>0 then
    begin
      if RadioButton1.Checked then ADOQuery2.SQL.Add('WHERE [Фамилия] like '+QuotedSTR('%'+Edit1.Text+'%'))
      else ADOQuery2.SQL.Add('WHERE [Страна] like '+QuotedSTR('%'+Edit1.Text+'%'));
    end;
  ADOQuery2.Open;

Админ: Пользуемся тегами для оформления кода!

Всё, всем спасибо! Сам догадался как сделать.

АА есщо можно?,При нажатии на CheckBox1 должен выводить список 3 первых из dbgrid1 результатов баллы там есть строка "общие",выводит в Dbgrid2

Последний раз редактировалось M.A.D.M.A.N., 05.12.2013 в 07:22.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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