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

Работаем с DAO 3.6

06.12.2010, 16:08. Показов 2439. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникает ошибка 3426 - This action was cancelled by an associated object.
Подскажите, как с этим бороться? Что это означает?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2010, 16:08
Ответы с готовыми решениями:

Работаем с unit-ом
Люди у меня есть полноценная TForm1 где в основном большая часть программы, а мне нужно сделать новый простой unit к которому при обращении...

Работаем с LINQ
какие библиотеки надо добавить в глобальный кэш сборок что бы работать с LINQ в среде Visual Studio 2008 язык C# ? Если можно ссылки на...

Работаем с Россией?
вот позиция...

12
Сумрак
06.12.2010, 20:50
:-) Это и означает. - Это действие было отменено связанным объектом.
ВЫ поясните когда она присходит, при каких обстаятельствах.
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
06.12.2010, 23:05
Сорри за оффтоп, но все же)

В связи с чем Вы до сих пор используете DAO? Устарело же уже давно, пора на ADO переходить...

Или есть какие-то определенные причины?
0
Сумрак
06.12.2010, 23:09
Алексей
Я реплики синхронизирую через ДАО. Хотя вся прога работает через АДО. :-)
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
07.12.2010, 00:05
ясненько)
я, к сожалению, ничем помочь не могу - с ДАО уже давно распрощался, объектную модель толком не помню даже
0
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 76
07.12.2010, 09:57  [ТС]
Поясняю.
Просто я давно уже не работал с базами данных, поэтому вернулся к ДАО, т.е. на чем остановился...
Ошибка возникает так: есть база, я к ней подключаюсь в процессе загрузки формы(свойствам объекта DATA присваиваются соответствующие значения).Дальше у меня идет поиск по конкретному полю(название клиента):ввожу несколько первых букв и он сравнивает значения по всей базе и выдает в комбо-бокс результат. Если после этого тут же я начинаю делать новый поиск, то в этот момент возникает ошибка. Обычно она возникает, когда во втором поиске я пытаюсь выставить текущую строку на первую строку таблицы,с которой начинаю сравнение, т.е. data.recordset.movefirst (т.е. процесс натыкается на эту строчку).
0
0 / 0 / 0
Регистрация: 03.10.2007
Сообщений: 76
07.12.2010, 09:59  [ТС]
Кстати, если вам не сложно, то расскажите, где можно почитать об основах ADO, чтобы начать с этим работать...Я не профессионал в ВБ, пишу почти просто так по мере надобности в процессе работы...

Спасибо.
0
Сумрак
07.12.2010, 15:54
Доброе время суток Руслан.
Информации маловато. Непонятно как у тебя организован поиск.
Судя по всему ты выполняешь какойто запрос на поиск, раз он тебе выдает список. У тебя параметрический запрос сохранен в БД или ты его создаешь налету (SQL)? Нужен код чтоб выявить ошибку. Я пользуюсь АDO для подключения. А БД - MDB.
Описание ADO можно найти в справке по Access (у меня ХР), правда там на ангийском. Если есть интерес то посоветую найти книгу 2001 года выпуска. Майк Гандэрлой 'ADO и Visual Basic'. На 'озоне' глянь может у них есть. Там в общих чертах описано как работать с ADO и с раширениями ADOX и ADO MD.
На счет твоей ошибки, я не нашел информации. у меня в справочнике нет ее. Видать она уже снового Jet. Могу только предположить что ты открываешь новый поиск не зарыв старый.
Но лучше начинай изучать АДО с ним намного удобнее работать и проще.

Примерно так бы выглядела процедура поиска и выбора в ADO, Только нужно сконектится (в коде CON это подключение к БД)
это так для наглядности. Чтоб ты разницу понял.
Но в запрсе лучше использовать хранимые процедуры.
Visual Basic
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
Private Sub Заполнить(ByVal Параметр As String)
On Error GoTo bay
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
CBO.Clear
    RS.Open 'select * from Таблица where [Имя] Like '%' _ 
  & Параметр & '%'', CON, adOpenStatic
    With RS
        If .BOF And .EOF Then
            GoTo ex
        End If
            Do While RS.EOF = False
                CBO.AddItem .Fields('Имя').Value
            Loop
        End With
ex:
    If Not RS Is Nothing Then
        If RS.State = 1 Then RS.Close
    End If
    Set RS = Nothing
Exit Sub
bay:
    MsgBox Err.Description, vbExclamation, Err.Source
    Set RS = Nothing
End Sub
Ладно возникнут вопросы задавай.
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
08.12.2010, 00:38
Сумрак, теперь у меня вопрос возник. 'Но в запрсе лучше использовать хранимые процедуры'. Чем оно лучше? Я всегда писал запросы в rs.open и вроде доволен был...
0
Сумрак
08.12.2010, 07:26
Алексей.
хранимые процедуры(и запросы) уже скомпелированы в код и хронятся в БД,они выполняются быстрее.
Запросы, сформированные в коде, сначала компелируются в спец.код ядром Jet. А потом выполняются.
Я сохраняю параметрические запросы в БД (mdb)и через ADO обращаюсь к ним. Главное приемущество, что мне, изменив запрос не надо перекомпелировать прогу. Хотя иногода использую запросы SQL из проги сформировав их налету. Но если есть возможность лучше использовать хронимые.
Сумрак
08.12.2010, 07:47
добавлю... к предидущему примеру. У меня запрос в БД, поле [ФИО],условие отбора ставлю : LIKE [prm], в коде у меня общая функция для таких запросов ей передаю параметр - '%' & TXT.text & '%',(что интересно, параметр не надо брать в ' и не должно быть квадратных скобок в TXT.text) и эта функция возращает мне Рекордсет.
Сумрак
08.12.2010, 07:56
Вот функция для 1 параметра. Есть 2 вариант выполнения параметрических запросов, но он работает медленнее.
Этот вариант приемлим, если Известно имя параметра.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Function ПарЗапрос(cn As ADODB.Connection, Источник As String, ИмяПар As String, mVar As Variant) As ADODB.Recordset
Dim Com As ADODB.Command
Dim rs As ADODB.Recordset
Dim PRM As ADODB.Parameter
On Error GoTo bay
    Set Com = New ADODB.Command
    Set Com.ActiveConnection = cn
    Com.CommandText = Источник
    Com.CommandType = adCmdStoredProc
    Set PRM = Com.CreateParameter(ИмяПар, adVariant, adParamInput)
    PRM.Value = mVar
    Com.Parameters.Append PRM
    Set ПарЗапрос = Com.Execute
    Set Com = Nothing
    Set PRM = Nothing
Exit Function
bay:
    MsgBox Err.Description, vbExclamation
End Function
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
08.12.2010, 20:42
2Сумрак: а, понял, спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2010, 20:42
Помогаю со студенческими работами здесь

работаем с гет данными
Набросал вот такой кодик . $go = empty($_GET) ? 'main' : $_GET; $mod =(isset($_GET))?$_GET:false; Ссылку подправил . RewriteRule...

Работаем с файлами, комментарии
Давайте кто быстрее ) Задача: 1. Сделать форму со следующими полями: Имя и Комментарий 2. Обработать форму, записав данные в файл....

Работаем с ячейками Excel
Доброго времени суток, дорогие друзья! Сейчас работаю над одной программкой и возникла трудность - ошибка "Could not convert variant...

Работаем с QtStyleSheet (qss)
Здравствуйте, начал изучать qss, хочу поделится с вами тем, что смог узнать и собрать это в одном месте. Пожелания идополнения...

Awesomium работаем с капчей
Здравствуйте дорогие форумчане , стал очень интересный момент , у меня программа взаимодействует с сайтом на котором стоит recaptche2 ,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru