Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

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

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2021, 11:45   #1
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 86
По умолчанию Запрос с параметром Like

Использую delphi7 + ado + acess 2010
запрос из программы:
Код:
qry1.SQL.Text:='SELECT * FROM kolesa WHERE nomer = 1234'
работает и возвращает данные из базы, а запрос ниже возвращает null
Код:
qry1.SQL.Text:='SELECT * FROM kolesa WHERE nomer Like "123*"'
в самом access запрос ниже работает
Код:
SELECT * FROM kolesa WHERE nomer Like "123*"
подскажите что не так?
uraura вне форума Ответить с цитированием
Старый 15.11.2021, 12:14   #2
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 86
По умолчанию

вот полный код процедуры
Код:
procedure TForm1.btn2Click(Sender: TObject);
var
  i, j, k: Integer;
  st:string;
begin   
   k:=1;
   if edt2.Text<>'' then
   begin
     for j:=1 to edt2.GetTextLen do
       begin
        st:=edt2.Text;
        st[j]:='*';
        qry1.Close;
        qry1.SQL.Text:='SELECT * FROM kolesa WHERE nomer Like "'+st+'"';
        qry1.open;
        if qry1.Fields.Fields[0].value<>null then //здесь проверка не проходит
         begin
           while not qry1.Eof do           
             begin
               for i:=0 to 4 do
                 begin
                   grd1.Cells[i,k]:=qry1.Fields.Fields[i].AsString;
                 end;
               k:=k+1;
               qry1.Next;
             end;
         end;
       end;
   end;
end;
uraura вне форума Ответить с цитированием
Старый 15.11.2021, 13:03   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,321
По умолчанию

Код:
     for j:=1 to edt2.GetTextLen do
st:=edt2.Text;
j:=edt2.GetTextLen;
st[j]:='*';
qr1.Close;
qr1.SQL.Text:=format('select * from kolesa where nomer like "%s" ', [st]);
qr1.Open;
if qr1.Fields.fields[0].value<>null then 
if not qr1.Fields.Fields.Fiels[0].isnull then begin 
if not qr1.isEmpty then begin 
while not qr1.eof do begin
...
end;
end;
end;
и что теперь будет показывать ?...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 15.11.2021, 14:17   #4
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 86
По умолчанию

Попробовал, никакой разницы.
Ставлю break на проверку наличия данных в query после query.open,
Код:
if qry1.Fields.Fields[0].value<>null then
Сравнил query.SQL.Text одинаковая строка что с моим кодом что с предложенным.
Результат соответственно одинаков.
uraura вне форума Ответить с цитированием
Старый 17.11.2021, 11:52   #5
uraura
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 86
По умолчанию

Код:
qry1.SQL.Text:='SELECT * FROM kolesa WHERE nomer Like "123_"'
решение: использование символа "_" вместо "*", на просторах нашел что "*" в запросе означает любую цифру, поэтому пытался использовать. "_" означает любой символ, на всякий ограничил ввод в эдит только цифры.
uraura вне форума Ответить с цитированием
Старый 23.11.2021, 21:55   #6
xxbesoxx
Участник клуба
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Сообщений: 1,382
По умолчанию

Цитата:
Сообщение от uraura Посмотреть сообщение
вот полный код
цикл for для чего ?
xxbesoxx вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с параметром Slava08707 Microsoft Office Access 0 09.12.2013 19:29
Запрос с параметром Claster Помощь студентам 0 11.06.2012 10:44
Запрос с параметром mental БД в Delphi 2 15.08.2011 19:06
запрос с параметром Proffi2010 БД в Delphi 4 15.01.2011 18:55
Запрос с параметром odi_noki Microsoft Office Access 2 17.12.2008 20:07

Реклама для незарегистрированных, регистрация на форуме