powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
7 сообщений из 7, страница 1 из 1
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194157
Plamjam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Пытаюсь вкрутить процедуру из mssql2012 d excel при помощи VBA
Имею процедуру mssql (не смотрите, что она простая. это только часть)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
ALTER PROCEDURE [dbo].[Rep_Count_Receipt_Day]
 @counts int
 as
 begin
select
 [ИД магазина],
 [Магазин],
 [Дата],
min(	case when len(cast(datepart(hour, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(hour, [Дата/время]) as varchar)) 
		else cast(datepart(hour, [Дата/время]) as varchar)end
+':'+	case when len(cast(datepart(minute, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(minute, [Дата/время]) as varchar)) 
		else cast(datepart(minute, [Дата/время]) as varchar)end
+':'+	case when len(cast(datepart(second, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(second, [Дата/время]) as varchar)) 
		else cast(datepart(second, [Дата/время]) as varchar)end
)  as [с ЧЧ:ММ:СС],
max(	case when len(cast(datepart(hour, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(hour, [Дата/время]) as varchar)) 
		else cast(datepart(hour, [Дата/время]) as varchar)end
+':'+	case when len(cast(datepart(minute, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(minute, [Дата/время]) as varchar)) 
		else cast(datepart(minute, [Дата/время]) as varchar)end
+':'+	case when len(cast(datepart(second, [Дата/время]) as varchar)) =1 then ('0'+cast(datepart(second, [Дата/время]) as varchar)) 
		else cast(datepart(second, [Дата/время]) as varchar)end
) as [по ЧЧ:ММ:СС],
 [Тип операции],
 [Касса],
 [Смена],
 count([Номер чека]) as [колво чеков],
 sum([Приход]) as [сумма приходов],
 sum([Расход]) as [сумма расходов],
 [ИД клиента],
 [Фамилия],
 [Имя],
 convert(int, c.start_card_code),
 case when cpv3.value is null then '' else cpv3.value end as [тел1],
 case when cpv4.value is null then '' else cpv3.value end as [тел2]
from [dbo].[receipts_all] ra
inner join [dbo].[card_clients] cc on cc.client = ra.[ид клиента]
inner join  [dbo].[cards] c on c.id = cc.card
left join client_property_value cpv3 on cpv3.client = ra.[ид клиента] and cpv3.property = 3
left join client_property_value cpv4 on cpv4.client = ra.[ид клиента] and cpv4.property = 4
where   count([Номер чека]) = @counts
group by 
 [ИД магазина],
 [Магазин],
 [Дата],
 [Тип операции],
 [Касса],
 [Смена],
 [ИД клиента],
 [Фамилия],
 [Имя],
 c.start_card_code,
  cpv3.value,
 cpv4.value
 having  count([Номер чека]) = @counts
order by  [Магазин],  [Дата], [Касса], [Тип операции], [ИД клиента]

end



вот из ВБА то что удалось найти в тырнетах (я только учусь)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
Sub Кнопка1_Щелчок()
Dim cn
'Set cn = CreateObject("ADODB.Connection")
'cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" _
'& "Initial Catalog=arbitr_supermag;Data Source=ramserverco1"
Dim con
Set con = CreateObject("ADODB.Connection")
'Dim con As ADODB.Connection
Dim cmd
Set cmd = CreateObject("ADODB.Command")
'Dim cmd As ADODB.Command
Dim rs
Set rs = CreateObject("ADODB.Recordset")
'Dim rs As ADODB.Recordset
Dim WSP1 As Worksheet
'Set con = New ADODB.Connection
'Set cmd = New ADODB.Command
'Set rs = New ADODB.Recordset

Application.DisplayStatusBar = True
Application.StatusBar = "Contacting SQL Server..."

' Remove any values in the cells where we want to put our Stored Procedure's results.
Dim rngRange As Range
Set rngRange = Range(Cells(8, 2), Cells(Rows.Count, 1)).EntireRow
rngRange.ClearContents

' Log into our SQL Server, and run the Stored Procedure
con.Open "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=arbitr_supermag;Integrated Security=SSPI;Trusted_Connection=Yes;"
cmd.ActiveConnection = con

' Set up the parameter for our Stored Procedure
' (Parameter types can be adVarChar,adDate,adInteger)

'cmd.Parameters.Append = cmd.CreateParameter("card", adVarChar, adParamInput, Range("T5").Text, 7)
'Dim par
'Set par = cmd.CreateParameter("@counts", adInteger, adParamInput, Range("T5").Int, 2)

intRoyalty = Trim(InputBox("Enter royalty:"))
' Set prmByRoyalty = cmd.CreateParameter("counts", adInteger, adParamInput, 1, intRoyalty)
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , intRoyalty)
prmByRoyalty.Value = intRoyalty
'Application.StatusBar = "Running stored procedure..."
cmd.CommandText = "dbo.Rep_Count_Receipt_Day"
Set rs = cmd.Execute(, counts, adCmdStoredProc)

' Copy the results to cell B7 on the first Worksheet
Set WSP1 = Worksheets(1)
WSP1.Activate
If rs.EOF = False Then WSP1.Cells(8, 2).CopyFromRecordset rs

rs.Close
Set rs = Nothing
Set cmd = Nothing

con.Close
Set con = Nothing

Application.StatusBar = "Data successfully updated."
End Sub



ошибка "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"
ссылается на строку
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , intRoyalty)
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194231
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Plamjam,
intRoyalty скорее всего типа париант, а ты ее пихаешь в интеджер
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194254
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр кPlamjam,
intRoyalty скорее всего типа вариант, а ты ее пихаешь в интеджер
А к чему
Код: vbnet
1.
prmByRoyalty.Value = intRoyalty


если есть уже
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , intRoyalty)


?
Если убрать переменную и запустить
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , 2)


процедура выполнится?
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194288
Plamjam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр кгр кPlamjam,
intRoyalty скорее всего типа вариант, а ты ее пихаешь в интеджер
А к чему
Код: vbnet
1.
prmByRoyalty.Value = intRoyalty


если есть уже
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , intRoyalty)


?
Если убрать переменную и запустить
Код: vbnet
1.
[SRC VB]cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , 2)



[/src]
процедура выполнится?

если задать константу =2 , то ошибка та же.
Код: vbnet
1.
cmd.Parameters.Append cmd.CreateParameter("@counts", adInteger, adParamInput, , 2)



если закоментить параметр, процедура dbo.Rep_Count_Receipt_Day требует его
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194319
гр к
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Plamjam, в хранимке есть
Код: sql
1.
SET NOCOUNT ON;


?
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194347
Plamjam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гр к,

Изначально нет.
Сейчас выставила
Код: sql
1.
 set nocount OFF

и алилуйя!
Век бы не додумалась! спасибо!
...
Рейтинг: 0 / 0
Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
    #39194355
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гр кPlamjam, в хранимке есть
Код: sql
1.
SET NOCOUNT ON;



?Странно, ведь ошибка была на стадии добавления параметра и касалось только этого, казалось бы причем тут NOCOUNT, который мог повлиять только на стадии выполнения? Я что-то не понимаю ((
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Аргументы имеют неверный тип или выходят за пределы диапазона Run-time error 3001
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]