powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование курсоров в ADO (aduka05adm)
39 сообщений из 39, показаны все 2 страниц
Использование курсоров в ADO (aduka05adm)
    #36704408
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
вопрос про курсоры можно?

Код: plaintext
1.
2.
3.
4.
5.
6.
аdOpenDynamic - это самый удачный курсор для многопользовательской среды, сразу видны изменения вносимые другими пользователями.

аdOpenKeyset - все то же самое, что и для динамического за исключением того, что доступ к записям добавленным или удаленным другими пользователями запрещен.

аdOpenStatic - набор на момент генерации запроса.

аdOpenForwardOnly - набор записей с последовательным доступом. Доступен только один метод MoveNext.

аdOpenForwardOnly по умолчанию используется он если не указать явно ,
теперь вопрос , насколько я понял в grid-e можно будет двигаться тоже только вперед , допустим добавляя значение вручную?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704421
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm аdOpenForwardOnly по умолчанию используется он если не указать явно ,
теперь вопрос , насколько я понял в grid-e можно будет двигаться тоже только вперед , допустим добавляя значение вручную?

У меня такое впечатление, что сетка просто не захочет работать с таким курсором, попробуй.

Вообще этот тип курсора при серверном использовании нужен и весьма полезен, когда требуется скорость работы. Его особенность в том, что данные начинают поступать в твое распоряжение ДО ТОГО, как они полностью будут переданы с сервера. То есть работать с рекордсетом (например заполнять массив, анализировать или заполнять какой-то пользовательский интерфейс) можно начать сразу, как только поступила первая запись, а пока ты обрабатываешь данные, они постепенно подтягиваются с сервера. Это, кстати, хорошо заметно при работе через интернет.

Побочным явлением является RecordsCount=-1
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704463
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо
Shocker.ProТо есть работать с рекордсетом (например заполнять массив, анализировать или заполнять какой-то пользовательский интерфейс) можно начать сразу, как только поступила первая запись, а пока ты обрабатываешь данные, они постепенно подтягиваются с сервера. Это, кстати, хорошо заметно при работе через интернет.

очень полезно кстати
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704482
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а алгоритм какой? как работать с данными которые потихоньку загружаются?
ведь мы делаем запрос "Select * from table" разве не придется ждать пока все данные загрузятся?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704483
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
а алгоритм какой? как работать с данными которые потихоньку загружаются?
ведь мы делаем запрос "Select * from table" разве не придется ждать пока все данные загрузятся?
Нет. Догрузка данных происходит асинхронно в другом потоке, а в VB метод Open уже отработал и уже можно делать выборку. То есть ты просто не замечаешь этой догрузки. Если вдруг ты с помощью MoveNext уперся в последнюю подгруженную запись, MoveNext дождется поступления следующей записи и только потом вернет управление в VB и так вплоть до EOF
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704489
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тебе типичное использование аdOpenForwardOnly курсора.
Код: 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.
dim conn, rs, i, fso, fout, field_data
set fso = CreateObject("Scripting.FileSystemObject")
set fout = fso.CreateTextFile(Output_File_Name, True)
set conn = CreateObject("ADODB.Connection")
conn.Open Connection_String
set rs = conn.Execute(SQL_Statement)


for i= 0  to rs.Fields.Count- 1 
	if i> 0  then fout.Write ","
	fout.Write rs.Fields(i).Name
next
fout.WriteLine

do while not rs.eof
	for i= 0  to rs.Fields.Count- 1 
		if i> 0  then fout.Write ","
		field_data = trim(""&rs(i))
		if instr(field_data, ",") then field_data = """" & field_data & """"
		fout.Write field_data
	next
	fout.WriteLine
	rs.MoveNext
loop

rs.Close
conn.Close
fout.Close
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704500
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНет. Догрузка данных происходит асинхронно в другом потоке,Вообще-то, как раз синхронно.Shocker.ProТо есть ты просто не замечаешь этой догрузки.В асинхронном режиме, он ее очень даже хорошо заметит :)

И вообще, синхронность и асинхронность работы это вопрос намного более сложный и долгий. Не стоит его примешивать к учебнику по курсорам.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704512
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlShocker.ProНет. Догрузка данных происходит асинхронно в другом потоке,Вообще-то, как раз синхронно.
О, черт.
Опять придется флеймить с доказательствами того, что Open возвращает управление до окончания фактической передачи данных?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704513
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
Код: plaintext
field_data = trim(""&rs(i))
rs(i) это целиком запись?
и какой смысл использовать два раза эту конструкцию?
Код: plaintext
1.
for i= 0  to rs.Fields.Count- 1 
		if i> 0  then fout.Write ","
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704518
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admrs(i) это целиком запись?
это i-тое поле
aduka05admи какой смысл использовать два раза эту конструкцию?
в первый раз выводятся заголовки
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704532
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
то есть во второй раз выводится все поле?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704536
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
то есть во второй раз выводится все поле?
Ну, честно говоря, не очень понял вопроса
Код: plaintext
rs(i).Value
так правильнее и понятнее
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704559
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
понял , во внутреннем цикле проходим все поля и записываем , переходим к следующей записи и тоже самое
Код: plaintext
trim(""&rs(i))
здесь убираем пробелы и в тот же момент устанавливаем пробел?
Код: plaintext
instr(field_data, ",")
если нашли запятую устанавливаем кавычки верно?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704586
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
понял , во внутреннем цикле проходим все поля и записываем , переходим к следующей записи и тоже самое
Код: plaintext
trim(""&rs(i))
здесь убираем пробелы и в тот же момент устанавливаем пробел?
честно говоря, я не понял, зачем здесь дополнение пустой строкой, может такой необычный способ преобразования типа в строку. Trim-ом просто режем начальные и конечные пробелы
aduka05adm
Код: plaintext
instr(field_data, ",")
если нашли запятую устанавливаем кавычки верно?
Берем все поле в кавычки. Этот код формирует csv-файл, и в кавычки приходится братьте значения, которые содержат разделитель (запятую в данном случае)
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704623
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
долго думал но понял спасибо)))
читал ваш топик у вас программа в 100 и более форм ,сколько же времени вы ее писали?и еще вопрос если пользователь в gride меняет значение то лучше использовать MSFLEXGRID(имею ввиду где нет прямого доступа к базе) или Grid с поддержкой этого по типу DataGrid (заметил ошибки при прямом внесении данных)?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704655
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admдолго думал но понял спасибо)))
читал ваш топик у вас программа в 100 и более форм ,сколько же времени вы ее писали?
стало быть мало ты моих топиков читал
/topic/703320&pg=2#7864533

aduka05admи еще вопрос если пользователь в gride меняет значение то лучше использовать MSFLEXGRID(имею ввиду где нет прямого доступа к базе) или Grid с поддержкой этого по типу DataGrid (заметил ошибки при прямом внесении данных)?
Ну это кому как удобнее и какая цель ставится.
К примеру, для ввода даты в своих приложениях я использую собственный контрол. Он имеет собственно поле для написания даты ручками, UpDown для листания даты вперед-назад мышкой (как у цифровых полей), вызов календарика на три месяца вокруг текущей даты, выбор из списка типа "вчера, послезавтра, плюс месяц, минус год и т.п.), поддержку дружественной даты ("вчера", "сегодня", "завтра"), разный цвет для текущей, прошлых и будущих дат. Естественно, я хочу и в грид вводить дату с помощью своего контрола, а не с помощью того, который предложит мне DataGrid
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704673
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
больше десяти лет ошолеть )))
это все время вы ее обслуживаете?
не легче было купить что то типо 1с предприятие для организации?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704681
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
больше десяти лет ошолеть )))
это все время вы ее обслуживаете?
не легче было купить что то типо 1с предприятие для организации?
Нет, я ж не бухгалтерию пишу :)
Точнее бухгалтерия там есть только в виде первички (но это процентов 10 программы) - бухгалтерские данные потом экспортируются в 1С и обрабатываются уже там.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704682
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
в 1996 скорее всего и не было , но щас по мойму там помимо бухгалтерии есть учет всего ,
от магазина до гостиниц.
я читал вы самоучка , типо не учились на программиста, я вот сам учу и насколько понимаю если рядом нет того кто будет многое объяснять то это процесс очень долгий, верно?
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704689
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admв 1996 скорее всего и не было , но щас по мойму там помимо бухгалтерии есть учет всего ,от магазина до гостиниц.
Ну опять же, я не говорил, что пишу учет :)
aduka05admя читал вы самоучка , типо не учились на программиста, я вот сам учу и насколько понимаю если рядом нет того кто будет многое объяснять то это процесс очень долгий, верно?
Надо просто писать, писать, писать, тогда будет быстро.
И писать не тестовые задачи, а реальные приложения, да еще и самому ими пользоваться.
Придумай себе: собственный фотоальбом, собственный обработчик телепрограммы, собственную записную книжку, в конце-концов, собственную качалку порнухи. И реализуй то, что ты хочешь сделать, а не то, на какаие возможности языка наткнулся.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704696
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.Proсобственную качалку порнухи
не серьезно)
а так спасибо за советы,очень дельные
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36704902
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Shocker.Proсобственную качалку
не серьезно)

Почему несерьезно???
Ты начни, а там увидишь
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36705217
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносПочему несерьезно???
Ты начни, а там увидишь привыкнешь
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36705560
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
договорились
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706736
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProWhite OwlShocker.ProНет. Догрузка данных происходит асинхронно в другом потоке,Вообще-то, как раз синхронно.
О, черт.
Опять придется флеймить с доказательствами того, что Open возвращает управление до окончания фактической передачи данных?Наверное.... Уж коли внимательность подводит, то придется флеймить.
Open в синхронном режиме возвращает управление когда сервер выдаст хоть что-нибудь. В случае успешной обработки запроса это будет первая строкя первого резалтсета. После этого, подготовленные данные первого резалтсета сидят в буфере на сервере и по каждому MoveNext сервер отдает очередную строку. Сервер в это время, ничего кроме отдачи строк из подготовленного резалстета не делает. Обработку запросов от других коннектов мы сейчас не рассматриваем. Когда клиент даст команду NextRecordset сервер проснется и продолжит выполнение командного пакета подготавливая следующий резалтсет. Клиент в это время будет сидеть и ждать. Как только сервер подготовит следующий резалтсет, он отпустит клиента из режима ожидания и тот снова начнет выбирать строки через MoveNext.

А в асинхронном режиме все несколько по другому. Послав Open клиент сразу же продолжает работать. Клиент не будет ждать пока сервер разберется с таблицами, индексами и связями. Но это так же означает, что клиент не сможет сделать успешный вызов MoveNext, потому что сервер еще не подготовил резалтсет. И клиент, прежде чем начнет получать данные, должен будет сидеть в цикле типа:
Код: plaintext
1.
2.
3.
while rs.State = adStateExecuting
   doevents
wend
И только когда State станет равным adStateOpen ты сможешь сделать успешный MoveNext.
Причем MoveNext тоже будет возвращаться сразу же, не дожидаясь пока данные реально пройдут по сети и лягут в клиентский объект. В это время State будет равным adStateFetching.


Синхронность и асинхронность в применении к ADO (и вообще ко всем интерфейсам баз данных) означает что команды общения с сервером либо будут, либо не будут ждать ответа от сервера прежде чем передать управление следующей строке программы.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706767
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Мы с тобой говорим о разных вещах, воспользовавшись, к сожалению, одним термином.
Ты говоришь об adAsyncExecute, говоришь все правильно и подробно.

И с точки зрения самой команды Open и VB - да, описанный мной случай будет выполнен синхронно. Давай я возьму назад слово "асинхронно", заменив его на "многопоточно".

Единственное, что противоречит моему пониманию происходящих процессов, это твое "подготовленные данные первого резалтсета сидят в буфере на сервере и по каждому MoveNext сервер отдает очередную строку" . Я не уверен, что это происходит именно так, что данные не подкачиваются, пока я, скажем, ушел в затуп и вообще не делаю MoveNext. Но доказать это не могу, надо провести серию экспериментов.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706776
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> "подготовленные данные первого резалтсета сидят в буфере на сервере и по каждому MoveNext сервер отдает очередную
> строку". Я не уверен, что это происходит именно так

На клиенте при запросе создается буфер и при выполнеии запросы этот буфер заполняется, как только он заполнился, данные
не тянутся. Остальное на сервере ждет своего звездного часа :) . Именно по MoveNext происходит запрос, а не в
бекграудне, ты можешь вообще никуда не пойти, а просто посмотреть и закрыть рекордсет. Так зачем делать лишнее

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706783
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Ладно.
Век живи - век учись.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706853
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕдинственное, что противоречит моему пониманию происходящих процессов, это твое "подготовленные данные первого резалтсета сидят в буфере на сервере и по каждому MoveNext сервер отдает очередную строку" . Я не уверен, что это происходит именно так, что данные не подкачиваются, пока я, скажем, ушел в затуп и вообще не делаю MoveNext. Но доказать это не могу, надо провести серию экспериментов.Это и верно и неверно одновременно :)
С точки зрения реальной нагрузки на сеть, клиент действительно чаще всего перекачивает записи по нескольку штук за раз. Если ты заглянешь в настройки интерфейсного драйвера ты возможно сможешь найти там что-нибудь типа Fetch Array Size. Но большинство драйверов не позволяют контролировать размер пакета или просто не афишируют это свойство в настройках доступных рядовому админу.
А с точки зрения VB* выкачивает драйвер строки пачками или по одной - никакой разницы нет. С уровня VB ты никогда не сможешь добраться до драйверного буфера и как-либо его использовать.
Принцип тут тот же что и с буферизированым чтением из файла. Осознание того факта что харддрайв не дергается за каждым байтом а читает данные покластерно, греет душу, но не заставляет тебя менять алгоритм побайтового чтения файла на блочный.

Совсем другое дело синхронный или асинхронный доступ к БД. Использование того или другого означает что ты будешь писать программу в двух разных стилях. Поэтому я и возмутился на необдуманное использование слова "асинхронный".
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706872
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlС точки зрения реальной нагрузки на сеть, клиент действительно чаще всего перекачивает записи по нескольку штук за раз. Если ты заглянешь в настройки интерфейсного драйвера ты возможно сможешь найти там что-нибудь типа Fetch Array Size. Но большинство драйверов не позволяют контролировать размер пакета или просто не афишируют это свойство в настройках доступных рядовому админу.
Ну тут у меня было непонимание только в одном: предположим, я сделал разок MoveNext и ушел в затуп. Будет ли в это время происходить докачка? Я полагал, что будет. Игорь привел железный аргумент, после которого я решил согласиться с вами без проверки.
----------------
Есть один интересный нюанс. Я пока ему беспощадную войну не объявлял, а мелкие попытки нивелирования ни к чему ни привели.
При Forward-курсоре я начинаю чтение и обработку данных и вдруг бросаю (пользователь прервал процесс). Делаю на рекордсете и на комманде всякие Cancel, Close, Nothing, однако, пока эта сволочь полностью не заберет недобранные данные с сервера - управление мне не возвращается. Особенно заметно при работе через интернет - если данных было много, приложение затупливает на несколько секунд и трафик виден. Если данных при тех же условиях было меньше или дело происходит в локалке - отменяется гораздо быстрее.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706915
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProWhite OwlС точки зрения реальной нагрузки на сеть, клиент действительно чаще всего перекачивает записи по нескольку штук за раз. Если ты заглянешь в настройки интерфейсного драйвера ты возможно сможешь найти там что-нибудь типа Fetch Array Size. Но большинство драйверов не позволяют контролировать размер пакета или просто не афишируют это свойство в настройках доступных рядовому админу.
Ну тут у меня было непонимание только в одном: предположим, я сделал разок MoveNext и ушел в затуп. Будет ли в это время происходить докачка?Ответ: Возможно.
Я не могу дать более точного ответа. Это все зависит от конкретной версии интерфейса и реализации интерфейсного драйвера.
До тех пор пока ты не сделаешь очередной MoveNext данные точно не попадут в память твоей программы, но попадут они в память интерфейсного драйвера на клиентской машине или нет - без копания в исходниках драйвера сказать обычно нельзя.

Shocker.ProПри Forward-курсоре я начинаю чтение и обработку данных и вдруг бросаю (пользователь прервал процесс). Делаю на рекордсете и на комманде всякие Cancel, Close, Nothing, однако, пока эта сволочь полностью не заберет недобранные данные с сервера - управление мне не возвращается. Особенно заметно при работе через интернет - если данных было много, приложение затупливает на несколько секунд и трафик виден. Если данных при тех же условиях было меньше или дело происходит в локалке - отменяется гораздо быстрее.Да, это возможно. Опять таки повторюсь: все зависит от конкретной реализации интерфейса. Вполне возможно что клиентский драйвер действительно будет тянуть остатки резалтсета даже если его отменили. Стандартов на реализацию этого момента нет и каждый делает как ему кажется лучшим. В конце-концов "выбрать все и забыть" тоже можно считать "отменой".

А вообще, смотри как организуется обмен по TCP - одна сторона пихает в свой конец туннеля, потом читает, снова пихает, снова читает... Если сервер считает что он должен запихать в туннель вот такой-то объем данных, клиент не может его прервать и сказать "хватит". В принципе не может. Только если сервер посылает данные блоками и между каждым блоком слушает "а не просят ли меня остановится", только тогда возможно прерывание посылки... И я совсем не уверен что подставь_свою_СУБД делает именно это.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36706917
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlИ я совсем не уверен что подставь_свою_СУБД делает именно это.
MSSQL/OLEDB
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707609
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот повыдерал из проекта, разбирайтесь

Код: 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.
Public bComplete As Boolean
Public WithEvents rsEvents As ADODB.Recordset
'

Sub Refresh()
...
    If Not bComplete And Not Me.rsEvents Is Nothing Then
        Me.rsEvents.Cancel
    Else
        bComplete = False
    End If
...

  Set rsEvents = New ADODB.Recordset
  rsEvents.CursorLocation = adUseClient
  rsEvents.PageSize =  100 
  rsEvents.CacheSize =  1000 
  Set rsEvents.ActiveConnection = cn
  rsEvents.Open SQL, , adOpenStatic, adLockReadOnly, adAsyncFetchNonBlocking
...
End Sub

Private Sub rsEvents_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    Me.lblRecordCount.Caption = "Найдено записей: " & rsEvents.RecordCount
End Sub

Private Sub rsEvents_FieldChangeComplete(ByVal cFields As Long, ByVal Fields As Variant, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    bComplete = True
End Sub
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707656
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Ну у меня примерно так же, только я ловлю события от коннекшна.
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707670
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_One,

Ну у меня примерно так же, только я ловлю события от коннекшна.


в режиме ассинхронного рекордсета не блокируется форма с гридом, в котором он находится. и не надо делать ассинхронное соединение (ADODB.Connection)
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707683
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneShocker.ProKonst_One,

Ну у меня примерно так же, только я ловлю события от коннекшна.

в режиме ассинхронного рекордсета не блокируется форма с гридом, в котором он находится. и не надо делать ассинхронное соединение (ADODB.Connection)
Я не очень понял, к чему ты это.
Я асинхронно запрашиваю рекордсет их хранимки через Command, и меня интересует только момент его поступления. Обработку рекордсета я делаю, перемежая его DoEvents-ом
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707687
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_OneShocker.ProKonst_One,

Ну у меня примерно так же, только я ловлю события от коннекшна.

в режиме ассинхронного рекордсета не блокируется форма с гридом, в котором он находится. и не надо делать ассинхронное соединение (ADODB.Connection)
Я не очень понял, к чему ты это.
Я асинхронно запрашиваю рекордсет их хранимки через Command, и меня интересует только момент его поступления. Обработку рекордсета я делаю, перемежая его DoEvents-ом


ясно, у тебя всё ок.
тогда это тем, кто думает , что открыв коннект со свойством Async, у него всё сразу стало ассинхронным =)
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707692
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> Я не очень понял, к чему ты это.

Костя пытается тебе сказать, что в случае асинхронного рекордсета, асинхронными есть только действия связанные с этим
рекордсетом, и при этом остается возможность производить синхронные запросы. А в случае асинхронного коннекта, вся
работа становится асинхронной.

З.Ы. Если я правильно понял

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Использование курсоров в ADO (aduka05adm)
    #36707699
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Shocker.Pro
> Я не очень понял, к чему ты это.

Костя пытается тебе сказать, что в случае асинхронного рекордсета, асинхронными есть только действия связанные с этим
рекордсетом, и при этом остается возможность производить синхронные запросы. А в случае асинхронного коннекта, вся
работа становится асинхронной.

З.Ы. Если я правильно понял



что-то в этом роде, но ещё и то, что сами рекордсеты при ассинхронном соединении ещё надо так же вызывать ассинхронно
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование курсоров в ADO (aduka05adm)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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