15.02.2009, 14:16 | #1 |
Участник
|
передача параметров в запрос while select
Здравствуйте уважаемые.
Подскажите пожалуйста как правильно передать параметры запроса в запрос while select .... ошибка появляется в том случае, когда один из параметров не указан. Запрос ничего не вводит. К примеру параметры отчета: период: fromDate, toDate Клиент: CustID Запрос: while select * from CustTrans where CustTrans.TransDate > fromDate && CustTrans.TransDate < toDate && CustTrans.CustID == CustID ....... Если параметр отчета Клиент (CustID = " ") не указан отчет ничего не выводит. Заранее благодарен.
__________________
Александр |
|
15.02.2009, 14:25 | #2 |
----------------
|
Правильно заменить while select на while(QueryRun.next())
|
|
15.02.2009, 14:38 | #3 |
Участник
|
А так?
X++: while select * from CustTrans where CustTrans.TransDate > fromDate && CustTrans.TransDate < toDate && ((CustID && CustTrans.CustID == CustID) || !CustID)
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
За это сообщение автора поблагодарили: tolstjak (1). |
15.02.2009, 14:55 | #4 |
Axapta
|
|
|
|
За это сообщение автора поблагодарили: miklenew (2). |
15.02.2009, 15:08 | #5 |
Участник
|
Цитата:
Как я понимаю в таком случае отчет не будет выдавать ошибку, но данные тоже не будет выводить, а надо чтобы отчет выдавал данные по выбранному клиенты, если клиент не выбран ыдавал отчет по всем клиентам.
__________________
Александр |
|
15.02.2009, 15:14 | #6 |
Участник
|
А до этого сформировать запрос через QueryRun ?
Примерно query query; QueryBuildDataSource qBSСTrans; ; query = new Query(); qBSСTrans = query.addDataSource(tableNum(CustTrans)); ....... ....... правильно понял?
__________________
Александр |
|
15.02.2009, 15:23 | #7 |
Участник
|
Согласен. Так лучше.
Пробовали?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
15.02.2009, 15:26 | #8 |
Участник
|
__________________
Александр |
|
15.02.2009, 15:51 | #9 |
Участник
|
Попробовал.
Ничего не выводит. Пример: CustTrans custTrans; TransDate fromDate; TransDate toDate; CustAccount CustId; ; fromDate = 01\12\2007; toDate = 31\12\2007; //CustId = "001131"; CustId = " "; while select * from custTrans where custTrans.TransDate > fromDate && custTrans.TransDate < toDate && ((CustID && custTrans.AccountNum == CustID) || !CustID) if (custTrans) info(strfmt("%1, %2", custTrans.AccountNum, custTrans.AmountMST)); Что сделал не так?
__________________
Александр |
|
15.02.2009, 15:57 | #10 |
MCITP
|
Цитата:
Сообщение от tolstjak
Попробовал.
Ничего не выводит. Пример: CustTrans custTrans; TransDate fromDate; TransDate toDate; CustAccount CustId; ; fromDate = 01\12\2007; toDate = 31\12\2007; //CustId = "001131"; CustId = " "; while select * from custTrans where custTrans.TransDate > fromDate && custTrans.TransDate < toDate && ((CustID && custTrans.AccountNum == CustID) || !CustID) if (custTrans) info(strfmt("%1, %2", custTrans.AccountNum, custTrans.AmountMST)); Что сделал не так? X++: CustId = " "; X++: CustId = ""; мелочь конечно, а всё-таки...
__________________
Zhirenkov Vitaly |
|
15.02.2009, 15:57 | #11 |
Axapta
|
|
|
15.02.2009, 16:04 | #12 |
Участник
|
__________________
Александр |
|
15.02.2009, 19:38 | #13 |
Участник
|
Цитата:
клиент1,клиент2,клиент3 Не лишайте пользователя удобств стандартного функционала. Прислушайтесь к совету Wamr. |
|
15.02.2009, 19:39 | #14 |
Участник
|
Можно ли без серьезных трудностей перевести нижеуказанный SQL запрос в Аксаптовский типа while........
Для использования в // Поговорим об ADO DECLARE @DD1 DATETIME /* Начальная дата */ DECLARE @DD2 DATETIME /* Начальная дата */ DECLARE @AccountNum Varchar(13) /* Подразделение */ SET @DD1 = '20081001' SET @DD2 = '20081031' SET @AccountNum = '%000155%' select dd.Контрагент, sum(dd.Клиент_Н) AS Клиент_Н , sum(dd.Поставщик_Н) AS Поставщик_Н , (sum(dd.Клиент_Н) - sum(dd.Поставщик_Н)) AS Сводная_Н , sum(dd.Клиент_О) As Клиент_О , sum(dd.Поставщик_О) AS Поставщик_О , (sum(dd.Клиент_О) - sum(dd.Поставщик_О)) AS Сводная_О , ((sum(dd.Клиент_Н) - sum(dd.Поставщик_Н)) - (sum(dd.Клиент_О) - sum(dd.Поставщик_О))) AS Разница from (Select a.Название AS Контрагент --, a.Клиент, ' ' AS Поставщик, a.PK , sum(a.НачСальдо) AS Клиент_Н, null AS Поставщик_Н , sum(a.Оборот)AS Клиент_О, null AS Поставщик_О from (select ct.AccountNum AS Клиент, ct2.Name AS Название, ct2.VendAccount AS PK, sum(ct.AmountMST)AS НачСальдо, null As Оборот from CustTrans ct, CustTable ct2 where ct.TransDate < @DD1 AND ct.AccountNum = ct2.AccountNum Group by --Клиент ct.AccountNum, ct2.Name, ct2.VendAccount UNION select ct1.AccountNum AS Клиент, ct3.Name AS Название, ct3.VendAccount AS PK, null AS НачСальдо, sum(ct1.AmountMST)As Оборот from CustTrans ct1, CustTable ct3 where (ct1.TransDate between @DD1 and @DD2) AND ct1.AccountNum = ct3.AccountNum Group by --Клиент ct1.AccountNum, ct3.Name, ct3.VendAccount ) AS a Group by a.Клиент, a.Название, a.PK --Order by a.Клиент UNION Select --a.Клиент, a.Название, a.PK, sum(a.НачСальдо), sum(a.Оборот) aa.Название AS Контрагент --, a.Клиент, ' ' AS Поставщик, a.PK , null AS Клиент_Н, sum(aa.НачСальдо) AS Поставщик_Н , null AS Клиент_О, sum(aa.Оборот) AS Поставщик_О from (select ct.AccountNum AS Клиент, ct2.Name AS Название, ct2.CustAccount AS PK, sum(ct.AmountMST)AS НачСальдо, null As Оборот from VendTrans ct, VendTable ct2 where ct.TransDate < @DD1 AND ct.AccountNum = ct2.AccountNum Group by --Клиент ct.AccountNum, ct2.Name, ct2.CustAccount UNION select ct1.AccountNum AS Клиент, ct3.Name AS Название, ct3.CustAccount AS PK, null AS НачСальдо, sum(ct1.AmountMST)As Оборот from VendTrans ct1, VendTable ct3 where (ct1.TransDate between @DD1 and @DD2) AND ct1.AccountNum = ct3.AccountNum Group by --Клиент ct1.AccountNum, ct3.Name, ct3.CustAccount ) AS aa Group by aa.Клиент, aa.Название, aa.PK --Order by aa.Клиент ; ) AS dd Group by Контрагент За ранее благодарен.
__________________
Александр |
|