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

CLASS
Код: 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.
31.
32.
33.
  Dim i As Long
  Dim NP As Long
  Dim tm_ReviziaRubrika As Long
  Dim connectString As String
  Dim Clasdb As ADODB.Connection
  Dim ClTable_t1 As ADODB.Recordset

Public Sub Activate()
  Set Clasdb = New ADODB.Connection
  Set ClTable_t1 = New ADODB.Recordset
End Sub
Public Sub OpenBaza()
  Clasdb.ConnectionString = "DBQ=Музика.mdb;UID=admin;PWD=;DRIVER={Microsoft Access Driver (*.mdb)};DefaultDir=D:\Проекти;"
  Clasdb.Open
  ClTable_t1.CursorType = adOpenKeyset
  ClTable_t1.LockType = adLockOptimistic
  ClTable_t1.Open "FileMusic", Clasdb, , , adCmdTable
End Sub
Public Sub AddNewZapis(NameFile As String, PathFile As String)
  ClTable_t1.AddNew
  ClTable_t1.Fields("NameFile").value = NameFile
  ClTable_t1.Fields("PathFile").value = PathFile
End Sub

Public Sub CloseBaza()
  ClTable_t1.Save
  ClTable_t1.Close
  Clasdb.Close
End Sub
Public Sub deactivate()
  Set ClTable_t1 = Nothing
  Set Clasdb = Nothing
End Sub

с уважением Андрей
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471778
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно еще применять фильтр, поскольку мне нужно также находить не только по запросе где а=б , но и а="*прпрп*"
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471860
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про фильтр понял
Код: plaintext
1.
2.
Public Sub Filter(FltTxt As String)
  ClTable_t1.Filter = FltTxt
End Sub
в FltTxt не используем "
как например baza7.Filter "NameFile like *2DD*"
а так неправильно baza7.Filter "NameFile like " & chr(34) & "*2DD*" & chr(34) & ";" хотя на языке SQL должно быть именно так

помогите з запросом. куда его писать чтоб работало
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471862
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Количество записей. Знаю уже ответ
Код: plaintext
1.
2.
Public Function CountBD() As Long
  CountBD = ClTable_t1.RecordCount
End Function

осталось з запросом разобраться. не получается через Open
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471868
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159Сделал примитивный класс для работы с базой данных.
Ищу вот такие ответы:
1. Нужно также прикрепить еще одну процедуру или функцию чтоб задать SQL запрос. Активировать.
2. После активации чтоб отключить запрос (пользоваться всей таблицей)
и 3. Узнать количество записей в запросе или таблице

CLASS
Код: 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.
31.
32.
33.
  Dim i As Long
  Dim NP As Long
  Dim tm_ReviziaRubrika As Long
  Dim connectString As String
  Dim Clasdb As ADODB.Connection
  Dim ClTable_t1 As ADODB.Recordset

Public Sub Activate()
  Set Clasdb = New ADODB.Connection
  Set ClTable_t1 = New ADODB.Recordset
End Sub
Public Sub OpenBaza()
  Clasdb.ConnectionString = "DBQ=Музика.mdb;UID=admin;PWD=;DRIVER={Microsoft Access Driver (*.mdb)};DefaultDir=D:\Проекти;"
  Clasdb.Open
  ClTable_t1.CursorType = adOpenKeyset
  ClTable_t1.LockType = adLockOptimistic
  ClTable_t1.Open "FileMusic", Clasdb, , , adCmdTable
End Sub
Public Sub AddNewZapis(NameFile As String, PathFile As String)
  ClTable_t1.AddNew
  ClTable_t1.Fields("NameFile").value = NameFile
  ClTable_t1.Fields("PathFile").value = PathFile
End Sub

Public Sub CloseBaza()
  ClTable_t1.Save
  ClTable_t1.Close
  Clasdb.Close
End Sub
Public Sub deactivate()
  Set ClTable_t1 = Nothing
  Set Clasdb = Nothing
End Sub

с уважением Андрей
слухай, друг, а нафига тебе класс ?? из дот-нета проездом ?

автор
Код: plaintext
1.
2.
3.
4.
Public Sub AddNewZapis(NameFile As String, PathFile As String)
  ClTable_t1.AddNew
  ClTable_t1.Fields("NameFile").value = NameFile
  ClTable_t1.Fields("PathFile").value = PathFile
End Sub

где Update ?

автор
Код: plaintext
1.
Public Sub CloseBaza()
  ClTable_t1.Save

это делает саааавсем не то что ты думаеш

авторв FltTxt не используем "

удваивать нужно

автор2. После активации чтоб отключить запрос (пользоваться всей таблицей)
хз о чём...,
о чём это, автор ??
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471877
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей1591. Нужно также прикрепить еще одну процедуру или функцию чтоб задать SQL запрос. Активировать.
2. После активации чтоб отключить запрос (пользоваться всей таблицей)
ааа...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub OpenQuery(strSQL as string)
  ClTable_t1.close
  ClTable_t1.Open strSQL, Clasdb
End Sub

Public Sub OpenTable()
  ClTable_t1.close
  ClTable_t1.Open "FileMusic", Clasdb
End Sub

...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37471916
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторгде Update ?
С Update это делается в 5 или в 10 раз дольше. Я взял за основу то как я ввожу данные в ACCESS, так там можно добавить запись, внести и снова нажать добавить, при этом данные сохраняются. Сначало пробовал делать по правильному с Update, но данная скорость мне не подходит и я уж лучше тогда буду с OPEN FOR RANDOM сидеть чем с б/д. А без Update - меня тронуло. Вот тестирую скорость запроса. Если фильтр и запрос будет быстр как мне нужно, то перейду на этот движок.

У меня получилось с запросом. Моя ошибка была вот где ClTable_t1.Open "ЗАПРОС", Clasdb, , , adCmdTable


Нужен клас поскольку я создаю обьект в котором заложены одни и теж функции, но их мне нужно больше чем один. Разрабатываю интерфейс программы где все мигает, анимируется и т.д. Два плеера, один играет, другой ждет, после окончании трека, плавный микс. Все это нужно делать в класах. Движок один а впечатление будто программа на километр
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37472029
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub OpenQuery(strSQL as string)
  if ClTable_t1.State <> adStateClosed Then _
  ClTable_t1.close
  ClTable_t1.Open strSQL, Clasdb
End Sub

Public Sub OpenTable()
  if ClTable_t1.State <> adStateClosed Then _
  ClTable_t1.close
  ClTable_t1.Open "FileMusic", Clasdb
End Sub
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37472049
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верно. Встрчались ошибки по такому случаю не раз. Спасибо
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37472104
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотищаqwerty112,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub OpenQuery(strSQL as string)
  if ClTable_t1.State <> adStateClosed Then _
  ClTable_t1.close
  ClTable_t1.Open strSQL, Clasdb
End Sub

Public Sub OpenTable()
  if ClTable_t1.State <> adStateClosed Then _
  ClTable_t1.close
  ClTable_t1.Open "FileMusic", Clasdb
End Sub

даа, это не помешает ))
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37472107
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159авторгде Update ?
С Update это делается в 5 или в 10 раз дольше. Я взял за основу то как я ввожу данные в ACCESS, так там можно добавить запись, внести и снова нажать добавить, при этом данные сохраняются.
...
довод, даже не смешной, а грустный ....

ну откуда вы знаете, что делает Акцесс "за сценой", в табличном представлении ..?

сказать по-правде, кое в чём вы правы - АДО-рекордсет поддерживает неявную фиксацию изменений,
т.е. такое
Код: plaintext
1.
2.
3.
4.
  ClTable_t1.AddNew
  ClTable_t1.Fields("NameFile").value = NameFile
  ClTable_t1.Fields("PathFile").value = PathFile

  ClTable_t1.movefirst
запись сохранит (если никакие ограничения не нарушаются),
но это для НЕ отключенного рекордсета эквивалентно вызову ClTable_t1.update перед ClTable_t1.movefirst,
и ни про какие "дольше/не дольше" тут и речь не может идти
(вот если бы вы работали с откл.рекордсетом, и использовали updatebath - тут было бы о чём говорить ...)

и второе
результат выполнения такого кода
Код: plaintext
1.
2.
MyObj.AddNewZapis (...)
MyObj.CloseBaza
вас очень удивит :)
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37473082
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда я розрабатывал свою базу даных на основе Open Random, то пришел к тому, что нужно было доделать автосохранение методом PUT выбраной записи при условии что были изменения, строчки не пустые и осуществляется переход к другой записи. Поначалу самодельная база работала отлично, но с большим количеством записей было трудно удалять. На самом деле ничего не удаляется, а присваивается в отдельное поле статус "Удален". Тоже я помечаю и mdb (не знаю как там точно, но количество байт не уменшается при удалении). Вот после перезжатия да. Поэтому я уверен в правильности работы ADODB. Само по себе сохранение конечно не произойдет. Почемуто на много медленней работает, когда ставить отдельно оператор сохранения. В моей базе также было предусмотрено поле для индексации, чтоб быстрей поиск работал. Единственное что мне не удалось, так это придумать быструю сортировку (хотя она мне не была нужна, но). А вот скорость мне нужна. Одна секунда для поиска исполнителя и его трека - это ОЧЕНЬ ДОЛГО. У меня за одну секунду на Open Random движке уже 20 разных найдет, причем база связанна "исполнитель" - "Path" - "Треки" - "Любое название для поиска"-"link" - "черный список"... ADODB не спорю, решение готовое, удобное, но оно сделано именно для таких целей, которые мне не подходят. Я потратил времья и зделал свой движок. Просто попробовал не давать сохранение и заполнение данных достаточно имеет приличную скорость. Ну таку скорость еще можно терпеть, мне лучше работать с ADODB. Что и хотел проверить. А вот поиск уже не совсем быстрый, хотя я еще на все 100% не загрузил базу. Ищу может есть другие способы
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37473621
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159Когда я розрабатывал свою базу даных на основе Open Random, то пришел к тому, что нужно было доделать автосохранение методом PUT выбраной записи при условии что были изменения, строчки не пустые и осуществляется переход к другой записи. Поначалу самодельная база работала отлично, но с большим количеством записей было трудно удалять. На самом деле ничего не удаляется, а присваивается в отдельное поле статус "Удален". Тоже я помечаю и mdb (не знаю как там точно, но количество байт не уменшается при удалении). Вот после перезжатия да. Поэтому я уверен в правильности работы ADODB. Само по себе сохранение конечно не произойдет. Почемуто на много медленней работает, когда ставить отдельно оператор сохранения. В моей базе также было предусмотрено поле для индексации, чтоб быстрей поиск работал. Единственное что мне не удалось, так это придумать быструю сортировку (хотя она мне не была нужна, но). А вот скорость мне нужна. Одна секунда для поиска исполнителя и его трека - это ОЧЕНЬ ДОЛГО. У меня за одну секунду на Open Random движке уже 20 разных найдет, причем база связанна "исполнитель" - "Path" - "Треки" - "Любое название для поиска"-"link" - "черный список"... ADODB не спорю, решение готовое, удобное, но оно сделано именно для таких целей, которые мне не подходят. Я потратил времья и зделал свой движок. Просто попробовал не давать сохранение и заполнение данных достаточно имеет приличную скорость. Ну таку скорость еще можно терпеть, мне лучше работать с ADODB. Что и хотел проверить. А вот поиск уже не совсем быстрый, хотя я еще на все 100% не загрузил базу. Ищу может есть другие способы
пляяя... Джерик с Базистом - нервно курят и рыдают

так я таки не понял - "ушатала" твоя базюка, "на основе Open Random", АДОДБ или нет ?? :))
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474366
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно поиск работает на много быстрей. Никаких задержек при 1000записей * 12 разных проверок. В секунду не знаю сколько операций сделает, но включаю Fn+F7 (на моей клавиатуре это перевод в самый быстрый режим "скорость повторов" клавиш), и удерживая кнопку вниз или вверх в FileListBox все в реальном темпе работает: из названия файла извесно по базе исполнителя, кратко исполнитель, путь, линки, в черном ли списке и т.д. А с ADODB ели за секунду успевает.
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474462
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно из-за чего с ADODB тормоза - с такой крохотной базкой их быть вообще не должно.

Но я бы использовал OLEDB Provaider, а не ODBC.

P.S
Единственное когда встречал тормоза с ADO при работе с MDB-шкой - это когда число полей в таблице приближается к сотне. DAO с той же таблицей работает быстро...
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474553
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Буду эксперементировать с DAO на днях
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474848
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"unrecognized database format" ошибка №3343.

Ругается сдесь
Dim dbMyDB As Database
Set dbMyDB = OpenDatabase("d:\Проекти\Музика.mdb")


В новои проэкте все работает идеально. Делаю все это в большом проэкте - выдает ошибку. Проверял, одинаково использую МАйкрософт DAO 2.5 library. Пробовал отключать ссилку на ADO, думал конфликтует. Что-то другое. В чем причина?
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474857
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159"unrecognized database format" ошибка №3343.

Ругается сдесь
Dim dbMyDB As Database
Set dbMyDB = OpenDatabase("d:\Проекти\Музика.mdb")


В новои проэкте все работает идеально. Делаю все это в большом проэкте - выдает ошибку. Проверял, одинаково использую МАйкрософт DAO 2.5 library. Пробовал отключать ссилку на ADO, думал конфликтует. Что-то другое. В чем причина?
...да староватая какая-то library ...
я даже не знаю с каким акс-ом такая была
для А2003 - DAO 3.6 object library
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474860
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112...да староватая какая-то library ...
я даже не знаю с каким акс-ом такая была
для А2003 - DAO 3.6 object library

ТС, ну ты продолжаеш жечь
нет слов !
Версии DAO
Ниже перечислены основные версии DAO и продукты, в составе которых они поставлялись:

версия 1.0, Visual Basic 2.0, Visual Basic 3.0, Microsoft Access 1.1
версия 2.0, Microsoft Access 2.0
версия 2.5, Visual Basic 4.0 (16-bit only)
версия 3.0, Visual Basic 4.0, Microsoft Access 95, Microsoft Excel 95, Visual C++ 4.0
версия 3.5, Microsoft Access 97, Visual Basic 6.0
версия 3.6, Microsoft Access 2000, XP
...
Рейтинг: 0 / 0
База даних mdb. SQL запрос. Количество записей. Класс
    #37474954
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, да. "Век живи, век учись". На все вопросы сразу нет ответов.
Спасибо. Вроде бы пробовал 3.6 версию, видимо сам себя запутал, потом попробовал снова и заработало.

Должен признать, что на Open For Random не стоит строить базу данных, поскольку именно DAO (не ADO) работает очень быстро (хотя раньше я был уверен что это не так). Поиск (Find) сначало меня напрягал, но разобравшись как он устроен теперь удобно его использовать. RecordCount при первом обращении врет, аналогично как в Access, когда открыть таблицу з большим колличеством даанных, но он чесно говоря не нужен. Есть Eof и Bof на которые можно смело упереться.

Так устроен поиск
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
If MDB_ArtistMojliviy.RecordCount >  0  Then MDB_ArtistMojliviy.MoveFirst
If MDB_ArtistMojliviy.EOF = False Then
   MDB_ArtistMojliviy.FindNext "NameArtist = '" & VhArtis & "'"
  Do While MDB_ArtistMojliviy.NoMatch = False
     If MDB_ArtistMojliviy.Fields("NameTrack").value = VhTrack Then
       If MDB_ArtistMojliviy.Fields("Path").value = VhPath Then
         Exit Sub
       End If
      End If
      MDB_ArtistMojliviy.FindNext "NameArtist = '" & VhArtis & "'"
  Loop
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.Update
этот кусочек кода помогает обнаружить новую музыку на компьютере
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / База даних mdb. SQL запрос. Количество записей. Класс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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