Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Прошу прощения, я не программист, но второй день мучаюсь с проблемой, решения которой, в инете, к сожалению, не нашел... Есть простой запрос, к таблице, созданный в Access, одно из условий отбора выглядит в конструкторе так: like"*"&[]&"*", ну, что бы можно было отобразить все, при надобности... Так же, имеется некоторый текст, который сбрасывает результаты выполнения запроса на лист екселя... ну, так надо... Так вот, если в конструкторе просто [], то все работает, а если с Like, то рекордсет возвращается пустой... перепробовал почти все, до чего дотянулся в инете... ничего не выходит... В чем засада? Или, хотя бы, где искать? sub zapros() Dim cnn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rst As New ADODB.Recordset Dim rng As Excel.Range Dim B_date As Date, F_date As Date Dim qSQL_READ As String B_date = Cells(x, y).Value F_date = Cells(x1, y1).Value B = Range("Z").Value qSQL_READ = Range("Path_in_DB_Read").Value cnn.ConnectionString = qSQL_READ: cnn.Open Set cmd.ActiveConnection = cnn: cmd.CommandText = "[ZAPROS]" Set rst = cmd.Execute(, Array(Format(B_date, "yyyy.mm.dd"), Format(F_date, "yyyy.mm.dd"), B), adCmdStoredProc) 'MsgBox rst.GetString Set rng = Worksheets("List").Cells(x, y) rng.CopyFromRecordset rst Set cmd = Nothing rst.Close: Set rst = Nothing cnn.Close: Set cnn = Nothing End Sub Может, кто сталкивался, или знает как горю помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:09 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
используйте тэги, плиз, невозможно же читать Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:13 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Finnaодно из условий отбора выглядит в конструкторе так: like"*"&[]&"*", Так вот, если в конструкторе просто [], то все работает, а если с Like, А можно SQL-текст запроса, а то как-то не очень понятно (используйте тэги Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:19 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
hocker.Pro, Напиши запрос полностью в VB В VB другие символы подстановки: % - любое к-во символов _ - один символ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:22 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
йцукен12Напиши запрос полностью в VB В VB другие символы подстановки: % - любое к-во символов _ - один символ Там могут использоваться специфические (например пользовательские) функции Ждем от автора текст запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:24 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, кто мешает написать вместо строки: Set cmd.ActiveConnection = cnn: cmd.CommandText = "[ZAPROS]" следующую строку: Set cmd.ActiveConnection = cnn cmd.CommandText = "SELECT * FROM [ZAPROS] WHERE Field1 Like %'" & NeedParam & "'%" А Lik'и из запросов и из подзапросов удалить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:33 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
йцукен12Shocker.Pro, кто мешает написать вместо строки: Set cmd.ActiveConnection = cnn: cmd.CommandText = "[ZAPROS]" следующую строку: Set cmd.ActiveConnection = cnn cmd.CommandText = "SELECT * FROM [ZAPROS] WHERE Field1 Like %'" & NeedParam & "'%" А Lik'и из запросов и из подзапросов удалить? А если этот Like находится в невозвращаемых полях? Или в части формулы с невозвращаемыми полями? Или в JOIN-е. Чего гадать, подождем автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 21:36 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2010, 21:19 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Finna, У вас не определена переменная B ( Используйте Option Explicit ) Соответственно, происходят всякие неявные преобразования, поэтому вопрос, чему равно: Range("Z").Value и чему равно: CStr(Range("Z").Value) (ответ не придумывайте, а возьмите из Immedite Window) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2010, 21:34 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Раз вы отвечаете раз в сутки, тогда еще на всякий случай третий потенциальный вопрос: Какой тип данных поля "Проводка.Поле22" и какие данные там есть, подходящие под ваш Like? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2010, 23:51 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Через полгода, год, ТС вернется к полям таблицы и как же долго он будет гадать, что обозначает "Поле22" в таблице Проводка? А ведь если есть "Поле22", то наверное есть не менее вразумительные "Поле11" и "Поле33" или что-нибудь еще в этом духе. Бессмертный лозунг на марше: создадим себе трудности и героически их преодолеем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2010, 00:29 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
mds_worldЧерез полгода, год, ТС вернется к полям таблицы и как же долго он будет гадать, что обозначает "Поле22" в таблице Проводка? А ведь если есть "Поле22", то наверное есть не менее вразумительные "Поле11" и "Поле33" или что-нибудь еще в этом духе. Бессмертный лозунг на марше: создадим себе трудности и героически их преодолеем. Все мы были молодыми и глупыми Хоть до такого именования полей я не опускался, но умудрился сделать хранилище пользовательских настроек, где переменные не именовались, а нумеровались... это проходит с опытом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2010, 00:34 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Мне, право же, крайне неловко за свои "корявости", но база появилась несколько раньше, чем я начал читать мануалы и хелпы... Сначала был ексель, который макросом построчно, выводил в отчет с соседнего листа данные по ВПР и СУММЕСЛИ, после третьей тысячи строк, стало небыстро... я потратил примерно седан, на изготовление спец.проги у серъезной фирмы, но в результате то, что мне было нужно, то, что я заказывал, то, что понял програмист, и то, что получилось, оказались вещами сильно далекими друг от друга... в филосовском смысле :) И тогда я узнал слово рекордсет... Кнопочкой в аксессе ексельная табличка бала перетянута в базу, а названия полей там были такие, что аксесс переименовал все сам... и правильно, наверное... При обработке рекордсета, я использовал номера полей, названия меня не занимали... И, с тех пор, время от времени, я стал узнавать новые слова... По вопросам: 1. Тип данных в поле 22 и в ячейке переменной - текст. Кроме того, без Like то все работает... и если вместо "value" при определении переменной B, указать "text" картина, не меняется, если даже указать в тексте SUB непосредственно сам текст в которым надо сравнивать поле, то все тоже самое - рекордсет, если в запросе like, возвращается пустой, без like все как положено... 2. Действительно, поле 22 почти никогда не возвращается... 3. Shocker.ProFinna, У вас не определена переменная B ( Используйте Option Explicit ) Соответственно, происходят всякие неявные преобразования, поэтому вопрос, чему равно: Range("Z").Value и чему равно: CStr(Range("Z").Value) (ответ не придумывайте, а возьмите из Immedite Window) А как определить B - в смысле какая переменная - Variant? Я попробовал - ничего не поменялось... Я прошу прощения, а как ответ туда положить, в это самое Immedite Window? Приношу еще раз свои извинения всем. Поверьте - я не тупой, просто не моя, немножко, область... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2010, 12:21 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Finna1. Тип данных в поле 22 и в ячейке переменной - текст. Кроме того, без Like то все работает... и если вместо "value" при определении переменной B, указать "text" картина, не меняется, если даже указать в тексте SUB непосредственно сам текст в которым надо сравнивать поле, то все тоже самое - рекордсет, если в запросе like, возвращается пустой, без like все как положено... Очень хотелось бы понять, что в вашем понимании "без Like". Убираете, заменяете на "=" или что? Что будет, если вы просто напишете B="нужный текст" (не беря его из ячейки)? FinnaА как определить B - в смысле какая переменная - Variant? Я попробовал - ничего не поменялось... Нет. В базу вы же передаете текст, вот и объявляйте Dim B As String FinnaЯ прошу прощения, а как ответ туда положить, в это самое Immedite Window? Приношу еще раз свои извинения всем. Поверьте - я не тупой, просто не моя, немножко, область... :) Жмете Ctrl-G Появляется Immediate Window. Это окно немедленного выполнения команд. набираете в нем ?Range("Z").Value и жмете Энтер. В окне печатается значение этого выражения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2010, 20:03 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЧто будет, если вы просто напишете B="нужный текст" (не беря его из ячейки)? Кстати, а попробуйте B="*" и тут вообще сразу будет понятно, проблема в исходных данных или в передаче параметров в аксесс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2010, 20:16 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Код: plaintext 1. 2. 3. Без like - это когда в конструкторе аксесса, вместо Код: plaintext Код: plaintext При явном объявлении переменной - картина не меняется - Код: plaintext Код: plaintext Код: plaintext Код: plaintext А если набираешь текст рУками в окошке запроса параметра, непосредственно, в аксессе при отработке запроса - все работает с Like "*"&[]&"*" , как положено, даже по неполностью набранному тексту... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 02:01 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
про Creatent погорячился - "Creatent" конечно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 02:15 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Finna Без like - это когда в конструкторе аксесса, вместо Код: plaintext Код: plaintext Что это значит? Во что превращается SQL-запрос? Поле22=[] или что-то еще? B="*" пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 09:35 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Код: plaintext Код: plaintext B="*" - пробовал - рекордсет пустой, причем и с like и без... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 10:20 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
А, вообще, ситуация воспроизводится? А то, может, у меня чего то в консерватории надо поправить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 10:48 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
FinnaА, вообще, ситуация воспроизводится? А то, может, у меня чего то в консерватории надо поправить? :) воспроизводится... ковыряю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:06 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
В общем так. Меняете в сохраненном в аксессе запросе * на % Запрос прекращает работать в Аксессе, но начинает работать через ADO Синтаксис чьего ядра выполняется в случае запроса через ADO - непонятно, но похоже, запросы из аксесса и из ADO выполняют разные ядра. Можно попробовать подключение через ODBC или через DAO или RDO. Поможет ли это - неясно. Но, кажется, когда я работал с аксессовскими файлами через DAO, я использовал именно звездочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:21 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Вариант - передавать звездочки "снаружи" То есть в сохраненном запросе написать Код: plaintext В аксессовких вызовах добавить к параметру звездочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:25 |
|
||
|
как выполнить запрос в Access c условием like"*"&[Par]&"*" из VB
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Огромное спасибо! Нарыл, что этот провайдер попросту не поддерживает like. Совсем... Ну, то есть, никак... Зато! Работают все предложенные Shocker.Pro конструкции! Идеальный, в моем случае вариант: Код: plaintext Код: plaintext Код: plaintext Более того, этому топику не суждено было бы родиться, поставь я при своих "ковыряниях" в ячейку переменной, B, для отработки запроса "по всем" не "*" , а - "%"... Еще раз немерянная благодарность Shocker.Pro, за поддержку, и за готовность поделиться знанием и опытом! Снимаю шляпу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 13:47 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36560821&tid=2159978]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 385ms |

| 0 / 0 |
