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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.11.2012, 20:42
Аватар для Paskal
Paskal Paskal вне форума
Новичок
 
Регистрация: 28.09.2010
Сообщения: 93
Репутация: 12
Восклицание Подстановка данных с бд ошибка

Здравствуйте!
Вообщем суть такова есть на форме Edit и бд Access (.mdb) При вводе данных в Edit стоит событие Edit1KeyUp при существовании вводимых значений они подставляются в строку Edit(а). Ошибка в том что при вводе символов с которых начинается значение в бд напр. Ав то подставляется Автобус. Но если вводить Ави которого нет в бд то вылазит ошибка в строке with ADOQuery1 do Типа что неправильно определен объект parametr (adoconnection) или несовместимые или неполные данные. (У меня в adoconnection 3 параметра Kods, Art, Posx - Может из за этого)
Вот сам код но код не мой только адаптировал под себя, может кто знает другие варианты попроще или с этим что то подскажите чайничку.
Заранее весьма признателен
Код:
procedure TForm2.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  pos2:word;
  s2:string;
begin            //Подстановка данных
   if Key>47 then
    begin
     Edit1.ClearSelection;
     Pos2:=Length(Edit1.Text);
     ADOQuery1.SQL.Add('SELECT Kod FROM Products WHERE Kod LIKE :Kods');
     ADOQuery1.Parameters.ParamValues['Kods']:=Trim(Edit1.Text)+'%';
     ADOQuery1.Active:=True;
     with ADOQuery1 do
      begin
       if Active then
        Close;
       Open;
       if FieldByName('Kod').IsNull=False then
        begin
        Edit1.Text:=fieldbyname('Kod').AsString;
        Edit1.SelStart:=Pos2;
        Edit1.SelLength:=length(Edit1.Text)-1;
        ADOQuery1.SQL.Clear;
        end
       else MessageBeep(0);
      end;
    end;
end;
Ответить с цитированием
  #2  
Старый 15.11.2012, 23:13
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

ну и правильно ругается...

у вас ADOQuery1.Clear выполняется только если Kod не Null
а Adoquery1.Sql.Add Выполняется каждый раз. т.е.

ввели букву "А" заполнился запрос выполнился очистился. ввели букву "В" запрос заполнился (Выполнилось адд). но не очистился, ввели "И" получили запрос вида :

Код:
SELECT Kod FROM Products WHERE Kod LIKE :Kods
SELECT Kod FROM Products WHERE Kod LIKE :Kods

перед Adoquery1.Sql.Add, поставить ADOQuery1.Clear

не айс, однако.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #3  
Старый 15.11.2012, 23:54
Аватар для Paskal
Paskal Paskal вне форума
Новичок
 
Регистрация: 28.09.2010
Сообщения: 93
Репутация: 12
По умолчанию

Цитата:
Сообщение от Black Raider
ну и правильно ругается...

у вас ADOQuery1.Clear выполняется только если Kod не Null
а Adoquery1.Sql.Add Выполняется каждый раз. т.е.

ввели букву "А" заполнился запрос выполнился очистился. ввели букву "В" запрос заполнился (Выполнилось адд). но не очистился, ввели "И" получили запрос вида :

Код:
SELECT Kod FROM Products WHERE Kod LIKE :Kods
SELECT Kod FROM Products WHERE Kod LIKE :Kods

перед Adoquery1.Sql.Add, поставить ADOQuery1.Clear

не айс, однако.

Большое спасибо задача решена
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter