powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Узнать текущую запись в ADODB
13 сообщений из 13, страница 1 из 1
Узнать текущую запись в ADODB
    #37473416
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищу конкретную запись как видно в коде
если не нашел, продолжаю дальше искать
Ищу по одном поле, а когда нахожу его уточняю еще и другие поля. Если есть там то что мне нужно выходим и функции (тоесть не добавляем новую запись), иначе ищем до тех пор пока ничего не найдем и добавим новую запись

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
If MDB_ArtistMojliviy.RecordCount >  0  Then
   MDB_ArtistMojliviy.MoveFirst
znovu2:
   MDB_ArtistMojliviy.Find "NameArtist = '" & VhArtis & "'", , adSearchForward
   
   If MDB_ArtistMojliviy.EOF = False Then
     If MDB_ArtistMojliviy.Fields("NameTrack").value = VhTrack Then
       If MDB_ArtistMojliviy.Fields("Path").value = VhPath Then
         Exit Sub
       End If
     End If
     GoTo znovu2
   End If
End If

  MDB_ArtistMojliviy.AddNew
  MDB_ArtistMojliviy.Fields("NameArtist") = VhArtis
  MDB_ArtistMojliviy.Fields("NameTrack") = VhTrack
  MDB_ArtistMojliviy.Fields("Path") = VhPath
  MDB_ArtistMojliviy.Fields("DateEditFile") = FileDateTime(VhPath)

  MDB_ArtistMojliviy.Save: MDB_ArtistMojliviy.Update

Проблема:
EOF не хочет быть TRUE. Если б записи там такой небыло, тогда EOF срабатывает, а если там одна, две и больше записей, тогда в цылке сидит себе. Как быть в такой ситуации ?

Я бы выкрутился если б знал как узнать поточную позицию записи. А я знаю как лишь перейти на конкретную запись, а как узнать на какой я сейчас ?

с уважением Андрей
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473421
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
...
 MDB_ArtistMojliviy.Save
...

что это?
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473425
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да фиг его знает. Можно и без этого. Позицию можно узнать ?
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473435
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MDB_ArtistMojliviy.AbsolutePosition
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473448
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Ищу конкретную запись как видно в коде
если не нашел, продолжаю дальше искать
Ищу по одном поле, а когда нахожу его уточняю еще и другие поля. Если есть там то что мне нужно выходим и функции (тоесть не добавляем новую запись), иначе ищем до тех пор пока ничего не найдем и добавим новую запись
Я так понимаю что использовать "select ... where" и "insert" религия запрещает?
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473450
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал. Например 15 записей. Выдает то -1 то -3. Когда начинаю MDB_ArtistMojliviy.MovePrevious MDB_ArtistMojliviy.MoveNext двигать, то числа меняются, а поиск дает одно и тоже -1

Я вот накрайняк вот такой вариант придумал, робочий. Но это косяк конкретный с поиском. Как так можно...

Код: 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.
29.
30.
   Dim kod As Long
   VhArtis = Trim(VhArtis)
   If VhArtis = "" Then Exit Sub
  
'Пошук на дублікат
If MDB_ArtistMojliviy.RecordCount >  0  Then
   MDB_ArtistMojliviy.MoveFirst
znovu2:
   MDB_ArtistMojliviy.Find "NameArtist = '" & VhArtis & "'", , adSearchForward
   
   
   If MDB_ArtistMojliviy.EOF = False Then
    If kod = MDB_ArtistMojliviy.Fields("Kod").value Then GoTo Dali2
     If MDB_ArtistMojliviy.Fields("NameTrack").value = VhTrack Then
       If MDB_ArtistMojliviy.Fields("Path").value = VhPath Then
         Exit Sub
       End If
     End If
     kod = MDB_ArtistMojliviy.Fields("Kod").value
     GoTo znovu2
   End If
End If
Dali2:
  MDB_ArtistMojliviy.AddNew
  MDB_ArtistMojliviy.Fields("NameArtist") = VhArtis
  MDB_ArtistMojliviy.Fields("NameTrack") = VhTrack
  MDB_ArtistMojliviy.Fields("Path") = VhPath
  MDB_ArtistMojliviy.Fields("DateEditFile") = FileDateTime(VhPath)
  

    MDB_ArtistMojliviy.Update
Код у меня "счетчик", поэтому и работает

Не знаю. Может что-то упустил. Программа должна выглядеть по проще
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473472
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ешкин кот
MDB_ArtistMojliviy.Find "NameArtist = '" & VhArtis & "'", 1

"1" добавил и заработало, а раньше нашло что-то и висит на нем
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473586
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В DAO (Data Access Objects) вижу позиция работает отлично. Только вот не знаю какие там нюансы. Попробую покопаюсь
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37473628
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlЯ так понимаю что использовать "select ... where" и "insert" религия запрещает?
Андрей159Пробовал. Например 15 записей. Выдает то -1 то -3.
...
что пробывал ?? запросом проверь есть такая запись или нет !
без этого дурноватого GoTo znovu2
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37474344
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Проблема:


Столько кода и рассуждений... Нет чтобы в Help-e прочитать про Filter и все решилось бы примитивно...
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37474363
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фильтр и запрос работает медленно
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37478971
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159,

Фильтр - надо тестировать...
Но чтобы правильно построенный запрос работал медленнее, чем цикл - это надо умудриться
Пробовали построить запрос?

Кроме того, не обязательно "шарашиться" по рекордсету - можно ведь его сначала слить в массив, а потом поиск проводить по нему...
...
Рейтинг: 0 / 0
Узнать текущую запись в ADODB
    #37479770
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В большинстве случаев из всей базы будет одно или несколько значений. В даном случае мне подходить только Find, а сравнивать с запросом по скорости смысла нет. Както когдато может "умудрюсь" выложу для сравнения на ютуб, хотя это лишнее в DAO все что нужно уже решил
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Узнать текущую запись в ADODB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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