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

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

03.01.2008, 08:15. Показов 1773. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru