powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает метод Find
25 сообщений из 30, страница 1 из 2
Не работает метод Find
    #39701262
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой код, на методе финд выдает ошибку, текстовое поле, че ему надо?

Код: 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
Не работает метод Find
    #39701269
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что есть TTov? DAO.Recordset? нет у них такого метода...
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701276
Текст ошибки?
Это точно ADODB.Recordset? В DAO нет метода Find.
Что у вас в StrokTovar? Как выглядит условие поиска:
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701279
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тип ADODB.Recordset в другой базе работает. Akina,
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701283
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня программа сейчас выдает ntov="Товар 1" строку для поиска
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701296
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замените в строке двойные кавычки на одинарные.
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701319
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
run time error 3001 это я вообще не могу понять с чем связано Akina,
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701331
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antipod, попробуйте добавить проверку
Код: vbnet
1.
If not TTov.nomatch then MsgBox TTov.Fields("tov")
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701391
antipodrun time error 3001 это я вообще не могу понять с чем связано Akina,
В окне отладки?AccessError(3001)
Ошибочный аргумент. Поле ntov точно текстовое?
Покажите, как вы открываете TTov. Если вы указываете имя родной таблицы и не указываете тип рекордсета, то попробуйте или заменить имя таблицы на "SELECT * FROM [Имя таблицы]", или укажите тип adOpenKeyset (или то и другое).
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701418
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта строка тоже вызывает туже ошибку alecko,
Открываю так, проста таблица, нужна только для поиска значений.
Код: vbnet
1.
2.
   Set TTov = New ADODB.Recordset
   TTov.Open "Tov", CurrentProject.Connection



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

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

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

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


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

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

Chr(34) - итог этой функции двойные кавычки
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701818
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скобки убрал, все равно ошибка. Панург,
...
Рейтинг: 0 / 0
Не работает метод Find
    #39701826
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 30, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает метод Find
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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