powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос с LIKE в VBA (EXCEL)
25 сообщений из 27, страница 1 из 2
Запрос с LIKE в VBA (EXCEL)
    #34610353
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем здрасте!

Мне необходимо использовать оператор LIKE в запросе к DBF файлу.
К данным подрубаюсь через ADODB.Connection. Поле NBSNEW - цифирное.

Код: plaintext
1.
TextSQL = "select nbsnew from table where nbsnew like (" & CStr( 702 ) & ") "

При таком раскладе выборка возвращается пустой, ибо lenght(nbsnew)=5.
Как тока начинаю подставлять символа ?%* прога валится "RunTime Error / Automation error"

Что делать?
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610418
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы пытаетесь применить текстовый оператор LIKE к цифровому полю?
объясните что вы хотите получить в конечном итоге

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610420
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй убрать скобки, и если у тебя поле цифирьное то может CStr тоже не нужно???

TextSQL = "select nbsnew from table where nbsnew like """ & 702 & """ "

Или наоборот преобразовать твое поле в строку
TextSQL = "select Cstr(nbsnew) from table where nbsnew like """ & CStr(702) & """ "


С уважением, Николай.
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610433
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotвы пытаетесь применить текстовый оператор LIKE к цифровому полю?
объясните что вы хотите получить в конечном итоге

I Have Nine Lives You Have One Only
THINK!

я хочу получить выборку по следующей маске - 702??
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610455
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда так
TextSQL = "select Cstr(nbsnew) from table where nbsnew like ""*" & CStr(702) & "*"" "

С уважением, Николай.
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610464
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"select nbsnew from table where nbsnew like '" & 702 & "%'"
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610475
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjc
TextSQL = "select nbsnew from table where nbsnew like """ & 702 & """ "

не прокатило - таже ошибка. Если вместо """ & 702 & """ использовать " & 702 & ", то работает, но ничего не отбирает. Если указать явно " & 70201 & ", то отбирает

gjghjc
TextSQL = "select Cstr(nbsnew) from table where nbsnew like """ & CStr(702) & """ "

тожа мимо :(
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610487
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcТогда так
TextSQL = "select Cstr(nbsnew) from table where nbsnew like ""*" & CStr(702) & "*"" "

С уважением, Николай.

мимо! не работат. Таже ошибка
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610505
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIKO"select nbsnew from table where nbsnew like '" & 702 & "%'"

увы...
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610518
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот строка подключения. Может это чтонить вам скажет.
Код: plaintext
1.
ConnectionString = "Provider=MSDASQL.1;Persist Security Info=True;Data Source = ôàéëû dBASE;Initial Catalog=" & PathMod
ConnectionPRB.Open ConnectionString
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610519
Фотография gjghjc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TextSQL = "select Cstr(nbsnew) from table where CStr(nbsnew) like ""*" & CStr(702) & "*"" "

С уважением, Николай.
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610539
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gjghjcTextSQL = "select Cstr(nbsnew) from table where CStr(nbsnew) like ""*" & CStr(702) & "*"" "

к сожалению, тожа неработат
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610554
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
TextSQL = "select nbsnew from table where nbsnew like (" & CStr( 70201 ) & ") "

Вот этот вариант работает, но мне нужно отбирать не тока 70201, но и 70202, 70203 и пр.
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610566
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу ошибаться с синтаксисом (работаю с SQL сервером)
но можно сделать так:
1) использовать деление
Код: plaintext
TextSQL = "select nbsnew from table where nbsnew/100 = " & CStr( 702 ) & " "
2) преобразовать в текст
Код: plaintext
TextSQL = "select nbsnew from table where CStr(nbsnew) Like '" & CStr( 702 ) & "*' "
обратить внимание на апострофы и ф-цию перевода числа в строку (возможно пишется не так)

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610597
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotмогу ошибаться с синтаксисом (работаю с SQL сервером)
но можно сделать так:
1) использовать деление
Код: plaintext
TextSQL = "select nbsnew from table where nbsnew/100 = " & CStr( 702 ) & " "
2) преобразовать в текст
Код: plaintext
TextSQL = "select nbsnew from table where CStr(nbsnew) Like '" & CStr( 702 ) & "*' "
обратить внимание на апострофы и ф-цию перевода числа в строку (возможно пишется не так)

I Have Nine Lives You Have One Only
THINK!

Ура!!!!!!!!!!!!!!

Вот пральный вариант

Код: plaintext
'" & CStr(702) & "%'

Спасибо за апострофы
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #34610610
joe black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю всех за помощь...!!!

Bar closed
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запрос с LIKE в VBA (EXCEL)
    #37661299
Marchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
использую даный запрос в Excel 2010. В аксесе 2010 данный код отрабатывается на ура. в экселе не хочет работать условие [OLD$].Название Like 'ККО*'

Код: vbnet
1.
2.
3.
4.
strSQL = "SELECT '' AS Статус, 'Банкомат' AS Устройство, [OLD$].Подразделение, [OLD$].Адрес, [OLD$].Номер, 
'' AS [Дата 1-й загрузки], '' AS [ЛимитА], [OLD$].Название  FROM [OLD$] INNER JOIN [NEW$] ON ([OLD$].[Серийный номер] = 
[NEW$].[Серийный номер]) AND ([OLD$].Адрес = [NEW$].Адрес) WHERE ((([OLD$].Выдача)='Да') AND [OLD$].Название Like 'ККО*')
 ORDER BY [OLD$].Подразделение, [OLD$].Адрес, [OLD$].Номер"



Запрос должен отбирать если в названии слово начинается с "ККО" . Но почему-то даже просто отбор не работает :(

(а по хорошему код был такой и нужно так, в условие засунуть
Код: vbnet
1.
......агрузки], IIf([NEW$].[Название] Like 'ККО*',45,270) AS [ЛимитА] FROM ....

.
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37661306
Marchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот при помощи чего я обрабатываю SQL запрос

Код: 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.
Private Sub GenerateReportSQL(strSQL As String)
Dim ws As Worksheet
Dim qry As QueryTable
Dim strPath As String
Dim strName As String
Dim strCon As String
'Dim strSQL As String
Dim strPosition As String
Dim strRng As String
Dim tm As Double

    With ThisWorkbook
        On Error Resume Next
        Set ws = .Worksheets("Отчет")
        On Error GoTo 0
        If ws Is Nothing Then Set ws = .Worksheets.Add(after:=.Worksheets(.Worksheets.Count))
        
        'tm = Timer
        
        strName = .FullName
        strPath = .Path
        strRng = "A2:U"
        strCon = "ODBC;DSN=Excel Files;" & _
                 "DBQ=" & strName & ";" & _
                 "DefaultDir=" & strPath & ";" & _
                 "DriverId=1046;" & _
                 "MaxBufferSize=2048;" & _
                 "Page Timeout=5;"
        
        With ws
            If Val(Application.Version) > 11 Then DeleteConnections_12
            .Cells.Clear
            .Name = "Отчет"
            Set qry = .QueryTables.Add(strCon, .Range("A1"), strSQL)
            With qry
                .BackgroundQuery = False
                .Refresh
                .Delete
            End With
        End With
    End With
    'MsgBox Format((Timer - tm) * 1000, "00.0000")
    'ws.Activate
End Sub
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37661406
Marchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решил данную проблему.

Вместо * поставил %

Код: vbnet
1.
.....загрузки], IIf([NEW$].[Название] Like 'ККО%',45,270) AS [ЛимитА.....
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37661505
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем использовать именно Like ? Можно ведь и:
Код: vbnet
1.
.....загрузки], IIf(Left$([NEW$].[Название],3)='ККО',45,270) AS [ЛимитА.....
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37661622
Marchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

должны отбираться строки которые начинаются (содержатся) со слова ККО .
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37661669
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marchukкоторые начинаются (содержатся)если "начинаются" - то AndreTM предложил именно это. А если "содержатся", то процент надо ставить с двух сторон
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37662374
Marchuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProMarchukкоторые начинаются (содержатся)если "начинаются" - то AndreTM предложил именно это. А если "содержатся", то процент надо ставить с двух сторон
Да точно :) не сразу заметил оператор Left :)
Как я понял Excel не понимает * в SQL запросах, вместо них надо писать %

Всем спасибо. Я свой вопрос решил :)
...
Рейтинг: 0 / 0
Запрос с LIKE в VBA (EXCEL)
    #37662378
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MarchukКак я понял Excel не понимает * в SQL запросах, вместо них надо писать %дело не в экселе, а в движке, который интерпретирует SQL-запрос. Экселю пофиг, для него это просто строка
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запрос с LIKE в VBA (EXCEL)
    #39771749
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в продолжение вопроса прошу подсказать что не так делаю, вроде все просто должно быть, специально еще раз посмотрел примеры здесь на форуме и на MS Docs , но "то ли лыжи не едут, то ли я...."
Для примера есть таблица, надо отобрать все что заканчивается на "ква", соответственно like "%ква" или like '%ква'

ТАБЛИЦА ГОРОДА
Код ГородНазвание
1 мос ква
2 мор ква
3 морской
4 ваш ква
5 риш ква

делаю запрос
Код: vbnet
1.
2.
3.
SELECT *
FROM [города]
WHERE [ГородНазвание] Like '%ква';


благодарствую за подсказку
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запрос с LIKE в VBA (EXCEL)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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