Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 388
от 22.08.2007, 11:05

Администратор:Gh0stik
В рассылке:Подписчиков: 331, Экспертов: 43
В номере:Вопросов: 1, Ответов: 2


Вопрос № 98712: Здравствуйте! Подскажите что за фигня и как это поправить!!! Пишу запрос напрямую к БД(Access) через сам Access находит одну запись(оно так и есть). Копирую запрос в ADOQuery выполняю RecordCount=0. ..

Вопрос № 98.712
Здравствуйте!
Подскажите что за фигня и как это поправить!!!
Пишу запрос напрямую к БД(Access) через сам Access находит одну запись(оно так и есть).

Копирую запрос в ADOQuery выполняю RecordCount=0.

Приложение:

Отправлен: 17.08.2007, 10:41
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sandy
Здравствуйте, chikanok!
Просто используются разные диалекты SQL (точно номера не помню - знатоки "АУ":)
В дэлфи используйте
select * from tab where (name like "1%") Order by name asc;
Почитать можно тут:
http://www.sql.ru/docs/sql/u_sql/ch5.shtml
Ответ отправил: Sandy (статус: 9-ый класс)
Ответ отправлен: 17.08.2007, 11:25

Отвечает: Виктор Пырлик
Здравствуйте, chikanok!

Дело в том, что препроцессор Access обрабатывает SQL команды несколько иначе, точнее, в Access есть много отличий, от стандартного SQL. В тоже время, вы передаёте на выполнение команду средствами ADO, где как раз работает стандартный SQL.
Для операции LIKE – фильтрация на основе маски, определены только следующие лексемы:
------------------------------------------------------------------------
% - любое количество, любых символов
_ - одиночный символ

[] – символы входящие в набор, ограниченный в [] (пример: LIKE NAME ‘[S-G]MIT’)
[^] – отрицание предыдущего набора, т.е., «символы не входящие в этот набор»
------------------------------------------------------------------------

Поэтому, ваш запрос должен выглядеть так:
select * from tab where (name like ‘1%’) Order by name asc;

или, непосредственно код Pascal:

procedure TForm1.Button1Click(Sender: TObject);
var s:String;
begin
{Функция Format очень удобна для формирования SQL запросов
а QuotedStr позволяет получить строку обрамленую одинарными ковычками
вместо "1%" можно использовать например Edit1.Text и т.д.}
s := Format('select * from cmd where (NAME_CMD LIKE %s )',[QuotedStr('1%')]);
ADOQuery1.Active := false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s);
ADOQuery1.Active := true;
Label1.Caption := IntToStr(ADOQuery1.RecordCount);// просто смотрим количество записей
Label2.Caption := s; // просто отображаем наш запрос
end;


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 17.08.2007, 12:13


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.56 beta от 20.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное