Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106

Как открывать recordset в ADO, если он содержит много записей?

03.01.2008, 08:15. Показов 1783. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Т.е как открыть базу в ADO если она очень большая от 11 до 35 мб формат ДБФ.
Нужно использовать эти базы в качестве справочников. Очень долго грузятся... Как здесь поступить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2008, 08:15
Ответы с готовыми решениями:

Как в Recordset взять результат работы SQL процедуры, если процедура содержит оператор SELECT???
Сохраненная процедура на SQL Server 6.5 содержит оператор SELECT, результаты которого нужно вернуть как Recordset в программу. Если просто...

MVVM. Если окно содержит 1 TabControl, который в себе содержит много вкладок и в каждой может быть другой TabControl с вкладками
Я сделал так: Создал UserControl, в него поместил TabControl создал вкладки, во вкладки начал помещать нужные объекты (ListView, кнопки,...

почему долго открывается ADODB.Recordset если в таблице > 10 000 записей
В программе из кода нужно получить список всех полей таблицы. Для этого использую коллекцию Recordset.Fields. но проблема в том, что если в...

8
0 / 0 / 1
Регистрация: 29.07.2007
Сообщений: 40
05.01.2008, 13:16
Poprobyi ispol'zovat' asinhronnyi rezhim objektov ADO.

Naprimer tak otkyvayi recordset: recordset.open(,,,adAsyncFetch)
0
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
06.01.2008, 09:07  [ТС]
Пишу следующее:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim cn As ADODB.Connection
Dim row_pos As Integer
Dim rs_fio As ADODB.Recordset
Dim rs_fio_sorted As ADODB.Recordset
 
Private Sub Command1_Click()
 
rs_fio.Open 'fio', cn, , , adAsyncFetch
Set Me.MSHFlexGrid1.DataSource = rs_fio
 
End Sub
 
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs_fio = New ADODB.Recordset
cn.ConnectionString = 'DSN=dBASE Files;Mode=Read|Write;DBQ=c:FOXING;DefaultDir=c:FOXING;DriverId=21;FIL=dBase III;MaxBufferSize=512;PageTimeout=5'
cn.Open
End Sub
но все равно тормоза дикие. Машина селерон 400, 64 озу.
база дбф содержит порядка 160 000 записей.

что не так? Базу данных надо использовать как справочник. Т.е загружать какое-нить поле в Комбо или в Лист. Очень долго... (

ПОмогите плиз
0
0 / 0 / 1
Регистрация: 29.07.2007
Сообщений: 40
06.01.2008, 13:10
E! Tak chego zhe ty rabotaesh' s nim kak s obychnym recordsetom?

S nim ranota' cherez sobytiya nado, inache net nikakogo smysla ispol'zovat' asinhronnyi trezhim.

1. Ob'yavi i recordset i connection kak peremennye s sobytiyami.
naprimer:

private withevents oRS as adodb.recordset
private withevents oCN as adodb.connection

2. k gridu podkluchai tol'ko posle polycheniya sobytiya 'ExecuteComplete' ot connection.

naprimer:

Private sub oCN_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)

Set grGrid.RecordSource = oRS

End Sub
0
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
06.01.2008, 14:42  [ТС]
Я прошу прощения, но с Басиком я знаком не долго... поэтому столь ламерские вопросы (
Какой код нада писать в процедуре oCNexecuteComplete...
хоть в общих чертах...
И в каком месте нада юзать эту процедуру??

Заранее спасибо за помощь..
0
0 / 0 / 1
Регистрация: 29.07.2007
Сообщений: 40
06.01.2008, 15:08
oCN_ExecuteComplete eto obrabotchik sobytiya ExecuteComplete.
On budet tam, gde ty prodeklariruesh' peremennuyu oCN s SOBYTIYAMI (v tvoem sluchae eto peremennaya 'cn'. No ty ee opredilil lokal'no v procedure Form_Load. Sdelai ee lokal'no - global'noi vnutri modulya formy i ne zabud' dobavit' 'withevents'!). Smotri p.1 predyduschego postinga.

V etot obrabotchik vstav' kod, svyazyvayuschi' grid s recordsetom.
0
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
06.01.2008, 15:27  [ТС]
Теперь помимо базы торможу и я...
пишу следующее:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private WithEvents oRS As ADODB.Recordset
Private WithEvents oCN As ADODB.Connection
 
Private Sub Command1_Click()
 
End Sub
 
Private Sub Form_Load()
Set oCN = New ADODB.Connection
Set oRS = New ADODB.Recordset
oCN.ConnectionString = 'DSN=dBASE Files;Mode=Read|Write;DBQ=c:FOXING;DefaultDir=c:FOXING;DriverId=21;FIL=dBase III;MaxBufferSize=512;PageTimeout=5'
 
end Sub
 
Sub oCN_executeComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
 
Set Me.MSHFlexGrid1.RecordSource = oRS
 
End Sub
где юзать asAsyncFetch и где указывать какой файл дбф открывать??
Спасибо...
у всех спрашиваю, но никто не в силах помочь..
0
0 / 0 / 1
Регистрация: 29.07.2007
Сообщений: 40
06.01.2008, 16:30


V pervom variante u tebya kod otkrytiya recordseta byl v sub Command1_Click. Nu tak sdelai eto i seichas.
0
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
07.01.2008, 08:15  [ТС]
Насколько я понимаю если мы определяем oCN withevents as ADODB.connection, то нужно определить процедуру oCN_ExecuteComplete
евентом для oCN... или я что-то не допонимаю...
И в процедуре oCN_ExecuteComplete(с кучей параметров)
должен быть какойто код кроме заполнения грида данными??

по Вашему совету я пишу так: правильно ли это??
генерал декларэйшон
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private WithEvents oRS As ADODB.Recordset
Private WithEvents oCN As ADODB.Connection
 
Private Sub Command1_Click()
 
oRS.Open 'fio', oCN, , , adAsyncFetch
 
End Sub
 
Private Sub Form_Load()
Set oCN = New ADODB.Connection
Set oRS = New ADODB.Recordset
oCN.ConnectionString = 'DSN=dBASE Files;Mode=Read|Write;DBQ=c:FOXING;DefaultDir=c:FOXING;DriverId=21;FIL=dBase III;MaxBufferSize=512;PageTimeout=5'
oCN.Open
 
End Sub
 
Sub oCN_executeComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
 
Set Me.MSHFlexGrid1.RecordSource = oRS
 
End Sub
Но что-то не то... ругается на oCN_executeComplete....

Спасибо за помощь заранее... оч. признателен...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2008, 08:15
Помогаю со студенческими работами здесь

Как с помощью ADO получить объект Recordset?
Есть база в Access 2000, есть поле Мемо в ней, мне надо из Бейсика с помощью ADO получить объект Recordset с помощью строки? 'SELECT * FROM...

Как узнать что recordset открыт (v ADO)
Kak mozhno usnat shto recordset otkrit ili sakrit (v ADO). Inogda bivaet shto v bolshom proekte sabivaesh gdeto sakrit recordset i potom...

как узнать что recordset открыт (v ADO)
Kak mozhno usnat shto recordset otkrit ili sakrit (v ADO). Inogda bivaet shto v bolshom proekte sabivaesh gdeto sakrit recordset i potom...

Ошибка при изменении записи в БД, если много записей
В таблице было немного записей и все было хорошо, когда добавил побольше на последних записях при редактировании стала выскакивать ошибка ...

ADO.Recordset - Как узнать, что запись уже редактируется
Если многопользовательский вариант при доступе ADO.Recordset как узнать что запись кем то модифицируется


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru