Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
:D вы кто? здравствуйте!

подскажите, пожалуйста, как составить запрос SQL так, чтобы из аксессовской БД найти неточные совпадения... у меня есть таблица, есть несколько компонентов TEdit. нужно чтобы каждый из Edit искал в таблице неточные совпадения с значениями одного из столбцов. и по результатам одновременного поиска формировалась таблица DBGrid блин... :( не умею я объясняться... надеюсь, вы меня поняли. простите за тупость мою.
25 дек 06, 22:40    [3580300]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
Приведите пример данных и желаемого результата
25 дек 06, 22:55    [3580317]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
у меня таблица с полями Название_статьи , Имя_автора, Год_выхода. необходимо сделать поиск. чтобы пользователь ввел например в одну строку Edit часть названия журнала, в другую сторку Edit- часть имени автора. а год выхода чтобы был представлен списком, из которого можно было выбирать значения. то есть отметить определенные года. и необходимо на основании всех введенных данных с помощью запроса SQL состваить таблицу DBGrid.
пример:
1.пользователь не помнит полностью имя автора, и вводит лишь часть: Керн
2.затем вводит название статьи: "Использование Bones при создании анимации"
3.среди представленного списка годов, выбирает либо только необходимые, либо галочками отмечает все года.
4.жмет кнопку "найти" и получает желаемое в виде таблицы :)

заранее спасибо!
25 дек 06, 23:19    [3580340]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
м.... вы попросили уточнить... я старался объяснить максимально доступно. уделите мне, пожалуйста, ваше внимание, мне ответ действительно необходим.
25 дек 06, 23:25    [3580344]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
Запрос, который вы можете поместить как источник для поля со списком:
Select [Год_выхода]
From ВашаТаблица
Where [Название_статьи] Like "*" & Forms![Форма].[ПолеФормыСНазванием] & "*" 
AND [Имя_автора] Like "*" & Forms![Форма].[ПолеФормыСИменемАвтора] & "*" 
25 дек 06, 23:57    [3580374]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
спасибо, счас попробую.
26 дек 06, 17:00    [3584551]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
НаГоршкеКороль
спасибо, счас попробую.
Вы можете и дальше двигаться по пути автоматизации. Например, после выбора фрагмента фамилии автора в списке статей размещать выборку только тех статей, которые соответствуют выбранному множеству авторов.
26 дек 06, 17:47    [3584885]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
м... как непросто учиться этому программированию... я тут счас сижу разбираюсь, и, как понял, вы мне написали запрос, результатом которого будет отображение только годов выпуска, ограниченных введенным текстом в два других поля...
то есть:
Select [Год_выхода] \\ выбрать значения годов
From ВашаТаблица \\ из таблицы
Where [Название_статьи] Like "*" & Forms![Форма].[ПолеФормыСНазванием] & "*" \\ где значение [названия_статьи] соответсвует введенному тексту в [ПолеФормыСНазванием]
AND [Имя_автора] Like "*" & Forms![Форма].[ПолеФормыСИменемАвтора] & "*" \\и где значение поля [Имя_автора] соответсвует [Имени_автора]

верно? я это так перевел. а что в этом коде указывает на то, что запрос неточный? ладно, вообщм счас буду разбираться снова как и что.
26 дек 06, 18:31    [3585114]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
так... :) я сделал
SELECT *
чтобы мне вывести весь запрос в таблицу. потому что в итоге мне надо получить таблицу. а весь запрос я вставил в ADOQuery. млин... как то надо сделать кнопку "поиск", чтобы она запускала запрос, и обновляла таблицу. вот что. или я совсем запутался что к чему.
26 дек 06, 18:51    [3585177]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
автор
а что в этом коде указывает на то, что запрос неточный?
Это оператор Like

автор
как то надо сделать кнопку "поиск"
Можно и так. Посмотрите свойства событий кнопки. У кнопки есть событие Click, обычно им пользуются для выполнения действий предназначенных кнопке. В процедуре этого события надо описать вызов запроса и подставить его текст в качестве источника данных списка или формы с годами (как вы хотели). Посмотрите хелп, книгу, поиск по форуму.
26 дек 06, 19:44    [3585304]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
м... читал книку Михаила Фленова "библия Дэлфи"... старался подставлять одно в другое, всяко по всякому. не работает блин... посмотрите пожалуйста, где ошибка вот в этом коде:

procedure TForm1.FindButtonClick(Sender: TObject); \\событие по нажатию кнопки "найти"
begin
DataModule1.FindQuery.Active:=false; \\ отключает FindQuery, чтобы в параметре SQL прописать запрос.
DataModule1.FindQuery.Parameters.ParamByName('NomerMag').Value:=
'''+FindNomerMagazEdit.Text+'' & ''*'''; \\вот тут вот уже сам старался понаписать... :( есть переменная 'NomerMag' и ей присваевается значение редактируемой строки, плюс ''*''. то есть плюс любое другое значение как я представляю. и должно искаться. а оно не ищется.
DataModule1.FindQuery.Active:=true;
end;

p.s. я понимаю что уже достал, но иначе не получается у меня. :(
26 дек 06, 20:10    [3585353]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
автор
ADOQuery
У вас база на сервере?
26 дек 06, 20:13    [3585358]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
А кстати! Вы в Access работаете? Или откуда-то хотите получить доступ к аксовским БД?
26 дек 06, 20:15    [3585360]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
у меня база на локальном компе. сервера нету. Многое сделал так, как написано в книжке Михаила, но некторое изменил под свои нужды. То есть сделал отдельную программу, которая может добавлять и изменять данные из БД. то есть необходимость использования самого аксесса отпадает, и я в нем не работаю. И компонент ADOQuery использую для SQL запроса из локальной базы. воть. :)
26 дек 06, 20:37    [3585406]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
У вас серьезная путаница. Предполагаю, что вашем локальном ПК нет серверной программы типа MSDE, хотя бы. И вы создали обычную БД, .mdb файл.
Аксцесс самостоятельная среда разработки приложений и имеет свои возможности, отличающиеся от Дельфи. Чтение книг по Дельфи может быть даст некоторое общее понимание, но техники работы в среде Аксцесс не прибавит. Вам нужно познакомиться непосредственно с Аксом. По книгам, по хелпу, поиском по форуму. Если вы не владеете английским, то рекомендую хелп от Акса 97. Он русский и, к тому же, сделан намного интереснее чем в последующих редакциях.
26 дек 06, 21:01    [3585459]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
э... вы правы, в голове моей путаница конечно... НО! в книжке у Фленова это всё работает. только он описывает как искать значения полей, используя один-единственный компонент Edit, куда вводится текст запроса. а мне надо сделать такой же поиск, но используя одновременно несколько Edit. вот. ну ладно, буду дальше ковыряться и читать литературу. загляну и в хелп аксессовский. mds_world, спасибо за всё!
26 дек 06, 21:23    [3585504]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
Fisherman
Member

Откуда:
Сообщений: 17
Попробуй вместо "*" подставить "%"
27 дек 06, 03:09    [3585762]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
пробовал, толку нет. где-то не так что-то делаю.
27 дек 06, 05:49    [3585796]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
Приведите здесь вашу базу. Сожмите так чтобы была не более 100 К.
27 дек 06, 06:45    [3585824]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
вроде бы все заработало. спасибо за ответы еще раз.
28 дек 06, 20:43    [3594946]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
Здравствуйте! получил я свой желанный зачет, но так и не довел до ума программу. праздники прошли, и надо бы снова мне пыхтеть над заданием. самому хочется сделать преподователю приятное. вот.... сделал я так, чтобы осуществлялся поиск из моей БД. и смог сделать так, чтобы если одно поле Edit не заполнено, то поиск его не учитывал. но проблема в том, что я тут сидел перебирал варианты, как это сделать, и сделал как-то коряво. код какой-то мудреный. и основной проблемой является то, что я так и не смог реализовать неточный поиск. то есть ищется только по точному совпадению. например, если юзер помнит только часть имени автора, то он не сможет осуществить поиск. помогите пожалуйста, подскажите, как мне нужно правильно сделать.
вот приведу код, который у меня получился:


var
Form1: TForm1;
PeremFindNomerMagazEdit: String;
PeremFindImiaAvtoraEdit: String;
PeremFindGodEdit: String;
PeremFindNazvaniesEdit: String;
PeremFindKluchevyeEdit: String; // создал кучу глобальных переменных, чтобы потом значения этих переменных использовались в SQL запросе


procedure TForm1.FindButtonClick(Sender: TObject); // вся нижеследующая дребедень происходит по нажатию кнопки "поиск"
begin
DataModule1.FindQuery.Active:=false;
DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('SELECT *');
DataModule1.FindQuery.SQL.Add('FROM Основные'); // SQL запрос элемента FindQuery очищается, и в него добавляются основы запроса. то есть SELECT * и FROM Основные (основные-название таблицы, из которой необходимо искать значения)
if FindNomerMagazEdit.Text <> '' then
begin
PeremFindNomerMagazEdit:=FindNomerMagazEdit.Text; // если поле FindNomerMagazEdit заполнено юзером, то глобальная переменная PeremFindNomerMagazEdit принимает значение этого поля.

DataModule1.FindQuery.SQL.Add('WHERE Номер LIKE:NomerMag'); // и в запрос добавляется выборка только тех значений поля Номер таблицы Основные, которые соответсвуют переменной NomerMag
DataModule1.FindQuery.Parameters.ParamByName('NomerMag').Value:=
PeremFindNomerMagazEdit; // которая, в своб очередь, принимает значение глобальной переменной PeremFindNomerMagazEdit. вот. только так замудрено работает. иначе как не пытался- не получается :(
end;
if FindImiaAvtoraEdit.Text <> '' then // ниже всё это повторяется. то есть если поле заполнено, то в SQL запрос добавляется строка. если Edit остался пустым, то новая строка не добавляется. следовательно, запрос учитывает только те Едиты, которые заполнены.
begin
PeremFindImiaAvtoraEdit:=FindImiaAvtoraEdit.Text;
DataModule1.FindQuery.SQL.Add('AND Имя LIKE:ImiaAvtora');
DataModule1.FindQuery.Parameters.ParamByName('ImiaAvtora').Value:=
PeremFindImiaAvtoraEdit;
end;
if FindGodEdit.Text <> '' then
begin
PeremFindGodEdit:=FindGodEdit.Text;
DataModule1.FindQuery.SQL.Add('AND Год LIKE:God');
DataModule1.FindQuery.Parameters.ParamByName('God').Value:=
PeremFindGodEdit;
end;
if FindNazvaniesEdit.Text <> '' then
begin
PeremFindNazvaniesEdit:=FindNazvaniesEdit.Text;
DataModule1.FindQuery.SQL.Add('AND Названиес LIKE:Nazvanies');
DataModule1.FindQuery.Parameters.ParamByName('Nazvanies').Value:=
PeremFindNazvaniesEdit;
end;
if FindKluchevyeEdit.Text <> '' then
begin
PeremFindKluchevyeEdit:=FindKluchevyeEdit.Text;
DataModule1.FindQuery.SQL.Add('AND Ключевые LIKE:Kluchevye');
DataModule1.FindQuery.Parameters.ParamByName('Kluchevye').Value:=
PeremFindKluchevyeEdit;
end;
DataModule1.FindQuery.Active:=true;
end;


вот. а как сюда еще припаять то, что в Edit может быть введена только половина значения поля, и запрос надо сделать неточным, я не знаю. :( выручайте!!! кто не поленится разбираться во всем этом убожестве, которое я состряпал. хех... :)


сама таблица вот что из себя представляет:

Названиеж Номер Имя Названиес Год Ключевые

"Спорт и здоровье" 4 Королев А.В., Зырянов А.В. "Влияние вегетососудистой дистонии на работу сердца" 2005 Сердце, Давление, Дистония, Кровь
"Техника- молодежи" 8 Ногих С.А. "Допуски и посадки. Квалитеты" 1988 Квалитет, Поля, Допуск, Посадка
"Вокруг света" 2 Борисов С.В., Хазова Н.В. "Путешествие в австралию" 2002 Поход, Австралия, Пляж
"Cosmopolitan" 6 Махметова О.М., Карасов В.О. "Как ухаживать за ногтями" 1999 Ногти, Маникюр, Уход
"ЗОЖ" 12 Третьяков М.К. "Метод уринотерапии в совремнном мире" 1991 Моча, Медицина, Гомеопатия

(это только примерно. внесением данных в таблицу будет заниматься другой чел.)
6 янв 07, 23:33    [3611333]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
блин.... таблица коряво отобразилась.... счас придумаю, как вам ее представить в нормальном виде...
p.s. модеры, сорри за второй пост
6 янв 07, 23:41    [3611346]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
mds_world
Member

Откуда: Ташкент
Сообщений: 27549
НаГоршкеКороль
блин.... таблица коряво отобразилась.... счас придумаю, как вам ее представить в нормальном виде...
Тег CSV вам в помощь
6 янв 07, 23:53    [3611364]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
Названиеж Номер Имя Названиес Год Ключевые
"Спорт и здоровье" 4 Королев А.В. Зырянов А.В. "Влияние вегетососудистой дистонии на работу сердца" 2005 Сердце Давление Дистония Кровь
"Техника- молодежи" 8 Ногих С.А. "Допуски и посадки. Квалитеты" 1988 Квалитет Поля Допуск Посадка
"Вокруг света" 2 Борисов С.В. Хазова Н.В. "Путешествие в австралию" 2002 Поход Австралия Пляж
"Cosmopolitan" 6 Махметова О.М. Карасов В.О. "Как ухаживать за ногтями" 1999 Ногти Маникюр Уход
"ЗОЖ" 12 Третьяков М.К. "Метод уринотерапии в совремнном мире" 1991 Моча Медицина Гомеопатия
вот. заключил в этот тег. надеюсь, все будет тип-топ. жаль, у вас на форуме нельзя редактировать собственный пост.
6 янв 07, 23:55    [3611371]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом. ну пожалуйста....  [new]
НаГоршкеКороль
Member

Откуда:
Сообщений: 42
ой блин.... загадил вам весь форум. модераторы! удалите, пожалуйста лишние посты.
7 янв 07, 00:00    [3611376]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить