Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2012, 20:42   #1
Paskal1
Пользователь
 
Аватар для Paskal1
 
Регистрация: 22.10.2010
Сообщений: 69
По умолчанию Подстановка данных с бд ошибка

Здравствуйте!
Вообщем суть такова есть на форме 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;

Последний раз редактировалось Stilet; 15.11.2012 в 21:10.
Paskal1 вне форума Ответить с цитированием
Старый 15.11.2012, 21:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно, а если ход конем?:
Код:
     ADOQuery1.SQL.Add('SELECT Kod FROM Products WHERE upper(Kod) LIKE '+QuotedStr(Trim(AnsiUppercase(Edit1.Text))+'%'));
     ADOQuery1.Active:=True;
...
Так срабатывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2012, 21:25   #3
Paskal1
Пользователь
 
Аватар для Paskal1
 
Регистрация: 22.10.2010
Сообщений: 69
По умолчанию

Попробовал
Ошибка неопределенная функция upper

Последний раз редактировалось Paskal1; 15.11.2012 в 21:29.
Paskal1 вне форума Ответить с цитированием
Старый 15.11.2012, 21:35   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
У меня в adoconnection 3 параметра Kods, Art, Posx - Может из за этого
Что бы это значило? Я понял так, что в ADOQuery1 в Parameters созданы 3 параметра, а в самом запросе в наличии 1. Тогда неправильно определен объект parametr понятно почему
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2012, 21:36   #5
Paskal1
Пользователь
 
Аватар для Paskal1
 
Регистрация: 22.10.2010
Сообщений: 69
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что бы это значило? Я понял так, что в ADOQuery1 в Parameters созданы 3 параметра, а в самом запросе в наличии 1. Тогда неправильно определен объект parametr понятно почему
Остальные параметры я использую аналогично в других полях я так уже понимаю что это неправильно?
Paskal1 вне форума Ответить с цитированием
Старый 15.11.2012, 21:41   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Делай
Код:
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT Kod FROM Products WHERE Kod LIKE :Kods';
ADOQuery1.Parameters.ParamValues['Kods']:=Trim(Edit1.Text)+'%';
ADOQuery1.Active:=True;
И зачем
Код:
       if Active then
        Close;
       Open;
если ADOQuery1 уже и так активизирован
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2012, 21:51   #7
Paskal1
Пользователь
 
Аватар для Paskal1
 
Регистрация: 22.10.2010
Сообщений: 69
По умолчанию

Попробовал так
PHP код:
ADOQuery1.Close;
      
ADOQuery1.SQL.Text:='SELECT Kod FROM Products WHERE upper(Kod) LIKE '+QuotedStr(Trim(AnsiUppercase(Edit1.Text))+'%');
    
// ADOQuery1.SQL.Add('SELECT Kod FROM Products WHERE upper(Kod) LIKE '+QuotedStr(Trim(AnsiUppercase(Edit1.Text))+'%'));
     
ADOQuery1.Active:=True
Снова ошибка upper неизвестная функция (
Paskal1 вне форума Ответить с цитированием
Старый 15.11.2012, 21:54   #8
Paskal1
Пользователь
 
Аватар для Paskal1
 
Регистрация: 22.10.2010
Сообщений: 69
По умолчанию

Может исходник скинуть может я чета не настроил?
Paskal1 вне форума Ответить с цитированием
Старый 15.11.2012, 21:56   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Нет в ACCESS функции UPPER
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2012, 22:03   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно без нее:
Код:
 ADOQuery1.SQL.Add('SELECT Kod FROM Products WHERE Kod LIKE '+QuotedStr(Trim((Edit1.Text))+'%'));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстановка в диапазон недостающих данных strannick Microsoft Office Excel 12 02.05.2012 15:59
подстановка данных в формулу и запись расчета в таблицу Eve555 Microsoft Office Excel 5 19.01.2012 16:44
Подстановка данных сразу из 4 таблиц в одну в С++ Builder 6 Гудрон C/C++ Базы данных 1 24.03.2011 23:20
Подстановка данных из разных книг по 3-ем условиям hromovea Microsoft Office Excel 4 12.09.2009 12:38
Выборка и подстановка данных. HIC БД в Delphi 10 10.09.2009 11:34