Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access

Модерирует : ShIvADeSt

ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожайлуста! У меня есть форма "Общая".  В ней список (Список423). Я хочу, чтобы при нажатии на этот список у меня открывается форма Данные, в которой надо выбрать необходимое действие. Но когда я выбираю в форме Данные любой из Case, у меня исчезают данные из списка (становятся невидимыми). Как сделать так, чтобы данные из списка не исчезали? Код такой при нажатии на список:
Private Sub Список423_Click()
     Dim strMessage As String
     Dim intOptions As String
     Dim bytChoice As String
     
    strMessage = "В следующем окне выберите необходимое действие"
    intOptions = vbQuestion + vbYesNo
    bytChoice = MsgBox(strMessage, intOptions)
     
           If bytChoice = vbYes Then
           DoCmd.OpenForm "Данные", , , , , acDialog
           End If
End Sub
А в форме Данные такой:
Private Sub Кнопка6_Click()
       
       Select Case Группа11
       
       Case 1
            DoCmd.OpenForm "ДобавлениеСотрудника", , , , , acDialog
           
       Case 2
            DoCmd.OpenForm "ИзменениеДанных", , , , , acDialog
             
       Case 3
            DoCmd.OpenForm "ОбновлениеДанных", , , , , acDialog
           
       Case 4
             Dim strMessage As String
             Dim intOptions As String
             Dim bytChoice As String
     
             strMessage = "Вы действительно хотите удалить из базы данного сотрудника?"
             intOptions = vbQuestion + vbYesNo
             bytChoice = MsgBox(strMessage, intOptions)
     
             If bytChoice = vbYes Then
             УдалитьДанные
             Forms!Общая.Список423.Requery
             End If
             
       End Select
       'DoCmd.Close acForm, Me.Name
End Sub
 
Private Sub УдалитьДанные()
 
            Dim База1 As Object, Работник As Object
            Set База1 = CurrentDb
            Set Работник = База1.OpenRecordset("Работник", dbOpenDynaset)
            With Работник
            .FindFirst "[КодРаботник] = " & CStr(Forms!Общая.Список423)
            .Delete
            Forms!Общая.Список423.Requery
            Me.Requery
            .Close
        End With
        Set База1 = Nothing
       
       
End Sub
 
Private Sub Кнопка6_Exit(Cancel As Integer)
Forms!Общая.Список423.Requery
 
End Sub
 

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 21:42 20-10-2008
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
klimusu
Конечно, можно проверять все, что нужно.

Цитата:
 
Select * From Users WHERE (Surname IS NOT NULL) AND (SomethingElse IS NOT NULL)
 

Смотрится запрос, не смотрится - это дело вкуса. Главное - чтобы правильно работал

----------
... не это главное ...

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 12:08 21-10-2008 | Исправлено: MrZeRo, 12:10 21-10-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С предыдущим вопросом справилась сама, так что подсказывать не надо. А кто подскажет по такому вопросу, сколько не бьюсь ничего не получается. У меня в процессе работы базы открывается несколько форм, например, форма1 и форма2.  Как прописать в коде, чтобы после закрытия формы2 закрывалась и форма1?

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 20:03 21-10-2008
Dixi257



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как прописать в коде, чтобы после закрытия формы2 закрывалась и форма1?

В событие закрытия формы2 (Form_Close) вписать docmd.Close acForm , "Форма1"

Всего записей: 128 | Зарегистр. 24-08-2005 | Отправлено: 00:09 22-10-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dixi257
Огромное спасибо. Наконец все заработало.

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 21:04 22-10-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить проблему. У меня в форме Общая есть поле Месяц, Год, список СписокНачислениеЗП, который создан на основе таблицы Начисление2. При выделении в этом списке работника, у меня окрывается форма ДанныеСервис (поля : КодРаботник, Месяц, Год, ДанныеУслуга (это свободные поля) и кнопка КнДобавитьСервис), далее в поле ДанныеУслуга я ввожу любую цифру и после нажатия кнопки КнДобавитьСервис в таблице Начисление2 в поле СтоимостьУслуга должна отобразиться введенная цифра из формы, но конкретно для того месяца и года который выбран непосредственно в форме Общая. Кстати, список также отображает данные Начисления2, соответствующие выбранному месяцу и году в форме Общая. Я написала следующий код:
Private Sub Form_Open(Cancel As Integer)
 
        Forms!Общая.СписокНачислениеЗП.SetFocus
        КодРаботник = Forms!Общая.СписокНачислениеЗП.Column(0)
        ДанныеУслуга = Forms!Общая.СписокНачислениеЗП.Column(11)
        Месяц = Forms!Общая.СписокНачислениеЗП.Column(2)
        Год = Forms!Общая.СписокНачислениеЗП.Column(3)
End Sub
 
Private Sub КнДобавитьСервис_Click()
Dim База1 As Object, Начисление2 As Object
 
    Set База1 = CurrentDb
    Set Начисление2 = База1.OpenRecordset("SELECT [КодРаботник],[Месяц],[Год] FROM Начисление2 WHERE  Месяц = Forms!Общая!Месяц And Год = Forms!Общая!Год")
    With Начисление2
        .FindFirst "[КодРаботник] = " & CStr(Forms!Общая.СписокНачислениеЗП)
        .Edit
        ![СтоимостьУслуга] = ДанныеУслуга
        .Update
       
    End With
    Forms!Общая.СписокНачислениеЗП.Requery
   
    Начисление2.Close
    Set База1 = Nothing
    DoCmd.Close
End Sub
Но при этом выделяет строку Set Начисление2 = База1.OpenRecordset("SELECT [КодРаботник],[Месяц],[Год] FROM Начисление2 WHERE  Месяц = Forms!Общая!Месяц And Год = Forms!Общая!Год") и выдает следующее выражение: Run-Time error 3061 Слишком мало параметров, требуется 2.
Я пыталась эту строку записать так:Set Начисление2 = База1.OpenRecordset("SELECT Начисление2. * FROM Начисление2 WHERE  Месяц = Forms!Общая!Месяц And Год = Forms!Общая!Год"), выдает ту же самую ошибку. Я не знаю в чем проблема. Правда у меня в таблице больше полей, но мне нужно изменить только одно поле СтоимостьУслуга для выделенного работника в списке и чтобы это изменение внеслось в таблицу только за тот месяц и год, котрый выбран в форме Общая.
Может кто подскажет?
 

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 22:39 23-10-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elena3785
expression.OpenRecordset(Name, Type, Options, LockEdit)
 

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 23:08 23-10-2008
Oyger

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, программисты. Такой вопрос.
Работаю с базой из под Excel. Поработал. Закрыл объект.
Но со временем растет размер базы. Надо ее сжать. Это я умею делать из самой базы - руками. А есть ли какая-нибудь команда на сжатие макросом?
Спасибо.

Всего записей: 122 | Зарегистр. 22-03-2007 | Отправлено: 11:04 24-10-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oyger
Excel Best Practices - VBA compact current database
Compact Database via VBA

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 21:06 24-10-2008 | Исправлено: dneprcomp, 21:06 24-10-2008
jackdenis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет Всем!!  
Помогите с небольшой проблемкой. В значении переменной заложен адрес и имя файла(изображения). Надо на форме в элементе "Рисунок" показать изображение которое находится по адресу который в переменной забит.  Огромное спасибо за помощь.

Всего записей: 4 | Зарегистр. 27-10-2008 | Отправлено: 10:52 28-10-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jackdenis
И совершенно незачем было сразу в двух темах спрашивать. Мне теперь как, половину ответа здесь давать, половину там?
Код:
Dim strPath As String
strPath = "C:\1.JPG"
Image1.Picture = LoadPicture(strPath)

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 03:26 29-10-2008
jackdenis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
 
Пробую, но всеравно выдает ошибку - "Run-time error 2220" Приложению ... не удается открыть файл "С:\1.JPEG"  
 
Вот часть кода проги:
 
Private Sub Form_open(Cancel As Integer)
 
 Dim strPath As String
 
    strPath = "C:\1.JPEG"
    img1.Picture = LoadPicture(strPath)
 
 End Sub
 
Может надо что-то изменить в свойствах img1??

Всего записей: 4 | Зарегистр. 27-10-2008 | Отправлено: 10:41 30-10-2008
Dixi257



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На сколько я помню, jpg нельзя загружать, попробуй bmp файлы, или используй внешний ActiveX, который заведомо умеет читать jpg. А действительно, зря в двух местах плодишь одинаковые вопросы.

Всего записей: 128 | Зарегистр. 24-08-2005 | Отправлено: 17:25 30-10-2008
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jackdenis
Действительно, или попробуй другой формат(хотя у меня jpg загружает). Или проверь, существует ли файл 1.jpg на с:\
Попробуй предварительно, можно ли назначить этот файл в проекте в свойствах объекта. Если принимает и отображает, значит и формат подходящий, и файл не испорчен.

Всего записей: 3923 | Зарегистр. 31-03-2002 | Отправлено: 22:54 30-10-2008
jackdenis

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята спасибо за помощь!! Пробую, но не очень получается, еще посижу покумекаю. Пробовал закрепить за элементом img рисунок - все отображается нормально, как только прописываю в коде - пишет что неможет открыть рисунок (

Всего записей: 4 | Зарегистр. 27-10-2008 | Отправлено: 13:45 04-11-2008
A_S_T_E_R_I_X

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите, что можно почитать по использованию VBA в ACCESS,
какие книги самые лучшие?

Всего записей: 2384 | Зарегистр. 17-04-2003 | Отправлено: 18:31 06-11-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как прописать в коде Выделить весь список (Список.SetFocus - выделяет только одну запись) и как потом снять выделение?

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 21:29 09-11-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет по такому вопросу: у меня есть поле Дата, где указывается дата (например, 11.12.2008). Мне нужно, чтобы в поле Месяц отображался месяц из поля Дата, как это прописать в свойстве  Данные поля Месяц?

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 22:00 04-12-2008
A_S_T_E_R_I_X

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elena3785
=MonthName(Month(Date()))
вроде так

Всего записей: 2384 | Зарегистр. 17-04-2003 | Отправлено: 14:57 05-12-2008
Elena3785

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_S_T_E_R_I_X
Спасибо за отзыв. Но это немного не то. Мне нужно именно из поля Дата извлечь месяц, т.к. в этом поле Дата отображаются даты, не соответствующие текущей. скорее всего нужно прописать код в VBA, типа этого:
Dim MyDate, MyMonth
MyDate = str([Дата])
MyMonth = Me!Поле19
MyMonth = Mid(MyDate, 4, 2)
Me!Поле19.Requery
Т.е. в Поле19 должен отобразится месяц
Только это не работает, вот в этом то вся и проблема.
 
Ура! Сделала, чтобы извлекался месяц и год. Надо было так:
Dim d As String
d = Дата.Text
Месяц = Mid(d, 4, 2)
Год = Mid(d, 7, 4)

Всего записей: 24 | Зарегистр. 11-05-2008 | Отправлено: 19:55 05-12-2008 | Исправлено: Elena3785, 20:46 05-12-2008
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VBA for Access
ShIvADeSt (14-09-2011 00:58): Все обсуждение тут http://forum.ru-board.com/topic.cgi?forum=33&topic=0357&start=1180


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru