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

Работаем с DAO 3.6

06.12.2010, 16:08. Показов 2416. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru