![]() |
Проблема с DoCmd.RunSQL ,SELECT и кнопкой "отменить" (VBA и Access)
Доброго времени суток.
Вопрос по использованию DoCmd.RunSQL. DoCmd.RunSQL("INSERT...") DoCmd.RunSQL("DELETE...") работают без проблем. А как справится с DoCmd.RunSQL("SELECT proff FROM proff_t;") Выдает ошибку Цитата:
(DoCmd.RunSQL "SELECT * FROM [имя таблицы] INTO [имя любой другой таблицы];" работает нормально.) Куда я в случае выполнения такого запроса получу результат ? Как его изменить, что бы получить что типа RecordSet ? И в каком виде ? В хелпе написано что получу обьект типа DoCmd :confused: Цитата:
И второй вопрос: Когда я выполняю любую DoCmd.RunSQL команду access переспрашивает вы точно хотите добавить-удалить-изменить столько то записей ? Отвечаешь "да" - и все ок. Отвечаешь нет - программа тут же говорит о ошибке и предлагает дебагить. Текст ошибки: Цитата:
|
1. Если хочешь получить ответ SELECT в объект, то смотри в справке RowSource Property. Там даже примерчик есть.
2. Чтобы отключить подтверждение исполнения SQL запросов надо в меню Сервис->Параметры вкладка Правка и поиск снять галочку Подтверждение запросов на изменение. Если с RowSource не разберешься - я вечерком примерчик приведу. |
Raven B.
1. Чтобы получить результат выполнения запроса, пиши так: Код:
Dim dbs As Database Код:
DoCmd.SetWarnings False |
2Al-x:
RowSource насколько я понял позволяет менять источник данных для ListBox,ComboBox и т.д. У меня немного другая задача. Например: пользователь выбирает в листбоксе название професии. Я селектом в программе получаю id професии. Потом получаю из таблицы - связки все id опасных факторов для данной професии. потом вывожк их в соседний listBox. И т.п. То есть селект нужен для "сложных" с логической точки зрения операций (не помите неправильно - это самый простой пример) и тех операций, при которых надо перед передачей информации пользователю ее обработать. 2LightImage: 2. прекрасно решило проблему. 1. не работает =( Пишет: Цитата:
Dim dbs As Database Что это может значить? Это еж по идее обьект DAO ? 2. Из хелпа OpenRecordset - ф-я DAO... И требует открытия соответствующего соединения. или нет ? В примере вроде как открывают. CurrentDb открывает соединение с текущей базой данных ? Стоит Office 2003. ОC win2k |
CurrentDb - текущая открытая база. НИчего с ней дополнительно открывать не надо.
User defined type not defined ругается на то, что тип не определен. Проверь, стоит ли галочка Microsoft DAO 3.6 Object Library (ну или не 3.6:)) в меню Tools->References.... Про RecordSet пишут, что Код:
For Connection [b]and Database[b] objects: |
Raven B.
Про compiler error полностью ответил Al-x. Цитата:
1. Создаешь форму frm_Профессии, для нее источником данных ставишь "SELECT id_профессии FROM Т_Профессии". В ней создаешь listbox с именем lbx_СписокЭлементов, для него ставишь источник строк "SELECT id_профессии, НазваниеПрофессии FROM Т_Профессии". Свойство "Данные" (ControlSource) этого листбокса оставляешь пустым. Ширину столбцов листбокса ставишь "0;4" (чтобы в нем не отображалось поле id_профессии). Для него пишешь обработчик события "После обновления", который переводит текущую запись формы на выбранную профессию: Код:
Private Sub lbx_СписокЭлементов_AfterUpdate() Код:
Private Sub Form_Current() 3. Добавляешь на форму frm_Профессии подчиненную форму, свойство "Объект-источник" для нее указываешь sfrm_ОпасныеФакторы, в свойствах "Подчиненные поля" и "Основные поля" пишешь "id_профессии". 4. Наслаждаешься полученными результатами =) |
Дико извиняюсь, но опять не работает. :idontnow:
Код:
Private Sub proff_n_list_Click() Цитата:
Пробовал различные type. Когда его "можно" использовать та же ошибка. Если нельзя - ругается на type... Бред какой то... Я что то еще забыл подключить ? Цитата:
Помогите пожалуста разобратся. :help: |
Цитата:
Код:
Visual Basic For Applications |
У меня
Цитата:
2Al-x: ВЫ ГЕНИЙ. Все работает !!!! Порядок действительно имет значение =) :yees: Единственное что плохо - это невозможность еще раз поднять вам репутацию. =) :beer: Еще один вопрос по ходу. я получаю записи таким образом: For Each fldLoop In rst.Fields MsgBox fldLoop.Name & " - " & fldLoop.Value Next fldLoop Вроде бы показывает все записи попавшие в выборку. Это так или это только кажется :p |
Цитата:
Эта конструкция выводит список полей со значениями первой записи. Я думаю, что имелось ввиду вот это (id и val имена полей в таблице): Код:
With rst |
столкнулся с той же проблемой. Прочитал все выше сказанное, попробывал сделать по анологии с Raven B.! в результате ничего не происходит, программа доходит весь код и просто закрывается, не выводя ни запрос, ни ошибки!
С чем это может быть связано? Подскажите кто чем может, на вас последняя надежда. |
пример в студию :)
|
Часовой пояс GMT +4, время: 13:00. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.