Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» VBA for Access

Автор: Elena3785
Дата сообщения: 28.11.2009 17:11
Кто подскажет вот в таком вопросе. Есть форма, в которой есть список и поле. Я выбираю в списке нужную строчку и ввожу в поле число и нажимаю кнопку Ввести. Вопрос вот в чем, если я выбираю в списке другую строчку, то в поле остается прежнее число. Как прописать код, чтобы в этом поле снова было пусто? Заранее спасибо.
Автор: dneprcomp
Дата сообщения: 28.11.2009 19:10
Elena3785
Попробуй на кнопку после своего кода добавить
Me.[имя поля] = ""
или этот же код добавить на ListBox OnClick Event
Место добавления кода зависит от нужной логики работы
Автор: Vilerius
Дата сообщения: 16.12.2009 02:09
Подскажите, пожалуйста, как организовать такую процедуру для формы по добавлению записей в таблицу, которая после нажатия кнопки будет выводить:
1) "В какую таблицу желаете добавить запись? "
2) "Введите значение для поля Поле_1" (где название поля будет считываться из таблицы, имя которой мы задали раньше + можно будет выбрать тип данных для введенного значения)
3) "Введите значение для поля Поле_2" (где название поля будет считываться из таблицы, имя которой мы задали раньше + можно будет выбрать тип данных для введенного значения)
и т.д, пока не закончатся поля в таблице

ПОЖАЛУЙСТА, третью ночь не сплю(( если что-то не понятно спрашиваю - растолкуйте - перефразирую
Автор: Panteryl4ik
Дата сообщения: 17.12.2009 09:42
здравствуйте!!!!!!
помогите пожалуйста...у меня вот такая проблемма!!!!
я недавно начла занматься БД....,по работе понадоблось...сделала вроде всё что нужно...
а вот начальник сказал что нужно ещё сделать процедуру на VBA для анализа верности запроса.
есть БД...по программному обеспеч..в ней 3 запроса...ПО/техподдержка,ПО/отдел,ПО/поставыщик...
при запуске запроса вылетает окошко..где просят ввсести..к примеру наименование ПО..после нажатия ОК.вылетает форма на таблицу,где написаны результаты запроса...
если ж ввожить данные которых не существукет,изначально в самой БД,т.е. они не были в неё внесены,то вылетает пустая таблица...
а необходимо что б вылетало сообщение об ошибке,или не предпрнималось никаких действий...
помогите пожалуйста....очень нужно...не пойму как это сделать...
Автор: dneprcomp
Дата сообщения: 17.12.2009 23:58
Panteryl4ik
Попробуй в той же процедуре на обработку нажатия OK поставить проверку количества рекордов в результате. Что-то вида:
IF Me.Recordset.RecordCount>0 then
вылетает форма на таблицу
ELSE
MsgBox "Ничего нет"
End If

Что бы сказать точнее, надо видеть каким образом, с каким именем и где создается рекордсет.
Автор: Panteryl4ik
Дата сообщения: 18.12.2009 09:26
спасибо огромное...т.е. мне нужно на саму форму запроса написать процедуру,кот-ую вы предложили...на событие нажатие кнопки?!
просто это окошко для ввода данных при выполнении запроса автоматич выводтся...этого я не прописывала...
Автор: djoninet
Дата сообщения: 18.12.2009 18:38
помогите пожалуйста!
для заполнения таблицы создается форма с текстовым полем, и при нажатие на кнопку данные из поля должны появиться в конкретном столбце в таблице.
DAO
Автор: dneprcomp
Дата сообщения: 18.12.2009 19:12
Panteryl4ik
Без кода ничего сказать невозможно. Такой if можно применить на вызов разных событий. Все зависит от логики работы существующего кода.
Скорее всего на обработку нажатия кнопки OK.
Автор: djoninet
Дата сообщения: 18.12.2009 19:16
вот именно код я и не знаю как писать. у меня есть таблица выставки, и форма добавить запись с несколькими полями для ввода, и кнопка сохранить. вот я и не знаю что надо прописать так чтобы при нажатии на кнопку данные из этих полей добавились в нужные столбцы в таблице(

Добавлено:
блин я сначала не увидела думала что вы мне ответили(
Автор: dneprcomp
Дата сообщения: 18.12.2009 21:32
djoninet
Можно совсем без кода. Просто привязать тeкстбоксы к полям. Тогда любое изменение тут же записывается в базу.
Только это "неприлично"

Посмотри
http://bytes.com/topic/access/answers/458412-add-update-records-vba
http://functionx.com/vbaccess2003/howto/addrecord.htm
http://www.access-programmers.co.uk/forums/archive/index.php/t-33166.html
Автор: djoninet
Дата сообщения: 18.12.2009 22:06
не там препод зверь, ей обязательно через код прописать надо........
Автор: dneprcomp
Дата сообщения: 18.12.2009 23:44
djoninet
Так смотри ссылки
Автор: djoninet
Дата сообщения: 19.12.2009 19:37
с этим еще куда не шло...... а как прописать, чтоб пр и нажатие на кнопку удалить запись, у удалялась строчка в таблице?
Автор: dneprcomp
Дата сообщения: 19.12.2009 21:49
djoninet
http://www.google.com/search?hl=en&source=hp&q=access+delete+record&aq=4&oq=access+delete&aqi=g10
Автор: djoninet
Дата сообщения: 19.12.2009 22:11
ох хреновый из меня делатель бд...

Добавлено:

Private Sub Кнопка8_Click()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Выставки")
rs.AddNew
rs("НазваниеВыставки") = Me![НазваниеВыставки]
rs.Update
rs.Close
End Sub
Автор: dneprcomp
Дата сообщения: 19.12.2009 23:03
djoninet
И...? Зачем здесь этот код?
Если работает - поздравляю. Если нет - где возникающие errors?
Автор: djoninet
Дата сообщения: 20.12.2009 11:34
ну я пыталась чтоб из поля "НазываниеВыставки " в форме данные добавились в одноименное поле в табл........... ииииии это не работает, ему не нравиться обновление Update
Автор: dneprcomp
Дата сообщения: 20.12.2009 21:45
djoninet
И какая именно ошибка выскакивает. Лучше показать скрин.
Для этого можно использовать http://imageshack.us/

1. Существует ли в table поле "НазваниеВыставки" ?
2. Какой data type имеет поле "НазваниеВыставки" ? Может в него нельзя вносить string.
3. Мoжно попробовать заменить всю кирилицу на нормальные английские буквы.
4. Может быть програма путает имя контрола и имя пoля. Сделать разными.
Автор: Vilerius
Дата сообщения: 22.12.2009 08:19
Подскажите, ПОЖАЛУЙСТА, как считывать название поля из готовой таблицы? Хочу сделать добавление записей через inputbox, чтобы в окне было написано "Введите значение в поле "Код"", где "код" или какое-нибудь другое имя поля считывалось бы из таблицы. И ещё такой вопрос, если всё таки можно как-нибудь считать название всех полей таблицы - как потом в них помещать вводимые через inputbox значения? можно ли через:
.AddNew
."переменная, в которую помещается имя поля" = "значени, которое вводит пользователь"
Автор: dneprcomp
Дата сообщения: 22.12.2009 09:03
Vilerius
http://www.codeguru.com/forum/showthread.php?s=&threadid=219871&highlight=fieldname
http://www.codeguru.com/forum/archive/index.php/t-243620.html
http://forums.techguy.org/business-applications/526520-solved-getting-field-names-tables.html
Автор: Vilerius
Дата сообщения: 22.12.2009 09:12
dneprcomp

Спасибо!) наконец-то меня кто-то услышал)

Автор: Vilerius
Дата сообщения: 22.12.2009 15:15
dneprcomp

Я посмотрел ваши ссылки, и в принципе понял как это реализовать, только не знаю как это прописывать... Вы не могли бы привести мне простейший пример кода, который позволит добавлять запись в таблицу через inputbox, по отдельности задавая данные в каждое поле. При чём имя поля будет показываться пользователю в окне inputbox, чтобы он знал куда вводит данные?

Пожалуйста помогите... очень хочется реализовать, но не знаю как)
Автор: dneprcomp
Дата сообщения: 22.12.2009 19:39
Vilerius
Для начала можно попробовать вместо

Код: SELECT CusID, CusCompany, CusAccountNo
FROM tblCustomers
WHERE CusID = 1
Автор: Vilerius
Дата сообщения: 22.12.2009 22:58
dneprcomp

Честно, не понимаю, что вы имеете ввиду. Я плохо знаком с Vba. Посмотрите, пожалуйста, фрагмент моего кода и подскажите как правильно зациклить добавление записей:

Private Sub Кнопка1_Click()

Dim Rst As Recordset
Dim f As Field

tabl_name = InputBox("Введите название таблицы, в которую хотите добавить данные", "Добавление данных", "Имя_таблицы")

Set Rst = CurrentDb.OpenRecordset(tabl_name)

For Each f In Rst.Fields

Ndan = InputBox("Введите данные для поля " & f.Name, "Добавление данных", "Введите данные")

n = f.Name


Rst.AddNew
f.Value = Ndan
Rst.Update


Next
Rst.Close

MsgBox "Все данные успешно добавлены!", vbOKOnly, "Добавление данных"
End Sub


С данным вариантом кода данные вводятся только в первое поле, а потом выдаёт ошибку.
Автор: dneprcomp
Дата сообщения: 22.12.2009 23:40
Vilerius

Цитата:
С данным вариантом кода данные вводятся только в первое поле, а потом выдаёт ошибку
И правильно делает
Изменения разрешаются командой AddNew для всех полей добавляемого рекорда. После Update рекорсет закрыт для добавлений.
Т.о., если надо произвести добавлениe с изменением нескольких полей, надо присваивать данные всем нужным полям до исполнения команды Update
Код: Dim Rst As Recordset
Dim f As Field

tabl_name = InputBox("Введите название таблицы, в которую хотите добавить данные", "Добавление данных", "Имя_таблицы")

Set Rst = CurrentDb.OpenRecordset(tabl_name)

Rst.AddNew

For Each f In Rst.Fields

Ndan = InputBox("Введите данные для поля " & f.Name, "Добавление данных", "Введите данные")

n = f.Name

f.Value = Ndan

Next

Rst.Update
Rst.Close

MsgBox "Все данные успешно добавлены!", vbOKOnly, "Добавление данных"
Автор: Vilerius
Дата сообщения: 22.12.2009 23:54
dneprcomp

А подскажите, пожалуйтста, как это реализовать: "присваивать данные всем нужным полям"?
Автор: dneprcomp
Дата сообщения: 23.12.2009 02:14
Vilerius

Цитата:
А подскажите, пожалуйтста, как это реализовать

Попробуй использовать мой код
Автор: Vilerius
Дата сообщения: 23.12.2009 02:21
Извините) я сразу не заметил разницы) теперь вижу. сейчас буду пробывать...
Автор: Vilerius
Дата сообщения: 23.12.2009 17:00
dneprcomp

Спасибо огромное!!! Всё работает) но теперь у меня появились другие вопросы)

1) Когда создаю таблицу или удаляю - в окне объектов она появляется или исчезает только после сохранения базы. Как это можно исправить.

2)Преподаватель потребовал сделать так, чтобы при открытии базы сразу вылетала форма без окна асcess, при этом, чтобы был запоролен доступ к редактированию кода и к конструктору тоже.... может быть и в этом вы сможете мне помочь

Большое спасибо, что помогаете)
Автор: dneprcomp
Дата сообщения: 23.12.2009 19:42
Vilerius
#1 Покажи скрин в котором появляется таблица
Для показа скрина используй http://imageshack.us/
После аплоада файла скопируй ссылку для форумов и помести сюда
#2
http://www.google.com/search?hl=en&source=hp&q=ms+access+login+form&aq=0&oq=ms+access+log&aqi=g10

http://www.google.com/search?hl=en&source=hp&q=ms+access+hide+database+window&aq=0&oq=ms+access+hide&aqi=g10

http://www.google.com/search?hl=en&source=hp&q=ms+access+password+protect&aq=2&oq=ms+access+password&aqi=g10

Страницы: 1234567891011121314151617

Предыдущая тема: Delphi+ADO


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.