
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
![]() | Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
![]() |
|
|
Возможно кому-то мой вопрос покажется глупым, но я в Аксессе ни бум бум, поэтому спрашиваю.
Вот код главной кнопочной формы некоторой БД, опять же не знаю какая часть кода относится к моему вопросу, поэтому выкладываю полностью. ------------------------------------------------------------------------------------------ ![]() ![]() Option Compare Database Private Sub Form_Open(Cancel As Integer) ' Minimize the database window and initialize the form. ' Move to the switchboard page that is marked as the default. Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'По умолчанию' " Me.FilterOn = True End Sub Private Sub Form_Current() ' Update the caption and fill in the list of options. Me.Caption = Nz(Me![ItemText], "") FillOptions End Sub Private Sub FillOptions() ' Fill in the options for this switchboard page. ' The number of buttons on the form. Const conNumButtons = 8 Dim con As Object Dim rs As Object Dim stSql As String Dim intOption As Integer ' Set the focus to the first button on the form, ' and then hide all of the buttons on the form ' but the first. You can't hide the field with the focus. Me![Option1].SetFocus For intOption = 2 To conNumButtons Me("Option" & intOption).Visible = False Me("OptionLabel" & intOption).Visible = False Next intOption ' Open the table of Switchboard Items, and find ' the first item for this Switchboard Page. Set con = Application.CurrentProject.Connection stSql = "SELECT * FROM [Switchboard Items]" stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID] stSql = stSql & " ORDER BY [ItemNumber];" Set rs = CreateObject("ADODB.Recordset") rs.Open stSql, con, 1 ' 1 = adOpenKeyset ' If there are no options for this Switchboard Page, ' display a message. Otherwise, fill the page with the items. If (rs.EOF) Then Me![OptionLabel1].Caption = "На странице кнопочной формы нет элементов" Else While (Not (rs.EOF)) Me("Option" & rs![ItemNumber]).Visible = True Me("OptionLabel" & rs![ItemNumber]).Visible = True Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText] rs.MoveNext Wend End If ' Close the recordset and the database. rs.Close Set rs = Nothing Set con = Nothing End Sub Private Function HandleButtonClick(intBtn As Integer) ' This function is called when a button is clicked. ' intBtn indicates which button was clicked. ' Constants for the commands that can be executed. Const conCmdGotoSwitchboard = 1 Const conCmdOpenFormAdd = 2 Const conCmdOpenFormBrowse = 3 Const conCmdOpenReport = 4 Const conCmdCustomizeSwitchboard = 5 Const conCmdExitApplication = 6 Const conCmdRunMacro = 7 Const conCmdRunCode = 8 Const conCmdOpenPage = 9 ' An error that is special cased. Const conErrDoCmdCancelled = 2501 Dim con As Object Dim rs As Object Dim stSql As String On Error GoTo HandleButtonClick_Err ' Find the item in the Switchboard Items table ' that corresponds to the button that was clicked. Set con = Application.CurrentProject.Connection Set rs = CreateObject("ADODB.Recordset") stSql = "SELECT * FROM [Switchboard Items] " stSql = stSql & "WHERE [SwitchboardID]=" & Me![SwitchboardID] & " AND [ItemNumber]=" & intBtn rs.Open stSql, con, 1 ' 1 = adOpenKeyset ' If no item matches, report the error and exit the function. If (rs.EOF) Then MsgBox "Ошибка при чтении таблицы Switchboard Items." rs.Close Set rs = Nothing Set con = Nothing Exit Function End If Select Case rs![Command] ' Go to another switchboard. Case conCmdGotoSwitchboard Me.Filter = "[ItemNumber] = 0 AND [SwitchboardID]=" & rs![Argument] ' Open a form in Add mode. Case conCmdOpenFormAdd DoCmd.OpenForm rs![Argument], , , , acAdd ' Open a form. Case conCmdOpenFormBrowse DoCmd.OpenForm rs![Argument] ' Open a report. Case conCmdOpenReport DoCmd.OpenReport rs![Argument], acPreview ' Customize the Switchboard. Case conCmdCustomizeSwitchboard ' Handle the case where the Switchboard Manager ' is not installed (e.g. Minimal Install). On Error Resume Next Application.Run "ACWZMAIN.sbm_Entry" If (Err <> 0) Then MsgBox "Команда недоступна." On Error GoTo 0 ' Update the form. Me.Filter = "[ItemNumber] = 0 AND [Argument] = 'По умолчанию' " Me.Caption = Nz(Me![ItemText], "") FillOptions ' Exit the application. Case conCmdExitApplication CloseCurrentDatabase ' Run a macro. Case conCmdRunMacro DoCmd.RunMacro rs![Argument] ' Run code. Case conCmdRunCode Application.Run rs![Argument] ' Open a Data Access Page Case conCmdOpenPage DoCmd.OpenDataAccessPage rs![Argument] ' Any other command is unrecognized. Case Else MsgBox "Неизвестная команда." End Select ' Close the recordset and the database. rs.Close HandleButtonClick_Exit: On Error Resume Next Set rs = Nothing Set con = Nothing Exit Function HandleButtonClick_Err: ' If the action was cancelled by the user for ' some reason, don't display an error message. ' Instead, resume on the next line. If (Err = conErrDoCmdCancelled) Then Resume Next Else MsgBox "Ошибка при выполнении команды.", vbCritical Resume HandleButtonClick_Exit End If End Function Теперь суть вопроса: допустим я хочу изменить действие выполняемое при нажатии на одну из кнопок. Если к примеру в VB я пишу: Баттон1_клик() Действия операторы и тд энд саб То как это написать тут? Кнопки не имеют имен, и я никак не могу понять как к ним обратиться! Ну то есть имена у кнопок конечно есть, при запуске БД. как я понял они берутся из странной хитрой таблицы случайно обнаруженной мною, вот как она выглядит: ![]() Обращение к этой таблице в коде видно, но как все-таки все это работает? Подскажите где искать! Заранее спасибо! |
![]() |
Сообщ.
#2
,
|
|
Цитата SGY @ Кнопки не имеют имен Неправда. Имеют. Цитата SGY @ я в Аксессе ни бум бум Откройте Аксесс. Вызовите справку. Откройте её оглавление. и читайте - начиная с раздела "Начало работы в Microsoft Access для пользователей, не имеющих навыков работы с базами данных". А когда будете "бум-бум" - милости просим. PS. Ответ на заданный вопрос там, в справке, тоже есть. |
Сообщ.
#3
,
|
|
|
Akina При всем уважении, не надо мне читать мораль типа возьми и разберись сам на форуме где люди только и делаю что спрашивают друг у друга как сделать то или это. Или вы всем и каждому пишете одно и тоже вводное сообщение?
Я задаю тут вопрос только потому что время на его решение очень ограниченно и мне кажется что человек хорошо знающий Аксесс или ВБА (Например как ВЫ, раз Вы точно знаете ответ и даже где он находится в справке) смог бы достаточно легко ответить на него. Или хотя бы просто дать ссылку на его решение. Это было бы даже намного быстрее чем вы писали то что писали. =) А на счет справки, я там смотрел, нашел только как добавить и удалять кнопки, и выбирать для них макрос, а меня интересует именно как обратиться к кнопкам при помощи рукописного кода, я специально написал пример: Цитата Если к примеру в VB я пишу: Баттон1_клик() Действия операторы и тд энд саб То как это написать тут? Кнопки не имеют имен, и я никак не могу понять как к ним обратиться! |
![]() |
Сообщ.
#4
,
|
|
Открой Аксесс
Загрузи базу данных Открой вкладку Формы Выбери нужную форму Открой её в режиме конструктора Выдели на ней любую кнопку Открой окно свойств кнопки Выбери вкладку Другие Найди строку Имя Цитата SGY @ Или вы всем и каждому пишете одно и тоже вводное сообщение? Только тем, кто задаёт ТАКИЕ вопросы. |
Сообщ.
#5
,
|
|
|
Цитата Открой окно свойств кнопки Выбери вкладку Другие Найди строку Имя Вот за это спасибо! Теперь я вижу что Вы действительно хотели мне помочь. =) ЩА что-нить покумекаю! Сорри если резко вам ответил просто это нервы и нехватка времени! |