Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает метод Find / 25 сообщений из 30, страница 1 из 2
12.09.2018, 09:26
    #39701262
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Вот такой код, на методе финд выдает ошибку, текстовое поле, че ему надо?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
   While Not TNakl.EOF
     StrokNameTovar = TNakl.Fields("ntov")
     DateNakl = TNakl.Fields("dt")
     PozZapOld = 1
     While PozZapOld <> 0
        PozZap = InStr(PozZapOld, StrokNameTovar, ",")
        'MsgBox PozZap
        If PozZap = 0 Then
          StrokTovar = Trim(Mid(StrokNameTovar, PozZapOld, Len(StrokNameTovar) - PozZapOld + 1))
          PozZapOld = 0
        Else
          StrokTovar = Trim(Mid(StrokNameTovar, PozZapOld, PozZap - PozZapOld))
          PozZapOld = PozZap + 1
        End If
        'MsgBox StrokTovar
        TTov.MoveFirst
        TTov.Find ("ntov=" & Chr(34) & StrokTovar & Chr(34))
        MsgBox TTov.Fields("tov")
     Wend
     TNakl.MoveNext
   Wend
...
Рейтинг: 0 / 0
12.09.2018, 09:43
    #39701269
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Что есть TTov? DAO.Recordset? нет у них такого метода...
...
Рейтинг: 0 / 0
12.09.2018, 09:46
    #39701276
Не работает метод Find
Текст ошибки?
Это точно ADODB.Recordset? В DAO нет метода Find.
Что у вас в StrokTovar? Как выглядит условие поиска:
...
Рейтинг: 0 / 0
12.09.2018, 09:47
    #39701279
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
тип ADODB.Recordset в другой базе работает. Akina,
...
Рейтинг: 0 / 0
12.09.2018, 09:49
    #39701283
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
у меня программа сейчас выдает ntov="Товар 1" строку для поиска
...
Рейтинг: 0 / 0
12.09.2018, 10:19
    #39701296
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Замените в строке двойные кавычки на одинарные.
...
Рейтинг: 0 / 0
12.09.2018, 10:47
    #39701319
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
run time error 3001 это я вообще не могу понять с чем связано Akina,
...
Рейтинг: 0 / 0
12.09.2018, 11:11
    #39701331
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipod, попробуйте добавить проверку
Код: vbnet
1.
If not TTov.nomatch then MsgBox TTov.Fields("tov")
...
Рейтинг: 0 / 0
12.09.2018, 12:31
    #39701391
Не работает метод Find
antipodrun time error 3001 это я вообще не могу понять с чем связано Akina,
В окне отладки?AccessError(3001)
Ошибочный аргумент. Поле ntov точно текстовое?
Покажите, как вы открываете TTov. Если вы указываете имя родной таблицы и не указываете тип рекордсета, то попробуйте или заменить имя таблицы на "SELECT * FROM [Имя таблицы]", или укажите тип adOpenKeyset (или то и другое).
...
Рейтинг: 0 / 0
12.09.2018, 13:06
    #39701418
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Эта строка тоже вызывает туже ошибку alecko,
Открываю так, проста таблица, нужна только для поиска значений.
Код: vbnet
1.
2.
   Set TTov = New ADODB.Recordset
   TTov.Open "Tov", CurrentProject.Connection



попытка открыть как SELECT Tov.* FROM Tov; ничего не дала, со свойствами не понял.
...
Рейтинг: 0 / 0
12.09.2018, 13:24
    #39701434
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
У меня похоже что то с аксесом либо с библиотеками, почему то аксес не предлагает после набора имени объектной переменно и ввода точки список свойств и методов не появляется, разве это нормально?
...
Рейтинг: 0 / 0
12.09.2018, 13:36
    #39701444
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Обьявленной переменной?
...
Рейтинг: 0 / 0
12.09.2018, 13:39
    #39701448
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
ой, исправился Serg197311,
помогите разобраться
эта строка туже ошибку дает
Код: vbnet
1.
If not TTov.nomatch then MsgBox TTov.Fields("tov")
...
Рейтинг: 0 / 0
12.09.2018, 14:14
    #39701470
Не работает метод Find
antipodэта строка туже ошибку дает
Код: vbnet
1.
If not TTov.nomatch then MsgBox TTov.Fields("tov")

nomatch, это в DAO. В ADO надо проверять EOF при поиске вперед (и BOF при обратном поиске).
antipodУ меня похоже что то с аксесом либо с библиотеками, почему то аксес не предлагает после набора имени объектной переменно и ввода точки список свойств и методов не появляется, разве это нормально? Какая версия ADO у вас в референсах?
В заголовке модуля Option Explicit указано?
...
Рейтинг: 0 / 0
12.09.2018, 14:23
    #39701479
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Это форма указано только по умолчанию Option Compare Database
подцеплены библиотеки ADO Ext 6.0 и Microsoft ActivX Data 2.0 Кривцов Анатолий,
...
Рейтинг: 0 / 0
12.09.2018, 17:46
    #39701683
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Почемуто не работает только поиск по текстовому полю, вставлял поиск по числовому полю - все работает, все текстовые константы выдают ошибку.
...
Рейтинг: 0 / 0
12.09.2018, 18:21
    #39701699
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Что то прояснилось, неработает поиск кирилицы. У меня в таблицах русские значения. И как с эттм бороться?
...
Рейтинг: 0 / 0
12.09.2018, 20:50
    #39701733
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipod
Код: vbnet
1.
TTov.Open "Tov", CurrentProject.Connection

так набор для поиска открывать нельзя - этот набор только вперёд и чтение.

antipodПочемуто не работает только поиск по текстовому полю, вставлял поиск по числовому полю - все работает, все текстовые константы выдают ошибку.тут много нюансов - от названия поля (заключай превентивно все поля в квадратные скобки) до правильной расстановки кавычек (одинарных, двойных, их наличие в тексте и прочее).
Что такое "текстовые константы" в твоём понимании?
...
Рейтинг: 0 / 0
13.09.2018, 06:55
    #39701794
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
Панург, мне и нужно только для чтения и вперед
текстовые константы это например "ntov=55" или "ntov=byjf"? так все работает а если "ntov=коробка" - ошибка
...
Рейтинг: 0 / 0
13.09.2018, 07:15
    #39701799
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipodмне и нужно только для чтения и впередДа нет, из твоего кода это не следует
antipod
Код: vbnet
1.
TTov.MoveFirst'<-Тут будет ошибка


antipod например "ntov=55" или "ntov=byjf"? так все работает а если "ntov=коробка" - ошибкаИ опять неправда. Оба эти случая работать не должны.
Должно быть так для текстовых полей -> "ntov='byjf'" и "ntov='коробка'"
Можно превентивно (на случай если не всегда именование полей следует правилам Access) всегда делать так -> "[ntov]='byjf'" и "[ntov]='коробка'"
...
Рейтинг: 0 / 0
13.09.2018, 07:53
    #39701808
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
представте себе все работает, проверил код на константах одно значение 55 находит, в принципе я уже сделал код, вместо Find, MoveNext и последовательное сравнение значений, так все работает. Панург,
...
Рейтинг: 0 / 0
13.09.2018, 08:04
    #39701814
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipodпредставте себе все работаетне представляю...
...
Рейтинг: 0 / 0
13.09.2018, 08:14
    #39701817
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipodВот такой код, на методе финд выдает ошибку, текстовое поле, че ему надо?
antipod
Код: vbnet
1.
TTov.Find ("ntov=" & Chr(34) & StrokTovar & Chr(34))

Скобки убери тут.

Chr(34) - итог этой функции двойные кавычки
...
Рейтинг: 0 / 0
13.09.2018, 08:17
    #39701818
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
скобки убрал, все равно ошибка. Панург,
...
Рейтинг: 0 / 0
13.09.2018, 08:33
    #39701826
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает метод Find
antipodскобки убрал, все равно ошибка.
Код: 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.
54.
Dim StrokNameTovar, StrokTovar As String
   Dim DateNakl As Date
   Dim PozZap, PozZapOld As Integer
   Dim RecDv As ADODB.Recordset
   Dim TNakl As ADODB.Recordset
   Dim TTov As ADODB.Recordset
   
   'Для тестового режима удаление пустых записей в D2
'   DoCmd.OpenQuery "DelDv", acNormal, acEdit
   CurrentProject.Connection.Execute "DelDv"
   
   'открытие таблицы Nakl
   Set TNakl = New ADODB.Recordset
   TNakl.Open "Nakl", CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdTable
   'открытие таблицы Tov
   Set TTov = New ADODB.Recordset
   TTov.Open "Tov", CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdTable
   
   'Открытие таблицы DV для редактирования
   Set RecDv = New ADODB.Recordset
   RecDv.Open "Dv", CurrentProject.Connection, adOpenDynamic, adLockOptimistic, adCmdTable
   
   While Not TNakl.EOF
     StrokNameTovar = TNakl.Fields("ntov")
     DateNakl = TNakl.Fields("dt")
     PozZapOld = 1
     While PozZapOld <> 0
        PozZap = InStr(PozZapOld, StrokNameTovar, ",")
        'MsgBox PozZap
        If PozZap = 0 Then
          StrokTovar = Trim(Mid(StrokNameTovar, PozZapOld, Len(StrokNameTovar) - PozZapOld + 1))
          PozZapOld = 0
        Else
          StrokTovar = Trim(Mid(StrokNameTovar, PozZapOld, PozZap - PozZapOld))
          PozZapOld = PozZap + 1
        End If
        'MsgBox StrokTovar
'        TTov.MoveFirst
        'вот на следующей строчке вылетает
Debug.Print "[ntov]=" & Chr(34) & StrokTovar & Chr(34) 'ЧТО НАПЕЧАТАЕТСЯ В ОКНЕ IMMEDIATE?
        TTov.Find "[ntov]=" & Chr(34) & StrokTovar & Chr(34), Start:=1
        'MsgBox TTov.Fields("tov")
            If Not TTov.EOF Then
                RecDv.AddNew
                RecDv.Fields("tov").Value = TTov.Fields("tov")
                RecDv.Fields("d1").Value = DateNakl
                RecDv.Update
            End If
     Wend
     TNakl.MoveNext
   Wend
   If Not TNakl Is Nothing Then If TNakl.State = 1 Then TNakl.Close
   If Not TTov Is Nothing Then If TTov.State = 1 Then TTov.Close
   If Not RecDv Is Nothing Then If RecDv.State = 1 Then RecDv.Close

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


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