powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL и VBA
107 сообщений из 107, показаны все 5 страниц
SQL и VBA
    #37250094
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все таки помогите. Функция в Книге3 работает через раз и выдает нули, что не есть правильно.
...
Рейтинг: 0 / 0
SQL и VBA
    #37251724
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikИ все таки помогите. Функция в Книге3 работает через раз и выдает нули, что не есть правильно.
все правильно выдает.
нет ни одной записи, подпадающей под условие:
Код: plaintext
And [Дата настання страхового випадку]>'39877' And [Дата реєстрацiї страхового випадку]>'40180'
если этот фрагмент запроса закомментировать, то в ячейке появляется "3"
...
Рейтинг: 0 / 0
SQL и VBA
    #37252391
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Оно действительно работает если убрать два критерия и проставляет 3 и 2. Однако не все работает, так как хотелось бы...
Если в ставлю Дата настання страхового випадку>40092,00 (06.10.2009) и Дата реєстрацiї страхового випадку>40205,00 (27.01.2010), то должно по идеии выдавать 1 для Casco в листе, а выдает 0...

И еще вопрос. Можно ли в коде закоментировать
strCriterion1 = "Casco"
strCriterion2 = 40092
strCriterion3 = 40205
для того, что бы только в листе менять параметры с датами, а код оставался тот-же?
Еще раз большое спасибо.
...
Рейтинг: 0 / 0
SQL и VBA
    #37252422
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО БОЛЬШОЕ ВСЕМ!!!!!
:) Все работает. Поставила знаки >= и закоментировала. Теперь считает верно!!! :)
...
Рейтинг: 0 / 0
SQL и VBA
    #37265250
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Помогите исправить ошибку...(((
Функия 1 и функция 3 работает, а вот 2 и 4 -нет.
функции 2 и 4 предназначены для расчета суммы- и они не работают. В окне Immediate считает и для суммы верно, а вот где ошибка в написании пользовательской функции никак не могу найти... Копировала функциию GetDate2 и поставляла параметры-все равно не работает...
Буду очень счаслива, если поможете
...
Рейтинг: 0 / 0
SQL и VBA
    #37265299
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,

Помогите исправить ошибку...(((
Функия 1 и функция 3 работает, а вот 2 и 4 -нет.
функции 2 и 4 предназначены для расчета суммы- и они не работают. В окне Immediate считает и для суммы верно, а вот где ошибка в написании пользовательской функции никак не могу найти... Копировала функциию GetDate2 и поставляла параметры-все равно не работает...
Буду очень счаслива, если поможете
Посмотрю, если распишешь подробно, что значит в твоем понимании "не работают", с какими параметрами их вызвать, что получается и что должно получиться. Мне лопатить эту гору кода и пытаться понять самостоятельно вышеуказанные вопросы недосуг.
...
Рейтинг: 0 / 0
SQL и VBA
    #37265398
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Не работает-в ячейке выдает #ЗНАЧ!

Функция пользовательская вот такая (написана в ячейке)

GetData2("C:\Gorokh\Report\Книга4.xlsm";"segment вид UNIQA";"=";A25;"Дата настання страхового випадку";">=";$H$1;"<";$H$3;"Дата реєстрацiї страхового випадку";">=";$H$2;"<";$H$4;"Резерв RBNS на кiнець перiоду")

При А25= 'Casco' и Дата настання страхового випадку=2009 и Дата реєстрацiї страхового випадку=2010 должна выдавать 16714,35

то есть, если подставить:

GetData2("C:\Gorokh\Report\Книга4.xlsm";"segment вид UNIQA";"=";A25;"Дата настання страхового випадку";">=";1/01/2009;"<";1/01/2010;"Дата реєстрацiї страхового випадку";">=";1/01/2010;"<";1/01/2011;"Резерв RBNS на кiнець перiоду")

Резерв RBNS на кiнець перiоду- указываю по какому полю брать сумму. Это, то что касается, что в листе.

Что касается кода

Код: plaintext
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.
  Function GetData2(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, strField4 As String) As Integer

    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL2 As String
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
      strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Ëèñò3$A3:L65000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & " '" & strCriterion1 & "' and [" _
        & strField2 & "]" & strOperator2 & " " & strCriterion2 & " and [" _
        & strField3 & "]" & strOperator3 & " " & strCriterion3 & " and [" _
        & strField2 & "]" & strOperator4 & " " & strCriterion4 & " and [" _
        & strField3 & "]" & strOperator5 & " " & strCriterion5 & " "
    rst.Open strSQL2, cnn
    
    GetData2 = rst.Fields( 0 )
    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing
End Function


И вот еще код для тест 2. Когда запускаю в окне Immediate, то считает верно.



Код: plaintext
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
Sub test2()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    Dim strSQL2 As String
    
    Dim strCriterion1 As String
    Dim strCriterion2 As String
    Dim strCriterion3 As String
    Dim strCriterion4 As String
    Dim strCriterion5 As String
    
    Dim strField1 As String
    Dim strField2 As String
    Dim strField3 As String
    Dim strField4 As String
    
    Dim strRange As String
    Dim strPath As String
    
    Dim strOperator1 As String
    Dim strOperator2 As String
    Dim strOperator3 As String
    Dim strOperator4 As String
    Dim strOperator5 As String
    
    Dim x2 As Integer
    
    strOperator1 = "="
    strOperator2 = ">="
    strOperator3 = ">="
    strOperator4 = "<"
    strOperator5 = "<"
    
    strField1 = "segment вид UNIQA"
    strField2 = "Дата настання страхового випадку"
    strField3 = "Дата реєстрацiї страхового випадку"
    strField4 = "Резерв RBNS на кiнець перiоду"
    
    
    strPath = "C:\Gorokh\Report\Êíèãà4.xlsm"

    'strCriterion1 = "Casco"
   ' strCriterion2 = #3/5/2009#
   ' strCriterion3 = #1/2/2010#

    strRange = ""
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
       
           strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Ëèñò3$A3:L65000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & "'Casco' and [" _
        & strField2 & "]" & strOperator2 & " #1/1/2009# and [" _
        & strField3 & "]" & strOperator3 & " #1/1/2010# and [" _
        & strField2 & "]" & strOperator4 & " #1/1/2010# and [" _
        & strField3 & "]" & strOperator5 & " #1/1/2011#"
         
         
   
    rst.Open strSQL2, cnn
    x2 = rst.Fields( 0 )
    
    Debug.Print strSQL2
    Debug.Print x2
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub
...
Рейтинг: 0 / 0
SQL и VBA
    #37265425
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Сама пользовательская функция выдает #ЗНАЧ!. Хотя я из функции1 переделала 2. Только поменяла Count->Sum. Поменяла по какому полю считать, то есть по strField4 . Добавила параметр в заглавие функции.

Код: plaintext
Function GetData2(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, [color=orange]strField4 As String[/color]) As Integer
...
Рейтинг: 0 / 0
SQL и VBA
    #37265430
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вооk 4 и есть второй файл, откуда тянуться данные
...
Рейтинг: 0 / 0
SQL и VBA
    #37265438
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вот там где красным выделено- моя функция GetData2 должна считать 16714,35 с book4
...
Рейтинг: 0 / 0
SQL и VBA
    #37265512
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Нашла ошибку, но я наверное до сих пор не очень понимаю как писать запросы с датами:

Как я понимаю-это плохой вариант написания запроса, так как когда у меня поменяються даты-надо лезть в код

strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Ëèñò3$A3:L65000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " '" & strCriterion1 & "' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2009# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2010# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2010# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2011# "

Однако, если пишу вот так, то не работает :

strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Ëèñò3$A3:L65000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " '" & strCriterion1 & "' and [" _
& strField2 & "]" & strOperator2 & " " & strCriterion2 & " and [" _
& strField3 & "]" & strOperator3 & " " & strCriterion3 & " and [" _
& strField2 & "]" & strOperator4 & " " & strCriterion4 & "and [" _
& strField3 & "]" & strOperator5 & " " & strCriterion1 & " "

Чего оно пишет #ЗНАЧ! если вроде все верно?
...
Рейтинг: 0 / 0
SQL и VBA
    #37265539
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

хотя даже когда даты подставляю. не все хорошо, так как считает только первое и последнее значение. Для Casco и Other
...
Рейтинг: 0 / 0
SQL и VBA
    #37265544
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikОднако, если пишу вот так, то не работает :
Так что, так тяжело увидеть разницу между первым и вторым вариантом?
Чему равно strCriterion1?
...
Рейтинг: 0 / 0
SQL и VBA
    #37265546
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikхотя даже когда даты подставляю. не все хорошо, так как считает только первое и последнее значение. Для Casco и Other
чему равно strSQL2 после выполнения приведенной строки?
...
Рейтинг: 0 / 0
SQL и VBA
    #37265550
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProVikVikVikОднако, если пишу вот так, то не работает :
Так что, так тяжело увидеть разницу между первым и вторым вариантом?
Чему равно strCriterion1?
точнее strCriterion2
...
Рейтинг: 0 / 0
SQL и VBA
    #37265558
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Да єто я сейчас не поставила одинарные кавычки. А вообще ставила. Но оно не хочет сразу считать. Даже если я обявляла и определяла переменные...
А сейчас, когда с датами ставлю, то считает только первое и последнее значение для Casco и Other. A вот для МТРL не считает. Почему так может быть.
P/s/ Я выслала не всю базу, так как она не пролазит.
...
Рейтинг: 0 / 0
SQL и VBA
    #37265561
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,

Да єто я сейчас не поставила одинарные кавычки. А вообще ставила. Но оно не хочет сразу считать. Даже если я обявляла и определяла переменные...
А сейчас, когда с датами ставлю, то считает только первое и последнее значение для Casco и Other. A вот для МТРL не считает. Почему так может быть.
P/s/ Я выслала не всю базу, так как она не пролазит.
Я задаю конкретные вопросы, но не получаю ответы.
...
Рейтинг: 0 / 0
SQL и VBA
    #37265565
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProShocker.Proпропущено...

Так что, так тяжело увидеть разницу между первым и вторым вариантом?
Чему равно strCriterion1?
точнее strCriterion2

strCriterion2= 1.1.2009
...
Рейтинг: 0 / 0
SQL и VBA
    #37265569
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Proпропущено...

точнее strCriterion2

strCriterion2= 1.1.2009
то есть разницу между
#1/1/2009#и
1.1.2009

увидеть невооруженным взглядом нельзя?
...
Рейтинг: 0 / 0
SQL и VBA
    #37265582
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
& strField2 & "]" & strOperator4 & " " & strCriterion4 & "and [" _
вот тут еще ошибка - нет пробела перед and

но это было бы сразу видно, если бы было приведено значение strSQL2, которое я просил
...
Рейтинг: 0 / 0
SQL и VBA
    #37265588
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Прошу прощения за не коректность. Именно #1/1/2009# я и имела ввиду

Код: plaintext
1.
SELECT Sum([Резерв RBNS на кінець періоду]) FROM [Книга3$A3:L65000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>= #1/1/2009# and [Дата реєстрації страхового випадку]>= #1/1/2010# and [Дата настання страхового випадку]< #1/1/2010# and [Дата реєстрації страхового випадку]< #1/1/2011#
  16778  
...
Рейтинг: 0 / 0
SQL и VBA
    #37265609
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: plaintext
& strField2 & "]" & strOperator4 & " " & strCriterion4 & "and [" _
вот тут еще ошибка - нет пробела перед and

но это было бы сразу видно, если бы было приведено значение strSQL2, которое я просил

Значение по Casco 16778 - и это верно.Но почему-то когда проягиваю, то считает верно только для Casco и Other. А вот MTPL пишет #ЗНАЧ!, а должно 178 094.
Даже с датами не работает...((( Работает не коректно, не все считает...
...
Рейтинг: 0 / 0
SQL и VBA
    #37265619
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай с самого начала, так как после "Нашла ошибку" возвращаться к тому что выше - бессмысленно

VikVikVikЗначение по Casco 16778 - и это верно.

Еще раз - что именно мне нужно запустить, чтобы увидеть это значение?

VikVikVikНо почему-то когда проягиваю

Я не умею проягивать и слова-то такого не знаю, что мне нужно запустить, чтобы увидеть #ЗНАЧ!?
...
Рейтинг: 0 / 0
SQL и VBA
    #37265639
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Выслала на zelezo@inbox.ru.

В ячейке H27 книги book17_05_2010_ должно быть 178 094, а выдает #ЗНАЧ!
...
Рейтинг: 0 / 0
SQL и VBA
    #37265649
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Запускала test2 нажимала ctrl+g и нажимала f5.
...
Рейтинг: 0 / 0
SQL и VBA
    #37265728
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikВыслала на zelezo@inbox.ru.Неудивительно, что у тебя ничего не получается. Программист не может себе позволять подобную невнимательность. Жду письма на МОЙ адрес.
VikVikVik Запускала test2 нажимала ctrl+g и нажимала f5.это ответ на какой вопрос?
...
Рейтинг: 0 / 0
SQL и VBA
    #37266710
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Отправила :)
...
Рейтинг: 0 / 0
SQL и VBA
    #37266967
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибку выдает в строках:
rst.Open strSQL2, cnn
x2 = rst.Fields(0)

Выдает сообщение:

Run-time error '6':
Overflow
...
Рейтинг: 0 / 0
SQL и VBA
    #37266969
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikVikVikVikОтправила :)
это должно подтягиваться в book_18_05_2010 в ячейку H27
Книга4 получил. А где book_18_05_2010? Мы так долго будем проблему решать.
...
Рейтинг: 0 / 0
SQL и VBA
    #37267014
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Отправила и сейчас и перед этим отправляла.
...
Рейтинг: 0 / 0
SQL и VBA
    #37267069
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikОшибку выдает в строках:
x2 = rst.Fields(0)

Выдает сообщение:

Run-time error '6':
OverflowНу так и что неясно в сообщении об ошибке?
VikVikVikDim x2 As IntegerVikVikVikдолжно быть 178 094

Нельзя в Integer запихнуть такое число. Почитай плиз про типы данных.
...
Рейтинг: 0 / 0
SQL и VBA
    #37267147
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та же ошибка в присланном файле с функцией GetData2
...
Рейтинг: 0 / 0
SQL и VBA
    #37267199
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо БОЛЬШОЕ. Спасли мою душу. ))))
...
Рейтинг: 0 / 0
SQL и VBA
    #37273963
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Подскажите хорошие книги по SQL в Excel, что бы доступные были...
Еще вопрос как писать запрос, что бы к примеру считало количество но неповторяющихся елементов в поле?
Уточню есть таблица

strField1

111
122
123
143
345
345
222
222

Так что бы в запросе считало кол-во : 6
...
Рейтинг: 0 / 0
SQL и VBA
    #37274050
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
select count(*) as kolvo
from (select distinct strField1 from Таблица)
...
Рейтинг: 0 / 0
SQL и VBA
    #37274068
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

А что, select Count(distinct поле) from.... в аксе не прокатит?
...
Рейтинг: 0 / 0
SQL и VBA
    #37274081
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что, select Count(distinct поле) from.... в аксе не прокатит? Как в аксе не знаю, в оракле в легкую прокатывает.
...
Рейтинг: 0 / 0
SQL и VBA
    #37274187
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Promds_world,

А что, select Count(distinct поле) from.... в аксе не прокатит?
Нет. Синтаксис джета таких вольностей не позволяет
...
Рейтинг: 0 / 0
SQL и VBA
    #37274217
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

так не прокатывает (((

strSQL7 = "SELECT Count(*) as kolvo from (select distinct ([" & strField1 & "]) from [Лист1$A3:L65000]" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# "
Выдает ошибку : Ошибка синтаксиса в предложении FROM.

А select Count(distinct поле) from.... тоже не ратотает...Пишет:
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Count (distinct[segment вид UNIQA])'
...
Рейтинг: 0 / 0
SQL и VBA
    #37274233
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikтак не прокатывает
скобка закрывающая где?
...
Рейтинг: 0 / 0
SQL и VBA
    #37274240
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikА select Count(distinct поле) from.... тоже не ратотает...
А поле "поле" у тебя есть?
...
Рейтинг: 0 / 0
SQL и VBA
    #37274263
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

после формирования переменной strSQL7, напишите Debug.Print strSQL7 и результат из Immediate, покажите здесь
...
Рейтинг: 0 / 0
SQL и VBA
    #37274281
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,
не могу получить результат в результат из Immediate , так как не компилируеться.
Выдает ошибкуВыдает ошибку : Ошибка синтаксиса в предложении FROM.

А если писать коротко Count(distinct поле) from..., то выдает:
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Count (distinct[segment вид UNIQA])'
...
Рейтинг: 0 / 0
SQL и VBA
    #37274302
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikmds_world,
не могу получить результат в результат из Immediate , так как не компилируеться.
Выдает ошибкуВыдает ошибку : Ошибка синтаксиса в предложении FROM.
Debug.Print надо писать ДО выполнения запроса, а не после




VikVikVik А если писать коротко Count(distinct поле) from..., то выдает:
Ошибка синтаксиса (пропущен оператор) в выражении запроса 'Count (distinct[segment вид UNIQA])'
mds_worldShocker.Promds_world,

А что, select Count(distinct поле) from.... в аксе не прокатит?
Нет. Синтаксис джета таких вольностей не позволяет
...
Рейтинг: 0 / 0
SQL и VBA
    #37274305
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikmds_world,
не могу получить результат в результат из Immediate , так как не компилируеться.
Выдает ошибкуВыдает ошибку : Ошибка синтаксиса в предложении FROM.
Не компилируется или не выполняется?
сразу после указанной строки поставь Debug.Print strSQL7
Так как ошибка возникает позже, эта строка сработает и выдаст результат в Immediate

Впрочем, в чем ошибка в запросе - я уже сказал
...
Рейтинг: 0 / 0
SQL и VBA
    #37274405
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Скобок все равно не вижу, а поле действительно поменяла.
Правда после такой записи выдает нули:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
strSQL7 = "SELECT Count(*) as kolvo from (select distinct ([" & strField5 & "]) from [Лист1$A3:L65000]" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'MTPL' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# "

В Immediate:
  0  
SELECT Count(*) as kolvo from (select distinct ([Номер КЗ]) from [Лист1$A3:L65000]WHERE [segment вид UNIQA]='MTPL' and [Дата події]>= #1/1/2011# and [Дата реєстрації]>= #1/1/2011# and [Дата події]< #1/1/2012# and [Дата реєстрації]< #1/1/2012# 
  0  
...
Рейтинг: 0 / 0
SQL и VBA
    #37274415
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikСкобок все равно не вижу
После from скобка открывается...
...
Рейтинг: 0 / 0
SQL и VBA
    #37274534
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Спасибо. Скобки поставила, а вот оно все равно нули выдает:

Код: plaintext
1.
2.
3.
4.
5.
6.
strSQL7 = "SELECT Count(*) as kolvo from (select distinct ([" & strField5 & "]) from [Лист1$A3:L65000])" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# "

Код: plaintext
1.
2.
3.
 0  
SELECT Count(*) as kolvo from (select distinct ([ Номер КЗ]) from [Лист1$A3:L65000])WHERE [segment вид UNIQA]='' and [Дата події]>= #1/1/2011# and [Дата реєстрації]>= #1/1/2011# and [Дата події]< #1/1/2012# and [Дата реєстрації]< #1/1/2012# 
  0  
...
Рейтинг: 0 / 0
SQL и VBA
    #37274560
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то не нули, а ошибку должен выдавать. В скобки надо заключить ВЕСЬ подзапрос, включая WHERE
...
Рейтинг: 0 / 0
SQL и VBA
    #37275183
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Напилала:
(1)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
      Debug.Print strSQL7
      Debug.Print x7
  
strSQL7 = "SELECT Count (distinct ([" & strField5 & "] from [Лист1$A3:AM65000])" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'Casco' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# )"
В окне Immediate стало просто выводить 0.
Наверноя я не правильно формирую сам запрос. (2) Мне нужно отобрать по полю trField5 ="Номер КЗ" не учитывать КЗ, которые повторяються посчитать кол-во при условии, что strField1="Casco" и strField2>1/1/2011 Field2<1/1/2012 и strField3>1/1/2011 Field3<1/1/2012
Скажите (1)=(2)? или не верній запрос в (1). Спасибо.
...
Рейтинг: 0 / 0
SQL и VBA
    #37275270
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(2) не нашел
VikVikVikМне нужно отобрать по полю trField5 ="Номер КЗ" этого условия нет в запросе
...
Рейтинг: 0 / 0
SQL и VBA
    #37275293
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Как же.. я ведь пишу

strSQL7 = "SELECT Count (distinct ([" & strField5 & "] ...
...
Рейтинг: 0 / 0
SQL и VBA
    #37275295
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,
Как же.. я ведь пишу

strSQL7 = "SELECT Count (distinct ([" & strField5 & "] ...

И что?
Где условие trField5 ="Номер КЗ"?
...
Рейтинг: 0 / 0
SQL и VBA
    #37276024
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Писала раньше

Код: plaintext
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
 Function GetData17(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, strField5 As String) As Currency


    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL7 As String
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
    
    
strSQL7 = "SELECT Count(select distinct ([" & strField5 & "]) from [Лист1$A3:AM65000]" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# )"
     
    rst.Open strSQL7, cnn
    GetData17 = rst.Fields( 0 )
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Function

'------------------------------------ GetData8----------------------------------------------------------------------------------------

 Sub test17()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    Dim strSQL7 As String
    
    Dim strCriterion1 As String
    Dim strCriterion2 As String
    Dim strCriterion3 As String
    Dim strCriterion4 As String
    Dim strCriterion5 As String
    
    Dim strField1 As String
    Dim strField2 As String
    Dim strField3 As String
    Dim strField4 As String
    Dim strField5 As String
        
    Dim strRange As String
    Dim strPath As String
    
    Dim strOperator1 As String
    Dim strOperator2 As String
    Dim strOperator3 As String
    Dim strOperator4 As String
    Dim strOperator5 As String
    
    Dim x7 As Currency

    
    strOperator1 = "="
    strOperator2 = ">="
    strOperator3 = ">="
    strOperator4 = "<"
    strOperator5 = "<"
    
    strField1 = "segment вид UNIQA"
    strField2 = "Дата події"
    strField3 = "Дата реєстрації"
    strField4 = "Сума"
    strField5 = "Номер КЗ"
    
     strPath = "W:\Actuaries\Vika\Report\âûïëàòû\PaymentCompens_01-04-11_30-04-11.xlsm"


    strRange = ""
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
      Debug.Print strSQL7
      Debug.Print x7
      
strSQL7 = "SELECT Count (distinct ([" & strField5 & "] from [Лист1$A3:AM65000])" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'Casco' and [" _
& strField2 & "]" & strOperator2 & " #1/1/2011# and [" _
& strField3 & "]" & strOperator3 & " #1/1/2011# and [" _
& strField2 & "]" & strOperator4 & " #1/1/2012# and [" _
& strField3 & "]" & strOperator5 & " #1/1/2012# )"
    
   'rst.Open strSQL7, cnn
   ' x7 = rst.Fields(0)

  ' rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub

...
Рейтинг: 0 / 0
SQL и VBA
    #37276120
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, некорректное высказывание:
VikVikVikМне нужно отобрать по полю trField5 ="Номер КЗ" (забудем, проще чем объяснять)



Итак, если GetData17=0, значит под условия запроса (WHERE) не попадает ни одна запись.
Отладка таких запросов дело простое - убираешь условия по одному и смотришь результат.
...
Рейтинг: 0 / 0
SQL и VBA
    #37291526
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Все равно ставит 0 хоть ты убей:

С Immediate:
SELECT Count (distinct ([Номер КЗ] from [Ëèñò1$A3:AM65000])WHERE [segment вид UNIQA]='Casco'
0
Вроде действительно и условия все убрала....Не пойму даже где истать ошибку....(((
...
Рейтинг: 0 / 0
SQL и VBA
    #37291545
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять количество скобок не совпадает
...
Рейтинг: 0 / 0
SQL и VBA
    #37291561
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вот что пишет....

SELECT Count (distinct ([Номер КЗ] from [Лист1$A3:AM65000])WHERE [segment вид UNIQA]='Casco'
0
...
Рейтинг: 0 / 0
SQL и VBA
    #37291600
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

А к чему должно относить слово distinct? Только к полю?
То есть вот так вот?

SELECT Count (distinct( [Íîìåð ÊÇ])) from [Ëèñò1$A3:AM65000]WHERE [segment âèä UNIQA]='Casco'
0
так тоже не работает...
...
Рейтинг: 0 / 0
SQL и VBA
    #37291636
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ту скобку, которую добавила перенеси в самый конец. Перед where должен быть пробел.
...
Рейтинг: 0 / 0
SQL и VBA
    #37291654
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

так то вроде правильно ставлю скобки ...

strSQL7 = "SELECT Count (distinct ([" & strField5 & "]) from [Ëèñò1$A3:AM65000])" & "WHERE [" _
& strField1 & "]" & strOperator1 & "'Casco'"
... а не работает...
...
Рейтинг: 0 / 0
SQL и VBA
    #37291656
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikА к чему должно относить слово distinct? Только к полю? 10693431
...
Рейтинг: 0 / 0
SQL и VBA
    #37291661
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, в самыыыый
SELECT Count(distinct( [Íîìåð ÊÇ]) from [Ëèñò1$A3:AM65000] WHERE [segment âèä UNIQA]='Casco')
Скопипасти и проверь.
...
Рейтинг: 0 / 0
SQL и VBA
    #37291677
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, ну давали же правильный вариант еще на предыдущей странице
10692936
чего огород-то городите?
...
Рейтинг: 0 / 0
SQL и VBA
    #37291685
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, протупил что то. Shocker.Pro прав.
...
Рейтинг: 0 / 0
SQL и VBA
    #37291827
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp,

Пишу:
Код: plaintext
1.
 strSQL7 = "SELECT count(*) as kolvo  from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000])" & "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' "


Выдает:

Код: plaintext
1.
2.
SELECT count(*) as kolvo  from (select distinct [Номер КЗ] from [Лист1$A3:AM65000])WHERE [segment вид UNIQA] = 'Casco' 
  0  
...
Рейтинг: 0 / 0
SQL и VBA
    #37291893
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скобка закрывающая опять не там
...
Рейтинг: 0 / 0
SQL и VBA
    #37291918
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

И так не работает (((

strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "]) from [Лист1$A3:AM65000]" & "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' "
...
Рейтинг: 0 / 0
SQL и VBA
    #37291924
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы там наугад что ли скобки пытаетесь расставлять?
...
Рейтинг: 0 / 0
SQL и VBA
    #37291927
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT count(*) as kolvo  from (select distinct [Номер КЗ] from [Лист1$A3:AM65000] WHERE [segment вид UNIQA] = 'Casco')
...
Рейтинг: 0 / 0
SQL и VBA
    #37291931
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneвы там наугад что ли скобки пытаетесь расставлять?
конечно наугад
автор, нужно хоть попытаться понять смысл написанного!
...
Рейтинг: 0 / 0
SQL и VBA
    #37291952
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Да поняла, что скобки ставться from (тра-та-та). Только вот когда мегазагадочный distinct вставляю сразу выдает 0.
Вот и сейчас...

strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000]" & "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' )"

пишет
SELECT count(*) as kolvo from (select distinct [Номер КЗ] from [Лист1$A3:AM65000]WHERE [segment вид UNIQA] = 'Casco' )
0
...
Рейтинг: 0 / 0
SQL и VBA
    #37291962
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть
SELECT count(*) as kolvo from (select [Номер КЗ] from [Лист1$A3:AM65000]WHERE [segment вид UNIQA] = 'Casco' )
выдает не ноль?
...
Рейтинг: 0 / 0
SQL и VBA
    #37291967
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

тоже ноль... Ваша правда.
...
Рейтинг: 0 / 0
SQL и VBA
    #37291974
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT count(*) as kolvo from (select [Номер КЗ] from [Лист1$A3:AM65000]WHERE [segment вид UNIQA] = 'Casco' )

этот запрос неправильный, он не может вообще работать, должен давать ошибку.

вот так должно быть, как минимум:

Код: plaintext
SELECT count(A.*) as kolvo from (select [Номер КЗ] from [Лист1$A3:AM65000] WHERE [segment вид UNIQA] = 'Casco') A
...
Рейтинг: 0 / 0
SQL и VBA
    #37291984
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если условие убрать?
...
Рейтинг: 0 / 0
SQL и VBA
    #37291990
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Простите безграммотных, а что такое А ?
Вместо него нужно что-то подсталять?
Вставляла- не работает:

Код: plaintext
1.
 strSQL7 = "SELECT count(A.*) as kolvo from (select [" & strField5 & "] from [Ëèñò1$A3:AM65000] WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' ) A"
...
Рейтинг: 0 / 0
SQL и VBA
    #37292001
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Если не хочешь до конца сезона переписываться, давай тестовый файл. Желательно вычистить оттуда все, кроме необходимой функции или дать подробные разъяснения, что и где надо увидеть.
...
Рейтинг: 0 / 0
SQL и VBA
    #37292003
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жесть какая-то

вы уж простите за выражение. сначала создайте работоспособный запрос внутри вашего excel (с помощью акцесса ли или msquery), а уж потом кодируйте его в коде своём. мы ж тут не экстрасенсы, чтоб видеть как в вашем файлике столбцы называются, может вы их от фонаря назвали , а в запросе другие имена навставляли. и пользуйтесь обработчиком ошибок и сюда приводите всегда
Код: plaintext
Err.Number & ": " & Err.Description
, чтобы можно хоть что-то вам посоветовать
...
Рейтинг: 0 / 0
SQL и VBA
    #37292089
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
...
Рейтинг: 0 / 0
SQL и VBA
    #37292096
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

А вот файл откуда тянеться
...
Рейтинг: 0 / 0
SQL и VBA
    #37292104
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты все-таки до конца сезона хочешь....

Shocker.ProЕсли не хочешь до конца сезона переписываться, давай тестовый файл. Желательно вычистить оттуда все, кроме необходимой функции или дать подробные разъяснения, что и где надо увидеть.
...
Рейтинг: 0 / 0
SQL и VBA
    #37292108
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,


Sub test17() в Модуле 1
...
Рейтинг: 0 / 0
SQL и VBA
    #37292114
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким должен быть результат? Печататься не ноль в Immediate? Почему?
...
Рейтинг: 0 / 0
SQL и VBA
    #37292118
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА каким должен быть результат? Печататься не ноль в Immediate? Почему?
Код: plaintext
1.
2.
    Dim x7 As Currency
    Debug.Print x7
...
Рейтинг: 0 / 0
SQL и VBA
    #37292167
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Если смотреть лист 10-10.
1)Это если брать Дату регестрации >1/1/2010 и < 1/1/2011
2)Дату События >1/1/2010 и <1/1/2011
3)Вид Сasco если брать повторяющие Номера КЗ, то это 1429.
4)А мне нужно брать не повторяющие номера КЗ 1288.

Что я делала с помощью сначала сводная, а потом в сводной считала ЧСТРОК. Но ведь каждый раз неудобно делать. Можно ошибиться.

То есть при этих условиях 1),2),3),4) должно получаться в моем запросе 1288.
Эта таблица сводная была сделана на основе того файла, что я Вам выслала.
...
Рейтинг: 0 / 0
SQL и VBA
    #37292170
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Сам файл
...
Рейтинг: 0 / 0
SQL и VBA
    #37292173
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Смотреть С30 и D30
...
Рейтинг: 0 / 0
SQL и VBA
    #37292180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,

Если смотреть лист 10-10.
1)Это если брать Дату регестрации >1/1/2010 и < 1/1/2011
2)Дату События >1/1/2010 и <1/1/2011
3)Вид Сasco если брать повторяющие Номера КЗ, то это 1429.
4)А мне нужно брать не повторяющие номера КЗ 1288.

Что я делала с помощью сначала сводная, а потом в сводной считала ЧСТРОК. Но ведь каждый раз неудобно делать. Можно ошибиться.

То есть при этих условиях 1),2),3),4) должно получаться в моем запросе 1288.
Эта таблица сводная была сделана на основе того файла, что я Вам выслала.

Если не будешь проще писать, я это не буду читать.

В файле десятки функций. Я не понимаю, что я должен сделать, чтобы увидеть неправильную работу какой либо функции? Функция test17 работает правильно - выдает в Immediate - 0
...
Рейтинг: 0 / 0
SQL и VBA
    #37292219
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Должно в запросе получаться 967.
если ссылаться на тот файл, который я вам выслала.
По полю Номер КЗ кол-во 1067, а неповоряющихся Номеров КЗ 967

Это при условии:
1)
По полю Дата Регестрации >1/1/2011 и <1/1/2012
2)
По полю Дата Cобытия >1/1/2011 и <1/1/2012
3)
segment вид UNIQA=Сasco
4)
Cчитать по полю кол-во неповторяющихся Номер КЗ
...
Рейтинг: 0 / 0
SQL и VBA
    #37292275
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где функция, которая выполняет запрос?
...
Рейтинг: 0 / 0
SQL и VBA
    #37292351
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,
Должно в запросе получаться 967.
если ссылаться на тот файл, который я вам выслала.
По полю Номер КЗ кол-во 1067, а неповоряющихся Номеров КЗ 967У меня присланный файл конвертром не открывается а 2007-го экселя у меня нет


VikVikVikЭто при условии:
1)
По полю Дата Регестрации >1/1/2011 и <1/1/2012
2)
По полю Дата Cобытия >1/1/2011 и <1/1/2012
3)
segment вид UNIQA=Сasco
4)
Cчитать по полю кол-во неповторяющихся Номер КЗВот функция, которая считает все правильно:
Код: plaintext
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.
Sub test17()
    
    
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim strSQL7 As String
    Dim strConnectionString As String
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    strPath = "v:\2.xls"
    strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;IMEX=1"""
    cnn.Open strConnectionString
    
    strSQL7 = "select Count(*) from [Лист1$A3:AM65000] " + _
              "WHERE [segment вид UNIQA] = 'Casco' " + _
              "and [Дата подiї]>= #1/1/2011# and [Дата реєстрацiї]>= #1/1/2011# " + _
              "and [Дата подiї]< #1/1/2012# and [Дата реєстрацiї]< #1/1/2012#"
    rst.Open strSQL7, cnn
    Debug.Print rst( 0 )
    rst.Close
    
    strSQL7 = "SELECT count(*) as kolvo from (select distinct [Номер КЗ] from [Лист1$A3:AM65000] " + _
              "WHERE [segment вид UNIQA] = 'Casco' " + _
              "and [Дата подiї]>= #1/1/2011# and [Дата реєстрацiї]>= #1/1/2011# " + _
              "and [Дата подiї]< #1/1/2012# and [Дата реєстрацiї]< #1/1/2012#)"
    rst.Open strSQL7, cnn
    Debug.Print rst( 0 )
    rst.Close
    
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub
Которая правильно находит 9 записей с неуникальными [Номер КЗ] и 7 записей с уникальными [Номер КЗ] в приложенном файле
...
Рейтинг: 0 / 0
SQL и VBA
    #37293107
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

CПАСИБО!!! Хи-хи-хи!!! Ве работает
...
Рейтинг: 0 / 0
SQL и VBA
    #37293566
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Запрос работает, а вот функция пользовательская никак

Код: plaintext
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.
 
Function GetData17(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, strField5 As String) As Currency


    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL7 As String
    
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
        
    '-----------------------------------------------------------------------------------------------------
    strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000] " + _
              "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' " + _
              "and [" & strField2 & "]" & strOperator2 & "#1/1/2011# and [" & strField2 & "] " & strOperator4 & "#1/1/2012# " + _
              "and [" & strField3 & "]   " & strOperator3 & "#1/1/2011# and [" & strField3 & "] " & strOperator5 & "#1/1/2012#)"
    rst.Open strSQL7, cnn
    Debug.Print rst( 0 )
    rst.Close
    cnn.Close
    '-----------------------------------------------------------------------------------------------------
    
    Set rst = Nothing
    Set cnn = Nothing
End Function


В ячейку вставляю:
=GetData17("W:\Actuaries\Vika\Report\выплаты\1.xlsm";"segment вид UNIQA";"=";A7;"Дата події";">=";$B$1;"<";$B$2;"Дата реєстрацiї ";">=";$B$3;"<";$B$4;"Номер КЗ")
пишет #ЗНАЧ
...
Рейтинг: 0 / 0
SQL и VBA
    #37293863
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не пойму где ошибаюсь?
путь указан верно, параметры тоже вроде вставлены верно...
Бог его знает...
...
Рейтинг: 0 / 0
SQL и VBA
    #37293970
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

перед строкой rst.Open strSQL7, cnn, поставьте распечатку скл-выражения в Immediate
Debug.Print strSQL7
и покажите ее здесь.
...
Рейтинг: 0 / 0
SQL и VBA
    #37294763
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Это то что Immediate

SELECT count(*) as kolvo from (select distinct [Номер КЗ] from [Лист1$A3:AM65000] WHERE [segment вид UNIQA] = 'Casco' and [Дата подiї]>=#1/1/2011# and [Дата подiї] <#1/1/2012# and [Дата реєстрацiї] >=#1/1/2011# and [Дата реєстрацiї] <#1/1/2012#)
967

Считает вроде все верно, а вот функция пользовательская(см выше) не работает в листе


Код: plaintext
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
 '==================================================КОЛ_ВО=========================
Sub test17()
  
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim strSQL7 As String
    Dim strConnectionString As String
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strPath As String
    
    Dim strCriterion1 As String
    Dim strCriterion2 As String
    Dim strCriterion3 As String
    Dim strCriterion4 As String
    Dim strCriterion5 As String
    
    Dim strField1 As String
    Dim strField2 As String
    Dim strField3 As String
    Dim strField4 As String
    Dim strField5 As String
        
    Dim strRange As String
    
    Dim strOperator1 As String
    Dim strOperator2 As String
    Dim strOperator3 As String
    
    Dim strOperator4 As String
    Dim strOperator5 As String
    
    Dim x7 As Currency

    strOperator1 = "="
    strOperator2 = ">="
    strOperator3 = ">="
    strOperator4 = "<"
    strOperator5 = "<"
    
    strField1 = "segment вид UNIQA"
    strField2 = "Дата подiї"
    strField3 = "Дата реєстрацiї"
    strField4 = "Сума"
    strField5 = "Номер КЗ"
    
   
    strPath = "W:\Actuaries\Vika\Report\1.xlsm"

   ' для 2003 Excel
   ' strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;IMEX=1"""
   ' cnn.Open strConnectionString
    
    ' для 2007 Excel
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
    '=======================================================================================================
    'ЗАПРОС считает количество номеров КЗ
    '------------------------------------------------------------------------------------------------------
    'strSQL7 = "select Count(*) from [Лист1$A3:AM65000] " + _
     '         "WHERE [segment вид UNIQA] = 'Casco' " + _
     '         "and [Дата подiї]>= #1/1/2011# and [Дата реєстрацiї]>= #1/1/2011# " + _
     '         "and [Дата подiї]< #1/1/2012# and [Дата реєстрацiї]< #1/1/2012#"
   ' rst.Open strSQL7, cnn
   ' Debug.Print rst(0)
   ' rst.Close
    
    '====================================================================================================
    'ЗАПРОС считает неповторяющие номера КЗ
    '-----------------------------------------------------------------------------------------------------
    strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000] " + _
              "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' " + _
              "and [" & strField2 & "]" & strOperator2 & "#1/1/2011# and [" & strField2 & "] " & strOperator4 & "#1/1/2012# " + _
              "and [" & strField3 & "]   " & strOperator3 & "#1/1/2011# and [" & strField3 & "] " & strOperator5 & "#1/1/2012#)"
              
              Debug.Print strSQL7

    rst.Open strSQL7, cnn
    Debug.Print rst( 0 )
    rst.Close
    cnn.Close
    '=====================================================================================================
    
    Set rst = Nothing
    Set cnn = Nothing
    
End Sub
...
Рейтинг: 0 / 0
SQL и VBA
    #37296009
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а если функцию вызвать в immediate со всеми параметрами такими же, как на листе?
...
Рейтинг: 0 / 0
SQL и VBA
    #37296868
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[spoiler]Так прошёл месяц.[/spolier]

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
SQL и VBA
    #37296875
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...а автор так и не разобрался, что такое "отладка программы"
...
Рейтинг: 0 / 0
SQL и VBA
    #37296931
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Ладно, не вгоняйте в тоску. Что читать, лудше скажите.
Или я вновь не внимательная...
...
Рейтинг: 0 / 0
SQL и VBA
    #37297918
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikShocker.Pro,

Запрос работает, а вот функция пользовательская никак

Код: plaintext
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.
 
Function GetData17(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, strField5 As String) As Currency


    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL7 As String
    
    
    Dim strConnectionString As String
    strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
    cnn.Open strConnectionString
    
        
    '-----------------------------------------------------------------------------------------------------
    strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000] " + _
              "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' " + _
              "and [" & strField2 & "]" & strOperator2 & "#1/1/2011# and [" & strField2 & "] " & strOperator4 & "#1/1/2012# " + _
              "and [" & strField3 & "]   " & strOperator3 & "#1/1/2011# and [" & strField3 & "] " & strOperator5 & "#1/1/2012#)"
    rst.Open strSQL7, cnn
    Debug.Print rst( 0 )
    ' Это функция, поэтому нужно возвращать значение. Если запрос отрабатывает правильно, тогда присваиваем результат выполнения запроса в название функции для возврата результата.
    ' Правда не понятно! в запросе count т.е. результат целое число, а функция должна возвращать Currency. Ну да ладно :)
    GetData17 = rst( 0 ) 
    rst.Close
    cnn.Close
    '-----------------------------------------------------------------------------------------------------
    
    Set rst = Nothing
    Set cnn = Nothing
End Function


В ячейку вставляю:
=GetData17("W:\Actuaries\Vika\Report\выплаты\1.xlsm";"segment вид UNIQA";"=";A7;"Дата події";">=";$B$1;"<";$B$2;"Дата реєстрацiї ";">=";$B$3;"<";$B$4;"Номер КЗ")
пишет #ЗНАЧ
...
Рейтинг: 0 / 0
SQL и VBA
    #37298052
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос Это функция, поэтому нужно возвращать значение.
Нет, если б функция отрабатывала, в ячейке писался бы 0, а не #ЗНАЧ (без присвоения).
Следовательно, автор просто неправильные параметры передает в функцию и в результате получает, скажем, ошибку выполнения запроса. А так как при использовании функции в ячейке ошибка времени выполнения блокируется, автор получает #ЗНАЧ. Тут надо либо On Error в функцию поставить, но я уже боюсь путать автора, либо отладить функцию в Immediate, чего автор не хочет делать, тут ничем помочь не могу.
...
Рейтинг: 0 / 0
SQL и VBA
    #37298241
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИгорь Горбонос Это функция, поэтому нужно возвращать значение.
Нет, если б функция отрабатывала, в ячейке писался бы 0, а не #ЗНАЧ (без присвоения).
Согласен! Протупил!
Тогда идем дальше :)


Это все в отдельный модуль
Код: plaintext
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.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
Option Explicit

Private cn As New ADODB.Connection
Private cmd As New ADODB.Command

' Данные для логирования ошибок
Private g_iRowError As Long

Enum StructErr
    seColErr =  1    '"Ошибка"
    seColSheet =  2  '"Лист"
    seColRow =  3    '"Строка с ошибкой"
    seColFunc =  4   '"Функция"
    seColText =  5   '"Текст"
End Enum

'***********************************************************************
'* Открывает коннест к базе
'***********************************************************************
Private Function OpenConnect(sDBPath As String) As Boolean
Dim sErrDesc As String
OpenConnect = False

On Error GoTo labErr

cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
cmd.ActiveConnection = cn
OpenConnect = True
Exit Function

labErr:
sErrDesc = Err.Description
sErrDesc = Replace(sErrDesc, vbLf, " | ", , , vbTextCompare)
Call OutputErrorMessage(sErrDesc, , , "OpenConnect")
End Function

'***********************************************************************
'* Закрывает коннест к базе
'***********************************************************************
Private Sub CloseConnect()
On Error GoTo labErr

cn.Close

labErr:
Set cn = Nothing
Set cmd = Nothing

End Sub

'***********************************************************************
'* Выполняет запрос подготовленный заранее и возвращает RecordSet
'***********************************************************************
Private Function ExecQueryBaseRS(sSql As String) As ADODB.Recordset
Dim sErrDesc As String
Dim erCur As ADODB.Error

Set ExecQueryBaseRS = Nothing

On Error GoTo labErr

cmd.CommandText = sSql
cmd.Prepared = True
Set ExecQueryBaseRS = cmd.Execute

Exit Function
labErr:

If cn.State <> adStateClosed Then
    cn.RollbackTrans
End If

sErrDesc = "" 'Err.Description & " <-> "

On Error Resume Next

' Get the ADO errors.
If cn.Errors.Count >  0  Then
    For Each erCur In cn.Errors
        sErrDesc = sErrDesc & erCur.Source & ": " & erCur.Description & " | "
    Next erCur
End If
sErrDesc = Replace(sErrDesc, vbLf, " | ", , , vbTextCompare)
Call OutputErrorMessage(sErrDesc, , , "ExecQueryBaseRS", cmd.CommandText)
End Function


'***********************************************************************
'* Выводит в активной книге на лист Ошибки сообщения об ошибках
'***********************************************************************
Private Function OutputErrorMessage(sErrMess As String, Optional sSheet As String = "", _
    Optional iRow As Long =  0 , Optional sFunc As String = "", Optional sTxt As String = "")
If shErr Is Nothing Then
    Set shErr = CheckSheetError
End If
On Error GoTo labErr
With shErr
    .Cells(g_iRowError, seColErr).Value = sErrMess
    .Cells(g_iRowError, seColSheet).Value = sSheet
    .Cells(g_iRowError, seColRow).Value = iRow
    .Cells(g_iRowError, seColFunc).Value = sFunc
    .Cells(g_iRowError, seColText).Value = sTxt
End With
g_iRowError = g_iRowError +  1 
Exit Function

labErr:

End Function

'***********************************************************************
'* Проверяет наличие в книге листа для вывода ошибок.
'* Если листа нет - создает
'***********************************************************************
Private Function CheckSheetError() As Worksheet
Dim s As String
On Error GoTo labErr

' Инициализируем номер строки для вывода ошибок
' По номеру строки будем проверять наличие ошибок
' Если больше 2, значит были ошибки и нужно показать лист с ошибками
g_iRowError =  2 

Set CheckSheetError = Sheets("Ошибки")

CheckSheetError.Cells.ClearContents
CheckSheetError.Cells( 1 , seColErr).Value = "Ошибка"
CheckSheetError.Cells( 1 , seColSheet).Value = "Лист"
CheckSheetError.Cells( 1 , seColRow).Value = "Строка с ошибкой"
CheckSheetError.Cells( 1 , seColFunc).Value = "Функция"
CheckSheetError.Cells( 1 , seColText).Value = "Текст"

Exit Function
labErr:
If Err.Number =  9  Then
    With ActiveWorkbook.Sheets.Add
        .Name = "Ошибки"
    End With
    Set CheckSheetError = Sheets("Ошибки")
    Resume Next
End If
End Function

Function GetData17(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strOperator4 As String, strCriterion4 As String, strField3 As String, strOperator3 As String, strCriterion3 As String, strOperator5 As String, strCriterion5 As String, strField5 As String) As Currency


    Dim rst As ADODB.Recordset
    Dim strSQL7 As String
' Сразу устанавливаем значение с ошибкой
    GetData17 = - 1 
    
    ' Устанавливаем соединение с источником данных
    If OpenConnect(strPath) Then
    ' Если соединение установленно, можно запрашивать данные
            '-----------------------------------------------------------------------------------------------------
        strSQL7 = "SELECT count(*) as kolvo from (select distinct [" & strField5 & "] from [Лист1$A3:AM65000] " + _
                  "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' " + _
                  "and [" & strField2 & "]" & strOperator2 & "#1/1/2011# and [" & strField2 & "] " & strOperator4 & "#1/1/2012# " + _
                  "and [" & strField3 & "]   " & strOperator3 & "#1/1/2011# and [" & strField3 & "] " & strOperator5 & "#1/1/2012#)"
        ' Я не знаю делает ли это драйвер для Ексела, но в стандарте SQL есть конструкция:
        ' Select Count(Distinct имя_поля) As kol_vo_unique from имя_таблицы.
        ' Я к чему, твои два запроса можно переписать на один следующим образом:
'        strSQL7 = "Select count(distinct [" & strField5 & "]) as kolvo from [Лист1$A3:AM65000] " + _
'                  "WHERE [" & strField1 & "] " & strOperator1 & " 'Casco' " + _
'                  "and [" & strField2 & "]" & strOperator2 & "#1/1/2011# and [" & strField2 & "] " & strOperator4 & "#1/1/2012# " + _
'                  "and [" & strField3 & "]   " & strOperator3 & "#1/1/2011# and [" & strField3 & "] " & strOperator5 & "#1/1/2012#"

        ' После подготовки запроса исполняем его
        Set rst = ExecQueryBaseRS(strSQL7)
        If Not rst Is Nothing Then
        ' Если Recordset объект, значит запрос выполнился и можно работать дальше.
            GetData17 = rst.Fields( 0 ).Value
        ' Убираем за собой RecordSet'ы
            rst.Close
            Set rst = Nothing
        Else
        ' Если RecordSet НЕ объект, значит какая-то ошибка и можно смотреть лист "Ошибки" в активной книге
        ' Можно ещё вывести сообщение, что мол ищи описание ошибки :)
        End If
        ' Если соединение открывали, закрываем его
        CloseConnect
    Else
    ' Если соединение не установленно, то нужно смотреть лист "Ошибки" в активной книге
    ' Можно ещё вывести сообщение, что мол ищи описание ошибки :)
    End If
        
End Function
У меня эти функции были разнесены по разным модулям, для более гибкого использования, но сейчас все сложил в один модуль.

Ы?
...
Рейтинг: 0 / 0
SQL и VBA
    #37298258
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЫ?

чувствуется, соскучился
...
Рейтинг: 0 / 0
SQL и VBA
    #37298761
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшой fix для функции OpenConnect
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
'***********************************************************************
'* Открывает коннест к базе
'***********************************************************************
Private Function OpenConnect(sDBPath As String) As Boolean
Dim sErrDesc As String
OpenConnect = False

On Error GoTo labErr

cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1""" ' БЫЛО

cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sDBPath & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1""" ' НУЖНО
cmd.ActiveConnection = cn
OpenConnect = True
Exit Function

labErr:
sErrDesc = Err.Description
sErrDesc = Replace(sErrDesc, vbLf, " | ", , , vbTextCompare)
Call OutputErrorMessage(sErrDesc, , , "OpenConnect")
End Function
...
Рейтинг: 0 / 0
SQL и VBA
    #37314448
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro bИгорь Горбонос спасибо Вам!
Решила взяться за ум.Пока хожу на курсі аксеса, ну а потом может и до sql доберусь...
...
Рейтинг: 0 / 0
107 сообщений из 107, показаны все 5 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL и VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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