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

Мне необходимо использовать оператор 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
21.06.2007, 12:42
    #34610418
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
вы пытаетесь применить текстовый оператор LIKE к цифровому полю?
объясните что вы хотите получить в конечном итоге

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

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

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


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

I Have Nine Lives You Have One Only
THINK!

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

С уважением, Николай.
...
Рейтинг: 0 / 0
21.06.2007, 12:49
    #34610464
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
"select nbsnew from table where nbsnew like '" & 702 & "%'"
...
Рейтинг: 0 / 0
21.06.2007, 12:51
    #34610475
joe black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
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
21.06.2007, 12:54
    #34610487
joe black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
gjghjcТогда так
TextSQL = "select Cstr(nbsnew) from table where nbsnew like ""*" & CStr(702) & "*"" "

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

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

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

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

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

Вот этот вариант работает, но мне нужно отбирать не тока 70201, но и 70202, 70203 и пр.
...
Рейтинг: 0 / 0
21.06.2007, 13:04
    #34610566
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
могу ошибаться с синтаксисом (работаю с 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
21.06.2007, 13:11
    #34610597
joe black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
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
21.06.2007, 13:14
    #34610610
joe black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
Благодарю всех за помощь...!!!

Bar closed
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.02.2012, 15:50
    #37661299
Marchuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
использую даный запрос в 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
14.02.2012, 15:52
    #37661306
Marchuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
вот при помощи чего я обрабатываю 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
14.02.2012, 16:38
    #37661406
Marchuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LIKE в VBA (EXCEL)
решил данную проблему.

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

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

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

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

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

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


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


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