Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск через SQL, если база подключена через ADO, Опять банально - в DRKB снова непонятно 
:(
    Опции темы
Vorona
Дата 17.10.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2



Подскажите please, какие компоненты надо использовать для поиска через SQL, если база подключена через ADO, и как они должны быть связанны, допуская, что выборку производим выводя информацию в DBListBox

Как это сделать, если надо к примеру вводя текст в EDIT выводить в этот самый DBListBox
те записи из БД, начало которых совпадает с указанным нами текстом
PM MAIL WWW   Вверх
MishaSt
Дата 17.10.2004, 17:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.10.2004

Репутация: нет
Всего: нет



TADOConnection<->TADOQuery<->TDataSource <->TDBGrid

ADOConnection1.ConnectionString := 'Provider = Microsoft.Jet.4.0; Data Source = C:\Base;';
ADOConnection1.Open;
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM mytable.mdb WHERE CustomerId = 12;');
ADOQuery1.ExecSQL;
ADOQuery1.Active := True;
DataSource1.DataSet := ADOQuery1;
DBGrid1. DataSource := DataSource1;

PM MAIL   Вверх
Pakshin A. S.
Дата 17.10.2004, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Попробуйте так:
1) Делаем подключение в ADOConnection
2) Ставим DataSource, ADOQuery и DBListBox
3) Устанавливаем связи:
DBListBox1.DataSource:=DataSource1;
DataSource.DataSet:=ADOQuery1;
ADOQuery1.Connection:=ADOConnection1;
4) Делаем:
Код

with ADOQuery1 do
begin
 Close;
 SQL.Text:='Select SomeField from SomeTable;';
 Open
end;

:)
PM   Вверх
Vorona
Дата 17.10.2004, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2



оно глючит....... хотя наверное не оно, а просто я не шарю

пишет что, что мало ему параметров. Ну я создала один, все равно пишет, что неправильно применяю
я ему присвоила содержание Edit-та а потом не могу его сравнить с полем таблицы

как их вообще применять, эти параметры?

PM MAIL WWW   Вверх
Fedor
Дата 17.10.2004, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата
пишет что, что мало ему параметров

Тут возможно, что ты неправильно назвала поле таблицы или саму таблицу. Ну например вместо запроса
Select SomeField FROM .....
ты написала
Select Someield FROM ..... (нет буквы F)

А вообще понятие параметров здесь реализовывается так:
Код

 ADOQuery1.SQL.Add('SELECT * FROM MyTable WHERE id=:ss');
 ADOQuery1.Parameters.ParamByName('ss').Value:=i;


И тогда Delphi там, где стоит ss подставит текущее значение переменной i. Тут важно, чтоб имя параметра в самом запросе и в ParamByName имело одинаковый регистр букв. Иначе Delphi будет ругаться ексепшонами.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Vorona
Дата 17.10.2004, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2



а что такое id
это может быть полем таблицы?
может ли при этом быть использован id like :ss
у меня пока не хочет..
PM MAIL WWW   Вверх
Fedor
Дата 17.10.2004, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Цитата
а что такое id
пример поля таблицы
Цитата
это может быть полем таблицы?
да
Цитата
может ли при этом быть использован id like :ss
скорее всего да, хотя не уверен
Цитата
у меня пока не хочет..
а что именно не хочет?


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Pakshin A. S.
Дата 17.10.2004, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Попробуй выполнить запрос на DBGrid'е. Если ошибка не исчезнет, то пости SQL код сюда: обязательно ошибочку найдем... :D

Цитата(Morpheus @ 17.10.2004, 21:14)
Цитата (Люба @ 17.10.2004, 20:12)
может ли при этом быть использован id like :ss

скорее всего да, хотя не уверен


А по-моему конструкция LIKE применипа для полей символьного типа...
PM   Вверх
Vorona
Дата 17.10.2004, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2




Morpheus

работать не хочет, а ты что подумал?

и кстати listbox в упор не видит, просто ничего туда не выводит
у одного моего одноклассника та же история

но зато вроде на счет кода не ругается
Добавлено @ 20:40
Pakshin A. S.

на DBGrid'е все работает, вот в том-то и проблема...
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 17.10.2004, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Лично я бы сделал так: загрузин всю потеху от SQL в DBGrid, а потом оттудова всё в обыкновенный ListBox засунул... Даже и без DBGrid'а можно обойтись.
Код

with ADOQuery1 do
begin
 Close;
 SQL.Text:='Select * from Table1 where id = ' + Edit1.Text + ';'; //id- идентификационный номер записи
 Open;
 listBox1.Items.Clear;
 while not Eof do
  begin
   ListBox1.Items.Add(ADOQuery1.Fields[1].AsString); // поле после id
   Next;
  end;
 Close;
end;

Немного дольше, но вернее... :thumbs-up
PM   Вверх
Vorona
Дата 17.10.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2



Pakshin A. S.

прийдется... но странно все же, что он не работает

а как организовать через параметр в sql поиск не на совпадение всего слова, а вот ввели мы к примеру первую букву слова, а оно вывело в списочек все записи базы на эту букву
PM MAIL WWW   Вверх
Pakshin A. S.
Дата 17.10.2004, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



ПОЗДРАВЛЯЮ, у тебя будет прога!!!
Просто надо добавить
Код

with ADOQuery1 do
 begin
  ...
 end;
DBListBox1.MasterField:='FieldName';

Добавлено @ 20:56
Попробуй... :D
Просто без этого у меня DBListBox оставался девственно чистым, а как это вставил, вроде заработало, но это, правда, была работа через Query с таблицей Paradox, но, скорее всего,с ADO то же самое! :)
Добавлено @ 21:02
Цитата
а как организовать через параметр в sql поиск не на совпадение всего слова, а вот ввели мы к примеру первую букву слова, а оно вывело в списочек все записи базы на эту букву


Проще простого!!! :thumbs-up
Код

SELECT FIO FROM Spisok1 WHERE FIO LIKE ' + #39 + Edit1.Text + '%' + #39 + ';';

Будет выведен список всех значений поля FIO, начинающихся с текста в Edit1. :) :thumbs-up :cool
PM   Вверх
Vorona
Дата 17.10.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 12.10.2004
Где: Украина, Днепропе тровск

Репутация: нет
Всего: 2



спасибо! :D :D :D :D :D :D :D

PM MAIL WWW   Вверх
Pakshin A. S.
Дата 17.10.2004, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 2
Всего: 61



Обращайся!!! :thumbs-up :D


:offtopic
P. S.
Как тебе форум? Нравится? :)
PM   Вверх
Fedor
Дата 17.10.2004, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



:offtopic
Цитата
а ты что подумал

Да я подумал не то, что ты подумала, а спросил что именно не работает. ;-)

И присоединяюсь к вопросу
Цитата(Pakshin @ 17.10.2004, 21:34)
Как тебе форум? Нравится?
:hehe

Это сообщение отредактировал(а) Morpheus - 17.10.2004, 23:09


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.