powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
25 сообщений из 88, страница 2 из 4
Фильтрация в Vba
    #37249905
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,
Вам бы в партизаны: хрен бы враги из Вас что-нибудь вытянули ..
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249913
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Option Explicit

Sub AddReferences()
'---------------------------------------------------------------------------------------
' Procedure : AddReferences
' Purpose   : Ïîäêëþ÷àåì ññûëêó íà ADO (Òà, ÷òî â ìåíþ Tools->References)
'---------------------------------------------------------------------------------------
    On Error Resume Next
    'Name:   ADODB
    'Description:   Microsoft ActiveX Data Objects 2.8 Library
    ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado15.dll")
    ThisWorkbook.VBProject.References.AddFromGuid GUID:="{2A75196C-D9EB-4129-B803-931327F72D5C}", Major:=2, Minor:=8
End Sub

Function GetData(strPath As String, strField1 As String, strOperator1 As String, strCriterion1 As String, strField2 As String, strOperator2 As String, strCriterion2 As String, strField3 As String, strOperator3 As String, strCriterion3 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 strSQL As String
                                                                            
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
   
   ' strSQL = "SELECT Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" And "[" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" And "[" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
     'ðàáîòàåò
    'strSQL = "SELECT  Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "  && [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & " && [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
    
    strSQL = "SELECT Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" & " And [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" & " And [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
    'strSQL = "SELECT Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "'" & " And [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "'" & " And [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
    
    rst.Open strSQL, cnn

    GetData = rst.Fields(0)
    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing
End Function


Sub test()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL As String
    Dim strCriterion1 As String
    Dim strCriterion2 As String
    Dim strCriterion3 As String
    
    

    Dim strField1 As String
    Dim strField2 As String
    Dim strField3 As String
    
    Dim strRange As String
    Dim strPath As String
    Dim strOperator1 As String
    Dim strOperator2 As String
    Dim strOperator3 As String
    Dim x As Integer
    
    strOperator1 = "="
    strOperator2 = ">"
    strOperator3 = ">"
    strPath = "c:\Gorokh\Report\Êíèãà4.xls"
    strField1 = "segment âèä UNIQA"
    strField2 = "Äàòà íàñòàííÿ ñòðàõîâîãî âèïàäêó"
    strField3 = "Äàòà ðåºñòðàöi¿ ñòðàõîâîãî âèïàäêó"
    strCriterion1 = "Casco"
    strCriterion2 = 39877
    strCriterion3 = 40180
    strRange = ""
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
    strSQL = "SELECT Count([" & strField1 & "]) FROM [Ëèñò3$A3:L1000] " & "WHERE [" & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" & strField2 & "]" & strOperator2 & "'" & strCriterion2 & "' and [" & strField3 & "]" & strOperator3 & "'" & strCriterion3 & "'"
Debug.Print strSQL

    rst.Open strSQL, cnn
    x = rst.Fields(0)
Debug.Print x
    rst.Close
    cnn.Close
    Set rst = Nothing
    Set cnn = Nothing
End Sub
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249924
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не партизаню. Простно наверное моих знаний и навыков маловато...
Это мой первый запрос в жизни...)))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249947
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и как мы без самой книги посмотрим, почему там нули?
Ладно, мне что-то надоела эта ветка, если автор себе не хочет помочь, нкто ему не поможет.

ЗЫ: Для оформления кода используйте тэги SRC, а не FIXED и почитайте правила форума
ЗЗЫ: Чтобы нормально вставлять русский текст на форум - почитайте эту тему: Вставка из буфера русского текста - крокозяблы.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249971
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот две книги. Не топите :)
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37249995
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37250008
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, а то без ваших советов совсем как-то плохо....
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37254807
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Если меняю на "Excel 9.0" то все равно не работает для 2007 Excel. (((
В 2007 не определяет пользовательскую функцию...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37254819
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255291
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Уговорили, сейчас установлю Office 2007 на VM и попробую что-нибудь придумать. А вы, чтобы не терять зря время, можете пока почитать вот эту статью:
http://forums.asp.net/t/1169005.aspx/1?How+to+read+from+excel+2007+format+file+
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255656
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
Золотой Вы человек. :)
Читала статью. Попыталась вместо Provider=Microsoft.Jet.OLEDB.4.0 написать Provider=Microsoft.Jet.OLEDB.12.0.
Для этого по ссылке попыталась скачать файл.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891
Он скачивается, однако не запускается...
Поэтому мои строки пока бесполезные...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255794
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Какой ещё Microsoft.Jet.OLEDB.12.0? Вот же Connection String:авторTry using the connection string like below..

strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & serverPath & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=NO;IMEX=1"""
Осталось только немного подправить под себя (вместо HDR=NO у нас HDR=YES):
Код: plaintext
1.
2.
3.
    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
И всё. Процедура test работает.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255822
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Это понятно, что если есть заголовки? то HDR=YES/
Не запускает test : Несоответсвие типов данных в выражении условия отбора
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255828
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255833
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот последний мой вариант...
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37255880
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVik,

Раскоментируем строчки с условиями и запишем дату вот в таком виде
Код: plaintext
1.
2.
strCriterion1 = "Casco"
strCriterion2 = # 10 / 6 / 2009 #
strCriterion3 = # 1 / 27 / 2010 #
а в строке запроса тогда уберём одинарные кавычки перед датами
Код: plaintext
1.
2.
3.
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
         & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
         & strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
         & strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Debug.Print strSQL
Debug.Print x

Код: plaintext
1.
SELECT Count([segment вид UNIQA]) FROM [Лист3$A3:L1000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>= 10 / 6 / 2009  and [Дата реєстрацiї страхового випадку]>= 1 / 27 / 2010 
  3  
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37256913
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

А вот эти кавычки тоже (насколько понимаю) не нужны?

strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " ' " & strCriterion1 & " ' and [" _
& strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
& strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Все равно выдает :
число содержит синтаксическую ошибку в выражении запроса
И еще вопрос-это я считала количество записей, а как вот эту сумму, что выделена красным в Книге4 подтягивать?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37256916
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37257381
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

*смайлик, бьющися головой об стену*
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37257536
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurskyVikVikVik,

Раскоментируем строчки с условиями и запишем дату вот в таком виде
Код: plaintext
1.
2.
strCriterion1 = "Casco"
strCriterion2 = # 10 / 6 / 2009 #
strCriterion3 = # 1 / 27 / 2010 #
а в строке запроса тогда уберём одинарные кавычки перед датами
Код: plaintext
1.
2.
3.
strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
         & strField1 & "]" & strOperator1 & "'" & strCriterion1 & "' and [" _
         & strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
         & strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Debug.Print strSQL
Debug.Print x

Код: plaintext
1.
SELECT Count([segment вид UNIQA]) FROM [Лист3$A3:L1000] WHERE [segment вид UNIQA]='Casco' and [Дата настання страхового випадку]>= 10 / 6 / 2009  and [Дата реєстрацiї страхового випадку]>= 1 / 27 / 2010 
  3  


Было нашла а потом вновь закрыла окно, которое вы вставили внизу. Какими клавишами оно вызывается или где? Спс
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37258057
Cursky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikCursky,

А вот эти кавычки тоже (насколько понимаю) не нужны?

strSQL = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
& strField1 & "]" & strOperator1 & " ' " & strCriterion1 & " ' and [" _
& strField2 & "]" & strOperator2 & "" & strCriterion2 & " and [" _
& strField3 & "]" & strOperator3 & "" & strCriterion3 & ""
Все равно выдает :
число содержит синтаксическую ошибку в выражении запроса
И еще вопрос-это я считала количество записей, а как вот эту сумму, что выделена красным в Книге4 подтягивать?
Та шо ж такое, ну? Вот горе мне с вами. То были нужные кавычки, не надо их удалять.
Чтобы вычислить сумму, вместо
Код: plaintext
Count([имя поля])
напишите
Код: plaintext
Sum([имя поля])
Чтобы увидеть Immediate Window нажмите Ctrl + G
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37258755
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,

Спасибо за кавычки :) Не знаю как бы и жила без Вас.
К сожелению выдает все ту же ошибку(((
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259582
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky, СПАСИБО БОЛЬШОЕ
Ха-ха-ха получилось
Только вот не могу понять как вот красную часть написать для strSQL2.
Дело в том, что у меня либо strSQL1 возвращает либо strSQL2.
А когда пишу и то и другое, то пишет: Операция не допускается, оесли обект открыт 3705 ошибка

Код: 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.
 
       strSQL1 = "SELECT Count([" & strField1 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & "'Casco' and [" _
        & strField2 & "]" & strOperator2 & " #3/5/2009# and [" _
        & strField3 & "]" & strOperator3 & "#1/2/2010#"
         
        strSQL2 = "SELECT Sum([" & strField4 & "]) FROM [Лист3$A3:L1000] " & "WHERE [" _
        & strField1 & "]" & strOperator1 & "'Casco' and [" _
        & strField2 & "]" & strOperator2 & " #3/5/2009# and [" _
        & strField3 & "]" & strOperator3 & "#1/2/2010#"

    rst.Open strSQL1, cnn
    x1 = rst.Fields( 0 )
 
    Debug.Print strSQL1
    Debug.Print x1
     
    rst.Close
    cnn.Close
  
    Set rst = Nothing
    Set cnn = Nothing

End Sub

  
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259845
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cursky,
И это получилось. Просто две фунции тест написала ( test1 и test 2)
Теберь мыслю более широко. Как сделать так, чтобы Casco и другие критерии задавались не в коде, а в листе 4 Книги 3. Что бы не лезть каждый раз. И можно было протянуть и соотвественно брались даты с листка и виды страхования и вставлялись в мою пользовательскую функцию...
Буду очень благодарна
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37259991
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikТеберь мыслю более широко. Как сделать так, чтобы Casco и другие критерии задавались не в коде, а в листе 4 Книги 3. Что бы не лезть каждый раз.
Как всегда, это уже обсуждалось и не раз...
Разберите пример.
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 2 из 4
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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