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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 10:34   #21
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Все получилось, разобрался с этими переменными D1, D2 - их оказывается нужно было прописать в св-ве SQL компонента ADOQuery1:
Код HTML:
select *
from towars
where :D1 and :D2
И в св-ве Parameters этого же компонента - указать типы этих переменный. А вот теперь обработчик на кнопку предложенный nataly_ukr, но немножко измененный, если кому-нибудь пригодится, конечно:
Код HTML:
form1.ADOQuery1.Close;
  form1.ADOQuery1.SQL.Clear;
  form1.ADOQuery1.SQL.Add('select * from towars where cena between :D1 and D2');
  form1.ADOQuery1.Parameters.ParamByName('D1').Value:=edit4.Text;
  form1.ADOQuery1.Parameters.ParamByName('D2').Value:=edit5.Text;
  form1.ADOQuery1.Open;
Предложенные ссылки Alex21, мне тоже очень помогли.Еще раз Всем большое спасибо! Вот только у меня к Вам еще одна просьба: если у кого есть какая-либо информация о кавычках и знаках "+", т.к. вариант предложенный mihali4'ем тоже интересный, вот только не понятно, где и сколько нужно использовать кавычки и знак +(хочется самому разобраться, а не готовое катать). Выложите, пожалуста, или дайте ссылку.

Последний раз редактировалось фЁдОр; 10.12.2007 в 10:36.
фЁдОр вне форума Ответить с цитированием
Старый 10.12.2007, 12:30   #22
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

QuotedStr
Цитата:
A quote character (') will be inserted at the beginning and end of S, and each single quote character in the string is repeated
и не надо считать аппострофы
dron-s вне форума Ответить с цитированием
Старый 11.12.2007, 14:21   #23
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
QuotedStr

и не надо считать аппострофы
Буду знать, спасибо!
фЁдОр вне форума Ответить с цитированием
Старый 31.01.2008, 15:56   #24
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

ADOQuery1:
Код HTML:
select *
from towars
where :D1 and :D2
Скажите, пожалуйста, почему такой же код нельзя писать из закладки BDE в компоненте Query1 в свойстве SQL, а компоненте ADOQuery1 все нормально работает?

Выдается следующая ошибка:
Изображения
Тип файла: jpg ошибка.jpg (51.1 Кб, 142 просмотров)
фЁдОр вне форума Ответить с цитированием
Старый 31.01.2008, 18:12   #25
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

BDE переставь и должно быть счастье
dron-s вне форума Ответить с цитированием
Старый 12.02.2008, 15:15   #26
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
BDE переставь и должно быть счастье
Нет, дело не в BDE. Я так предполагаю, что я, что-не правильно делаю в свойстве Params компонента Query. Для того, что бы быть более понятливым, попытаюсь объяснить все пошагово:
1. У компонета BDE, в свойстве DatabaseName, выбираю свой алиас;
2. В свойстве SQL пишу: select * from firms where :a and :b;
3. В свойстве Params, все этого же компонента, в появившемся окне, я выбираю объявленную мной переменную а и в свойстве DataType выставляю интежер, в свойстве ParamType выставляю ptInput и свойстве Value->Type также ставлю интежер.
Соответственно я проделываю с переменной b.
А после того как я пытаюсь сделать компонент Query активным, выдается выше приведенная мной ошибка. В чем причина, почему не получается сделать Query активным??
фЁдОр вне форума Ответить с цитированием
Старый 12.02.2008, 16:18   #27
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от фЁдОр Посмотреть сообщение
ADOQuery1:
Код HTML:
select *
from towars
where :D1 and :D2
Скажите, пожалуйста, почему такой же код нельзя писать из закладки BDE в компоненте Query1 в свойстве SQL, а компоненте ADOQuery1 все нормально работает?

Выдается следующая ошибка:
И это работало? Странно. Каким образом здесь опеделяются условия выборки? У вас идет просто перечисление параметров и все...
В одном и предыдущих постов все просто и понятно:

Код:
select * from towars where cena between :D1 and :D2
Если перевести на русский язык, то в этом коде записано буквально следующее:

SELECT - выбрать
* - все поля
FROM tovars - из базы tovars
WHERE - где записи удовлетворяют условию
cena - значения поля cena
BEETWEEN - находятся в промежутке между величинами,
:D1 - заданными параметром D1
AND - и
:D2 - параметром D2.

А как трактовать вашу запись я не знаю. Да и BDE Query, наверное, тоже не знает. Потому и ругается.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 12.02.2008, 16:44   #28
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от Andrei Посмотреть сообщение
И это работало?
Andrei - хотите верьте, хотите нет, а лудьше сами попробуйте, но это реально работает!

Сейчас поясню: раньше у меня БД была в аксессе и для подключения к БД, я использовал ADOQuery, где в свойстве SQL пишу (привожу свой пример готовый, рабочий, пример, т.к. голова сейчас не работает, что бы придумывать):
Код:
select price.name, price.unit, cost.cost_rozd,cost.cost_opt, cost.cost_usl, curren.name, price.pack, firm.name, groups.name, firm.phone
 from price, cost, curren, firm, groups
 where firm.id_firm=price.id_firm and price.id_price=cost.id_price and cost.id_currency=curren.id_currency and price.id_group=groups.id_group and :a and :b
 order by price.name
А вот теперь собственно обработчик по нажатию кнопки:
Код:
 if RadioButton1.Checked=true then begin
  if edit1.Text<>'' then begin
   if (edit4.Visible=true and edit5.Visible=false) then begin
   progressbar1.visible:=true;
    progressbar1.Position:=0;
    progressbar1.StepBy(20);
    form1.ADOQuePriceRatissDisk.Close;
    form1.ADOQuePriceRatissDisk.SQL.Clear;
    form1.ADOQuePriceRatissDisk.SQL.Add('select price.name, price.unit, cost.cost_rozd,cost.cost_opt, cost.cost_usl, curren.name, price.pack, firm.name, groups.name, firm.phone');
    form1.ADOQuePriceRatissDisk.SQL.Add('from price, cost, curren, firm, groups');
    progressbar1.StepBy(35);
    form1.ADOQuePriceRatissDisk.SQL.Add('where firm.id_firm=price.id_firm and price.id_price=cost.id_price and cost.id_currency=curren.id_currency and price.id_group=groups.id_group and cost.cost_rozd>=:a and price.name like ''%'+edit1.text+'%''');
    progressbar1.StepBy(50);
    form1.ADOQuePriceRatissDisk.SQL.Add('order by cost.cost_rozd');
    form1.ADOQuePriceRatissDisk.Parameters.ParamByName('a').Value:=edit4.Text;
    form1.ADOQuePriceRatissDisk.Open;
    progressbar1.Position:=0;
    progressbar1.visible:=false;
   end;
фЁдОр вне форума Ответить с цитированием
Старый 18.02.2008, 17:17   #29
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Я вот надамал - может надо какие-либо настрой в BDE поделать. Ну просто я так и не могу понять в чем проблема. Вот есть у меня талица в аксессе "Firm" и есть таблица в парадксе "Firms". В компоненте ADOQuery1, в св-ве SQL пишу: select * from firm where :a and :b, после чего компонент нормально делается активным.
А когда я в компоненте Query1, в св-ве SQL пишу: select * from firms where :a and :b, после чего, я не могу сделать компонент активным.

В приведенном источнике Alex21, я еще в компоненте Query1 пробовал писать: select * from firms where cost_rozd=:a and cost_rozd=:b, тогда компонент делается активным, но в гриде оторажаются пустые поля, хотя в св-ве Params, выставлял значения по умолчанию.

Неужели никто с этим не сталкивался? Как же всекита разрешить эту проблему.
фЁдОр вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как указать в регулярке............ Adamant PHP 12 25.03.2008 10:11
Нужны критерии сравнения программ Deris777 Помощь студентам 1 19.01.2008 10:19
Проблема с FindFirst, как указать меняющийся путь? _SacreD_ Общие вопросы Delphi 12 26.12.2007 16:14
Как указать путь компилируемуму exe файлу shurik_7866 Общие вопросы Delphi 2 18.07.2007 23:24
Как указать диапазон чисел? Inbox Общие вопросы Delphi 2 29.06.2007 01:21