Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по запросу, поиск 
:(
    Опции темы
ruslan_r
Дата 10.7.2002, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Учусь писать на Дельфи.
Делаю программу. Она представляет собой  ввод данных  в виде карточки в которую например входят данные (Фамилия, имя, отчество, год рождения, и.т.д.) Хочу сделать поиск карточки  по любым выбраным реквизитам. например: (по фамилии и году рождения, остальные реквизиты пусты  ), и что бы программы произвела поиск по заданому запросу и открыла карточку если такая  существует. Подскажите как это сделать  

Как подсказал мне Vit у меня не получилось. Или я может неправильно задал вопрос.

Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM main WHERE Фамилия="'+Edit2.Text+'"');
Query1.Open;
LL.Caption:=IntToStr(Query1.RecordCount);
IF Query1.RecordCount=0 THEN ShowMessage('Нет такой записи');
b:=Query1.FieldByName('Key').AsInteger;
PM MAIL   Вверх
Vit
Дата 10.7.2002, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Вроде формально всё правильно, а собственно что не получилось? Кстати, попробуй текст в одинарных кавычках, обычно так лучше работает:

Query1.SQL.Add('SELECT * FROM main WHERE Фамилия='''+Edit2.Text+'''');




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Alex101
Дата 10.7.2002, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Или попробуй так:
Query1.SQL.Add('SELECT * FROM main WHERE Фамилия=: SURN');
Query1.Params[0].AsString := Edit2.Text;
Как я понял, ты вибираешь все записи, в которых значение поля "Фамилия" равно Edit2.Text...


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Vit
Дата 10.7.2002, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



Цитата(Alex101 @ 10.7.2002, 14:56)
Query1.SQL.Add('SELECT * FROM main WHERE Фамилия=: SURN');
Query1.Params[0].AsString := Edit2.Text;

Так не пойдёт - кверя может параметры не находить, надо вначале ParsSQL вызывать, а вообще идея не плохая, только давайте вначале узнаем что именно не работает.

PS. А какая база данных если не секрет, там может быть еще проблема с пониманием русского текста, на выяснить поддерживается ли кириллица, иначе  можно кверить до ссудного дня, ничего возвращаться не будет...




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Alex101
Дата 11.7.2002, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Alex101 @ 10.7.2002, 14:56)
Query1.SQL.Add('SELECT * FROM main WHERE Фамилия=: SURN');
Query1.Params[0].AsString := Edit2.Text;

Цитата(Vit @ 11.7.2002, 00:32)
Так не пойдёт - кверя может параметры не находить, надо вначале ParsSQL вызывать, а вообще идея не плохая, только давайте вначале узнаем что именно не работает.

У меня с парадокс такое всегда работало...
Можно еще через парамбайнейм
Или и в этом случае не найдет?
Через параметры удобнее и код понятнее...
PS
А может запрос-то делается, но просто ничего по нему не находится?


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Alex101
Дата 11.7.2002, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Query1.SQL.Add('SELECT * FROM main WHERE Фамилия='+'"'+Edit2.Text+'"');
Попробуй так.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
WhCrow
  Дата 11.7.2002, 14:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вообще-то, не совсем понятно что именно не получилось, но попробую предложить свой код:
Query1.SQL.Clear;
Query1.SQL.Text:='select * from main where фамилия='''+Edit2.Text+''''; {хотя я бы не советовала задавать *, даже если тебе реально надо вытащить все значения, лучше их перечислить (печатать много, но это окупится). С запросами, содержащими *, часто возникают проблемы после изменений в базе}
Qiery1.Open;
Query1.Last; {реально кворя может узнать сколько было вытянуто записей, если она пройдётся по ним. Для этого мы выполняем эту строку.}
LL.Caption:=IntToStr(Query1.RecordCount);
Query1.First; //возвращаем на первую запись
if LL.Caption='0' then
 ShowMessage('Нет такой записи')
else
 for i:=0 to StrToInt(LL.Caption)-1 do
 begin
   b:=Query1.FieldByName('Key').AsInteger; {либо если ты знаешь каким по счёту идёт в базе твой филд Key, то задать можно следующим образом b:= Query1.Fields.Fields[номер филда по счёту начиная с 0].AsInteger;}
   Query1.Next;
 end;
Query1.Close;
Надеюсь поможет  :D
  Вверх
Vit
Дата 11.7.2002, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

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



По поводу параметров - параметры кверей, созданных в дизайне можно использовать сразу, а если текст кверей присваивается в run-time, то BDE обычно ничего о параметрах не знает, и очень желательно добавить следующую строку:

 query1.Params.ParseSQL(query1.sql.text, true);

Иначе весьма вероятен вылет программы по ошибке.

По поводу языка. Автору следует попробывать прокверить таблицу с английскими значениями, если это работает, а с русскими нет, то дело в языковых настройках - в самом парадоксе их можно поменять в свойствах таблицы - в том же месте где меняются вторичные индексы...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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