Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Передача параметров ADO запросу   Найти похожие ветки 

 
EugeneP   (2002-07-26 14:34) [0]

В MS Accesse написан запрос, который имеет некоторые параметры (т.е. неопределенные
значения которые аксесс спрашивает перед выполнением этого запроса).
К аксесовской базе подключаюсь из Дельфей с помощью ADO.
У компонента ADOQuery прописываю в свойствах эти параметры (с теми же именами)
присваиваю им в программе значения

а при открытии запроса выдается сообщение что данные параметры не определены
по умолчанию
(т.е. в аксес их значения не передались)

в связи с вышесказанным вопрос - как правильно передать параметры в аксесовский
запрос.


 
LordOfSilence ©   (2002-07-26 15:08) [1]

А Вы типы этих параметров правильно определяете?
Целое - целое, строка - строка...
Я когда-то делал то же самое, все работало, точно помню.
Причем в двух вариантах:
1. Прописывал весь текст запроса в свойстве SQL.
2. Прописывал только "Select * from MyAccessQuery".
MyAccessQuery - это то, как Вы его назвали в Access.
Проверьте еще раз все параметры.


 
EugeneP   (2002-07-26 15:12) [2]

SELECT SUM(US) AS ResExp
FROM Vec
WHERE (Vec.Type="по предъявлении") AND
(MONTH(DateVip)=ParMonth)
AND (YEAR(DateVip)=ParYear);


вот аксесовский запрос
ParMonth и ParYear параметры
где в аксесе можно определить их тип????
в дельфе присвоил им целый тип
а выборку я хочу делать как в вашем втором случае - то есть просто select * from MyQuery


 
LordOfSilence ©   (2002-07-26 15:27) [3]

Позвольте с Вами не согласиться. В Access можно
определить тип параметров. В режиме конструктора
запроса, меню Запрос, команда Параметры. В этом
режиме устанавливаются имя параметра и его тип.


 
EugeneP   (2002-07-26 16:01) [4]

Я не утвеждал
я спрашивал

Спасибо. Буду пробовать.


 
LordOfSilence ©   (2002-07-26 16:38) [5]

Евгений, только что смоделировал Вашу ситуацию у себя
на компе. Все как бы и работает...
Если Вас все еще интересуют подробности, откликнитесь.
Я попробую пошагово описать свои действия.


 
LordOfSilence ©   (2002-07-26 16:57) [6]

Кстати, вот текст моего "смоделированного" запроса:

PARAMETERS ParDate Long;
SELECT Vec.Summa, Vec.Type, Vec.DateVip
FROM Vec
WHERE (((Vec.Type)="по предъявлении") AND ((Month([DateVip]))>[ParDate]));

Есть различия. Я имею ввиду не имена полей/параметров
непосредственно. Вы, кстати, все же откуда взяли текст
этого запроса? Непосредственно из Access, таким, каким
он сам его создал? У Вас какой Access? У меня 2000.
Обратите внимание на объявление PARAMETERS.
Двойный и одинарный кавычки, круглые и квадратные скобки...


 
Mike Kouzmine   (2002-07-26 19:29) [7]

А у меня только со ADOStoredProc получается :{


 
aus ©   (2002-07-26 23:53) [8]

можно еще так запрос составить (TADOQuery)
execute s p1, p2, p3...
где s - имя сохраненного запроса с параметрами, а p1, p2 - значения параметров.


 
ЮЮ   (2002-07-29 04:03) [9]

lf!


 
USE   (2002-07-30 06:57) [10]

/*Посмотри текст программы как у меня*/


CONECT_STR="Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;"+{Data Source=D:\ExBd\ТЕРМО\Bd0.mdb;}
"Data Source=%s; Mode=Read|Write|Share Deny None;Extended Properties="";"+
"Locale Identifier=1049;Persist Security Info=True;Jet OLEDB:System database="";"+
"Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=4;"+
"Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;"+
"Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";"+
"Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;"+
"Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False";

function TdmR3.GetCountForPeriod(LastDate: TDateTime; IsPlan: boolean): Integer;
var qu: TADOQuery;
S: String;
begin
qu:=TADOQuery.Create(nil);
try
S:=FormatDateTime("dd.mm.yy",LastDate);
qu.ConnectionString:=WideString(Format(CONECT_STR,[db_file]));
qu.SQL.Text:="select count(*) from DecadaVal as d where d.LastDate=:LastDate and IsPlan=:IsPlan";
qu.Parameters[0].Value:=LastDate;
qu.Parameters[1].Value:=IsPlan;
qu.Open;
Result:=qu.Fields[0].AsInteger;
finally
qu.Free;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-60672
MikeFW
2002-08-06 11:05
2002.08.19
Как закрыть открытый узел в ТreeView?


1-60638
WLAD
2002-08-08 03:21
2002.08.19
Проблема с чтением из типизированного файла


14-60856
RV
2002-07-24 22:53
2002.08.19
Есть математики средь люда делфийского?


1-60653
andrey_pst
2002-08-08 19:48
2002.08.19
Создать на форме ссылку типа andrey@mail.ru


6-60781
Airs
2002-06-07 17:51
2002.08.19
Проблема с передачей сложных данных