powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
25 сообщений из 88, страница 3 из 4
Фильтрация в Vba
    #37645711
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Sub test1()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    Set rst = New ADODB.Recordset
    Dim strSQL1 As String

    Dim strCriterion1 As String

 
    Dim strField1 As String
    Dim strField2 As String

    
    Dim strRange As String
    Dim strPath As String
    
    Dim strOperator1 As String

    Dim x1 As Integer
    '--------------------------------------------------------------------------------------------------'
    strOperator1 = "="

    
    strField1 = "Сумма"
    strField2 = "Счет Б"
    strCriterion1 = "29096010605901"
    strPath = "C:\Documents and Settings\vgorokh\Рабочий стол\АВАНС\аванс.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
    
     'strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" "& strOperator1 & " "& strCriterion1 &"
        
        
strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"
        
    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



Подскажите можно ли писать в запросе strCriterion1?
У меня выводит синтаксическую ошибку в критерии1.
Как написать функцию так, что бы критерий я могла задавать на листе а не в коде?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645834
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
убрать кавычки вокруг нее
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645838
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proубрать кавычки вокруг нееи ведь в этой же строке используется еще три значения других переменных. Неужели так сложно увидеть? Ведь даже цветом другим выделено.

Внутри кавычек находится ТЕКСТ, который будет передан без изменений.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645846
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

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

не вижу :(
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645891
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikА можно пример

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim Test As String
Dim K As String
Test = "qqq"

K = Test     'вариант 1
K = "Test"   'вариант 2

Вы понимаете разницу между первым и вторым вариантом и что в каждом случает окажется в переменной K ?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645919
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом варианте будет строка qqq
Во втором варианте будет строка Test
Это обе строки.


'вариант 1 К= "qqq"

'вариант 2 K = "Test"
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645922
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikВ первом варианте будет строка qqq
Во втором варианте будет строка Testзамечательно, а теперь смотрим сюда:
Код: vbnet
1.
strSQL1 = strOperator1 & "& strCriterion1 &"

и думаем по аналогии, что же окажется в переменной strSQL1
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645943
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
я бы в этой записи убрала

strSQL1 = strOperator1 & "& strCriterion1 &"
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37645981
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikя бы в этой записи убралам-да. Я уж попробую добить урок до конца
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim Test As String
Dim K As String
Test = "qqq"

K = Test            'вариант 1
K = "Test"          'вариант 2
K = Test & Test     'вариант 3
K = Test & "Test"   'вариант 4

что по вашему будет в переменной K в варианте 3 и 4?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646100
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

qqqqqq 'вариант 3

qqqTest 'вариант 4
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646114
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Shocker.Proм-да. Я уж попробую добить урок до конца

спасибо большоЕ)))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646130
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikспасибо большоЕтак что, ясно, в чем ошибка?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646141
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

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

раскройте уже тайну))
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646145
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
strSQL1 = strOperator1 & "& strCriterion1 &"

Что будет в этом случае в переменной strSQL1? А что должно быть?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646147
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> не-а )))

:)

Добавь после этого
Код: vbnet
1.
2.
strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"


эту строку:
Код: vbnet
1.
MsgBox strSQL1

и посмотри что получяется

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646162
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Ага спасибо за подсказку

strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
& strField2 & "]" & strOperator1 & "" & strCriterion1 & ""
однако зараза пишет:
Отсутствует одно или несколько требуемых параметров
2. еще такой вопросик. а если мне нужно что бы менялся мой критерия, то я должна просто его закоментировать, а в параметрах функции указать.
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646186
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> однако зараза пишет:
> Отсутствует одно или несколько требуемых параметров

Покажи и нам результат
Код: vbnet
1.
MsgBox strSQL1



> 2. еще такой вопросик. а если мне нужно что бы менялся мой критерия, то я должна просто его закоментировать, а в
> параметрах функции указать.

Вот этого я не понял. В какой функции?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646222
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,


1.приложила файлик

2. Хочу пользовательскую функцию которая считала бы сумму по кретерию, который есть на листе (таких критериев целый столбец)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Function Avans(strPath As String, strField1 As String, strField2 As String, strOperator1 As String, strCriterion1 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 strSQL1 As String
                                                                            
    'cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";" & "Extended Properties=""Excel 9.0;HDR=Yes;IMEX=1"""
   
    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
   
   
     strSQL1 = "SELECT Sum([" & strField1 & "]) FROM [зачислено$A3:bu10000] " & "WHERE [" _
        & strField2 & "]" & strOperator1 & "& strCriterion1 &"
 
    rst.Open strSQL1, cnn
   
    Avans = rst.Fields(0)
    rst.Close
    cnn.Close

    Set rst = Nothing
    Set cnn = Nothing
End Function
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646236
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
вот еще перый мсжбокс
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646241
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> 1.приложила файлик

МаладЭц! Картинка в вордовском файле :) И что не понятно в картинке? У тебя закоментировано заполнение переменной
strCriterion1 и поэтому у тебя запрос получается вида:
Код: sql
1.
select * from tbl where field1 = 

Естетсвенно тебе
скажут, что не могЁм сравнить field1 с непонятно чем.

>
> 2. Хочу пользовательскую функцию которая считала бы сумму по кретерию, который есть на листе (таких критериев
> целый столбец)

Ну типа того. Я-бы Integer заменил на Double, а так вроде нормально. За исключением твоей изначальной проблемы, с
которой ты и написала сюда :)

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646246
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
и что номер счета мне текстом делать?
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646252
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

так и так у меня тип Критярия стоит строка
...
Рейтинг: 0 / 0
Фильтрация в Vba
    #37646266
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: VikVikVik
> Игорь Горбонос,
> вот еще перый мсжбокс

Тэкс,
для получения текста сообщений можно воспользоватся комбинацией клавишь Ctrl+Shift+C
ИЛИ
дописываешь в нужном месте программы Debug.Print strSQL1, перед запуском нажимаешь Ctrl+G(появляется Immediate Window) и
после исполнения макроса копируешь из Immediate Window то что туда вывелось при помощи Debug.Print.
Так-же есть ещё варианты получения нужного текста, но это оставляю тебе на самоизучение :)
Ты главное не бойся и пробуй тыкать мышкой в разных окнах(в некоторых можно даже значения переменных поменять во время
отладки макроса) в неожиданных местах

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 3 из 4
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Фильтрация в Vba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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