Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос без указания отдельных переменных / 6 сообщений из 6, страница 1 из 1
01.02.2018, 11:05
    #39594744
anton6
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
Делаю базу


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub СозданиеТаблицы()
Dim connDB As Object
Set connDB = CreateObject("ADODB.Connection")
connDB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; data source=" & "G:\3\A.accdb"
connDB.Open
connDB.Execute = "CREATE TABLE RRR " & "(ID  COUNTER, r DATETIME, m TEXT, n TEXT,o TEXT, k TINYINT, s TEXT);"
connDB.Close
Set connDB = Nothing
End Sub



И заполняю ее
Потом хочу достать информацию


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub uu()
Dim tbl As Recordset
Dim dbs As DAO.Database
Set dbs = OpenDatabase("G:\3\A.accdb")
Range("F:L").ClearContents
SQLr = "SELECT ID, r, m, n,o,k,s FROM RRR WHERE o = '" & Sheets("Лист1").Cells(1, 1).Value & "' AND  ID= " & Sheets("Лист1").Cells(2, 1).Value & " "

Set tbl = dbs.OpenRecordset(SQLr)
Sheets("Лист1").Select
Cells(2, 6).CopyFromRecordset tbl
tbl.Close
Set tbl = Nothing
dbs.Close
Set dbs = Nothing
End Sub




cells 1.1 получается текстовое значение
cells 2.1 цифровое


Как прописать так, чтобы если вдруг не указав цифровое значение в cells 2.1, тем не менее код смог выполнился только используя значения cells 1.1

Вопрос связан с тем, что в самом запросе ( как я вижу решение) будет просто прописано и 4 критерия
А, скажем, на самом листе может быть указан только 2 из них, остальные будут отсутствовать, они не будут указаны
То, есть можно ли сам запрос сделать статичным в такой ситуации?
Потому что в этом конкретном примере я увидел, что так Excel VBA кидает ошибку...
Подскажите, пожалуйста, какие варианты решения вообщем могут быть.
...
Рейтинг: 0 / 0
01.02.2018, 11:24
    #39594767
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
Код: vbnet
1.
... "WHERE (o = '" & Sheets("Лист1").Cells(1, 1).Value & "' OR '" & Sheets("Лист1").Cells(1, 1).Value & " = '') AND  ID= " ...
...
Рейтинг: 0 / 0
01.02.2018, 11:26
    #39594769
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
Другой вариант - собирать динамически:

Код: vbnet
1.
2.
SQLr = "SELECT ID, r, m, n,o,k,s FROM RRR WHERE o = '" & Sheets("Лист1").Cells(1, 1).Value & "'"
IF Sheets("Лист1").Cells(2, 1).Value <> "" THEN SQLr = SQLr & " AND  ID= " & Sheets("Лист1").Cells(2, 1).Value & " "
...
Рейтинг: 0 / 0
01.02.2018, 12:33
    #39594828
anton6
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
Да, спасибо за предложение, но
Если там 4 - 7 переменных в ячейках с разной "степенью заполнения"
Где -то будет указано значение, где - то не будет. Скажем в 1.1 указано, в 2.1 - нет
Потом наоборот... и так далее...

То комбинаций для статического и динамического решения будет n в степени x
Думаю, здесь лучше будет идти через указание значений руками.
...
Рейтинг: 0 / 0
01.02.2018, 12:40
    #39594835
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
anton6То комбинаций для статического и динамического решения будет n в степени xБред.
Код: vbnet
1.
2.
3.
4.
5.
6.
strSQL = "SELECT * FROM xxx WHERE 1=1"
IF cell1.Value <> "" Then strSQL = strSQL & " AND num_f1 = " & cell1.Value
IF cell2.Value <> "" Then strSQL = strSQL & " AND str_f2 = '" & cell2.Value & "'"
' ...
IF cellN.Value <> "" Then strSQL = strSQL & " AND fN = " & cellN.Value
db.openrecordset strSQL
...
Рейтинг: 0 / 0
01.02.2018, 19:57
    #39595220
anton6
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос без указания отдельных переменных
Да, не видел этого решения

Куда мне...

Спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос без указания отдельных переменных / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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