|
|
|
| Есть форма. На ней Listbox. Нужно сделать так, чтобы выделенная строка в listbox'е (по нажатию кнопки или двойным кликом на строке) записывалась в пустую таблицу. Поля в таблице и списке совпадают. Подскажите пожалуйста как сделать?
Заранее спасибо! | |
|
| |
|
|
|
| Каков источник строк Listbox-а ? | |
|
| |
|
|
|
| Выбираются SQL-запросом из таблички. Посредством изменения свойства RowSource. | |
|
| |
|
|
|
| В таком случае, запросом на добавление добавляем запись в новую таблицу, выбрав запись из источника данных ListBox-а с выборкой(фильтром) по значению ListBox-а. | |
|
| |
|
|
|
| Эммм, а можно по шагам, как это делается? А то я в СУБД новичок
Спасибо за помощь! | |
|
| |
|
|
|
| Ответ на вопрос автора о том, нельзя ли это сделать проще:
Проще только заплатить специалисту, который все сделает правильно, чтобы небыло необходимости копировать данные из одной таблицы в другую. | |
|
| |
|
|
|
| Я вообще курсовой делаю, так что мне оптимизировать особо не надо. К тому же данные из этой таблицы (в которую копируется) удаляются после печати отчета и таблица становится пустой. Поэтому об избыточности заботится не надо =)
Не бросайте на полпути, опишите пожалуйста, как это делается | |
|
| |
|
|
|
| за что уважаю курсовые? - за конкретность задания. Тупо по пунктам исполнил - оптимизировать ничего не надо. Ах, да... и не забудь с собой ден@ги | |
|
| |
|
|
|
| Скажите, какое свойство содержит в себе выделенную строку в listbox'е | |
|
| |
|
|
|
| Если список с одиночным выбором- Value - значение списка (BoundColumn)
Используя Column(Индекс) можно получить данные всех столбцов ListBox. | |
|
| |
|
|
|
| Я чего-то не понимаю. У меня есть список (динамически меняется). В нем несколько столбцов. Один из них ID (идент. товара). Так вот, мне нужно сделать, чтобы при двойном клике по строке в списке, выбирался этот ID и по нему уже составлялся запрос на добавление в таблицу. Как сэто осуществить? Если не трудно, напишите код плиз или ссылочку дайте на пример похожий.
Я просто не пойму, какое свойство содержит в себе значение стоблца ID выделенной строки? И куда писать запрос? Ну не в RowSource же... | |
|
| |
|
|
|
| Как только вы выбираете строку в списке, значение списка принимает значение столбца BoundColumn выбранной записи списка.
А на этот вопрос ответить сложнее, но не "на деревню дедушке" это точно. | |
|
| |
|
|
|
| Вариант 1. Сформировать строку SQL запроса в коде VBA.
Вариант 2. Предварительно создать запрос в конструкторе запросов и сохранить.
В обоих случаях выполнить запрос на добавление. | |
|
| |
|
|
|
| Ага, значит, как я понял, BoundColumn содержит в себе номер столбца, откуда берутся данные для Value? Тогда все понятно...
Т.е. мне надо делать выборку по Список2.Value! Вот это я и хотел узнать, большое спасибо...
Теперь осталось узнать, как сделать выборку. Запрос написать несложно, но мне надо понять, куда его вставлять. При создании списка запрос пишется в свойство RowSource, чтобы отображались данные в Listbox. А чтобы он выполнился при двойном нажатии, куда его вставлять?
Я так понимаю влоб писать нельзя
Private Sub Список2_DblClick(Cancel As Integer)
insert into ......
End Sub
Надо какому-то свойству присваивать, но какому? | |
|
| |
|
|
|
| Создаем запрос в конструкторе запросов:
INSERT INTO tblName (имена полей через запятую) SELECT ..поля которые нам нужны через запятую...FROM tbl2Name WHERE ID=Forms![Имя формы]![ListName]
|
Сохраняем запрос. Остается его выполнить на двойной клик по списку:
Private Sub List_DblClick(Cancel As Integer)
Либо DoCmd.RunSQL ИмяЗапроса
либо CurrentDb.Execute ИмяЗапроса
End Sub
|
| |
|
| |
|
|
|
| Большое спасибо! Запрос работает, только вот не получается вставить его в код.
Запрос получился тако:
INSERT INTO Текущий_заказ ( Название, Цена_розн, Цена_5, Цена_10, Цена_15, Гарантия, Категория_товара )
SELECT Название, Цена_розн, Цена_5, Цена_10, Цена_15, Гарантия, Категория_товара
FROM Товары
WHERE IDg=Формы!Форма_заказа!Список2;
|
При запуске запроса просит ввести Формы!Форма_заказа!Список2 . Я ввожу IDg, которое мне надо и все прекрасно вставляется.
А когда пишу в коде
Private Sub Список2_DblClick(Cancel As Integer)
DoCmd.RunSQL Купить
End Sub
|
Выдает ошибку:
Ошибочная инструкция SQL; предполагалось 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' или 'UPDATE'. (Ошибка 3129)
Запрос называется КУПИТЬ
Что я не так делаю? | |
|
| |
|
|
|
| Все, огромнейшее спасибо! Все работает. Вставил SQL-запрос прямо в код и все заработало. Еще раз огромное спасибо!!!! | |
|
| |
|
|
|
| а Вы выложите то что уже наваяли | |
|
| |
|
|
|
| Я думаю, Вы там ничего не поймете, т.к. делалось все методом тыка и понимающему человеку понять будет невозможно =) | |
|
| |
|
|
|
| Однажды имел глупость помочь знакомой с курсовой.
Она получила незачет и кучу проблем.
Хотя задание было выполнено по пунктам и правильно. | |
|
| |
|
|
|
| Ну нужно ж иногда и думать, что подсказываешь Вряд ли студент в состоянии сделать решение с использованием пользовательских классов и API функций.
Один знакомый рассказывал ( а он пловец-разрядник ), что пошел сдавать экзамен по плаванию в институт физкультуры, вместо своего друга. ( друг почти не умел плавать). Так вот по результатм сдачи экзамена, его друга тут же зачислили в сборную по плаванию. | |
|
| |
|
|
|
| Любому преподавателю достаточно ткнуть пальцем в строчку кода и спросить: "А это что и зачем".
И даже если ты пытался писать "под студента", а студент не смог ответить на вопрос, то незачет все-равно гарантирован. (Правда есть варианты, но это уже другая история).
Вопрос в том, что преподаватели сами "халтурят" - пишут студентам рефераты, и им конкуренция не нужна. | |
|
| |