Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];

Вниз

Передача параметров 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-60537
NDR
2002-07-30 08:57
2002.08.19
Упаковка dBAse таблиц


1-60606
Aleksandr
2002-08-07 15:13
2002.08.19
Как лечить


14-60826
J_S
2002-07-22 11:52
2002.08.19
ActiveX в компонент


3-60545
Alinka
2002-07-30 16:52
2002.08.19
Помогите, Мастера. Срочно!


1-60731
maxim2
2002-08-07 06:31
2002.08.19
Как сделать цикл пока не нажата клавиша?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский