powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL и VBA
25 сообщений из 107, страница 1 из 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
25 сообщений из 107, страница 1 из 5
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL и VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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