Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Свойство Params компонента Query

6
28 января 2007 года
George
4.1K / / 05.01.2007
Создал параметр n[0]. В нём должна храниться инфа в виде ##.## где # - числа.
Текст запроса:
Select *
From ":x:x.db"
Where (l=:n);
Order By ...

Выдаётся ошибка

В чём дело?
309
28 января 2007 года
el scorpio
1.1K / / 19.09.2006
Код формирования SQL и заполнения параметров в студию.
P.S. Не забывайте, что нужно сначала присваивать запрос, а уже ПОТОМ - параметры.
6
28 января 2007 года
George
4.1K / / 05.01.2007
На:
procedure TForm1.Timer1Timer(Sender: TObject);
var
t:TSystemTime;
d:TDateTime;
b,n:string;
begin
GetLocalTime(t);
d:=SystemTimeToDateTime(t);
b:=DateToStr(d);
n:=copy(b,1,5);
Label2.Caption:=n;
Query1.Close;
if not Query1.Prepared then
Query1.Prepare;
Form1.Query1.ParamByName(n).asString:=Label2.Caption;
end;
309
29 января 2007 года
el scorpio
1.1K / / 19.09.2006
Цитата:
From ":x:x.db"


А разве имена таблиц можно указывать параметрами???????
Или в имени файла допустимо использовать ":"??????

6
29 января 2007 года
George
4.1K / / 05.01.2007
Нет, : не в имени файла, оно разделяет алиас от названия таблицы.
А имя таблицы указано не параметром. Я поставил x, потому что подумал, что названия таблиц роли не играют, ну и нафиг их писать.
6
29 января 2007 года
George
4.1K / / 05.01.2007
Я кое-что переделал. Новый код:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
t:TSystemTime;
d:TDateTime;
b,n:string;
begin
GetLocalTime(t);
d:=SystemTimeToDateTime(t);
b:=DateToStr(d);
n:=copy(b,1,5);
Label2.Caption:=n;
Query1.Close;
Form1.Query1.Params[0].Value:=Label2.Caption;
end;
/COLOR]
Ошибка уже не вылезает, но в компоненте DBGrid пусто, ни фига нет.
309
30 января 2007 года
el scorpio
1.1K / / 19.09.2006
А по имени параметра обращаться не пробовал?
Свойства есть такие (paramvalues [ИМЯ]) или методы (ParamByName)?
И писать внутри методов класса имя его экземпляра ("Form1") нехорошо.

Хотя, возможно, проблема заключается в передаче даты, как строкового значения. Не получается его правильно привести к исходному типу, отсюда и "ненахождение" значений
6
30 января 2007 года
George
4.1K / / 05.01.2007
Цитата: el scorpio

Хотя, возможно, проблема заключается в передаче даты, как строкового значения. Не получается его правильно привести к исходному типу, отсюда и "ненахождение" значений



Я почти уверен что дело имено в этом. В БД Тип поля - Alpha (строковый тип до 297 символов). Какой тип должен быть у параметра?

зы Через ParamByName не получалось.

6
31 января 2007 года
George
4.1K / / 05.01.2007
Конечно можно было бы сделать просто дату, но мне не нужны года. Нужно только число, месяц. Всё.
6
01 февраля 2007 года
George
4.1K / / 05.01.2007
Так кто-нить подскажет с этими параметрами?

[COLOR=red][COLOR=black]Washington, [/COLOR]почитай пожалуйста правила форума и научись правильно оформлять код. в правилах подробные объяснения.[/COLOR]
21K
02 февраля 2007 года
Logos
16 / / 02.02.2007
Привет! Для TIBQuery
1) В инспекторе объектов в свойствах куери не надо прописывать параметры. Просто убери их.
2) Вообще-то куери надо делать опен или exec.
Вот моя шпаргалка на этот счет:
{Внимание, в Query никаких параметров создавать не надо!!!}

procedure TForm1.Button1Click(Sender: TObject);

begin
//Таким способом можно выполнить неселективную процедуру, передав входные параметры.

n:=strtoint(Edit1.Text);
g:=strtoint(Edit2.Text);
IBQuery1.Close;
IBQuery1.SQL.Clear; // очистить текст sql
IBQuery1.SQL.Add('EXECUTE PROCEDURE search_proc :n, :w'); // задать текст запроса
IBQuery1.Prepare; // отправить запрос на сервер, проверить его корректность и т.п.
IBQuery1.ParamByName('n').asInteger:=n; // задать значение параметра
IBQuery1.ParamByName('w').asInteger:=g; // задать значение параметра

IBQuery1.Open; //или IBQuery.ExecSQL
end;

procedure TForm1.Button2Click(Sender: TObject);

begin

//Пример как выполнить селективную процедуру
IBQuery1.Close;
IBQuery1.SQL.Clear; // очистить текст sql
IBQuery1.SQL.Add('select * from proc2(:er)'); // задать текст запроса
IBQuery1.Prepare; // отправить запрос на сервер, проверить его корректность и т.п.
IBQuery1.ParamByName('er').asInteger:=n; // задать значение параметра
IBQuery1.Open; //только метод Open!!!!!!!!!

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//Пример как выполнить неселективную процедуру с передачей входных и
// получением выходных параметров
//Необходимо указывать реальные параметры, такие как они называются в базе!!!!
//В инспекторе объектов создавать никаких параметров не надо!!!

rt:=0;
try
SP1.Prepare;
SP1.ParamByName('n_res').AsInteger:=1;
SP1.ParamByName('n_sour').AsInteger:=4;
SP1.ExecProc;
rt:=SP1.ParamByName('rty').AsInteger;
except showmessage('ошибка!');
end;
Edit1.Text:=inttostr(rt);
end;

end.
6
03 февраля 2007 года
George
4.1K / / 05.01.2007
Он орёт мне, что тип параметра неверный.
6
03 февраля 2007 года
George
4.1K / / 05.01.2007
Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Reports, Payments');
Query1.SQL.Add('From ":Planning:Planning.db"');
Query1.SQL.Add('Where (Data=01.01 and x=:x)');
Query1.SQL.Add('Order By Reports, Payments');
Query1.Prepare;
Query1.Open;

Значение параметра:
procedure TForm2.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
begin
NDS:=1;
end
else
begin
NDS:=0;
end;
Form1.Label5.Caption:=IntToStr(NDS);
Form1.Query1.ParamByName('Nds').asInteger:=StrToInt(Form1.Label5.Caption);
end;

Текст ошибки:
Field 'Nds' is an unknown type
242
04 февраля 2007 года
Оlga
2.2K / / 04.02.2006
[COLOR=red]моя просьба вполне серьезная и выполнимая:[/COLOR]
http://forum.codenet.ru/showpost.php?p=171121&postcount=10

и относиться она абсолютно ко всем посетителям форума, которые ещё не читали правила форума Делфи.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог