Macro para excluir um registro de um subformulário?

Oi pessoal preciso de ajuda.

Tenho um form e no modo design acoplei um controle chamado “controle de Tabela” ( grid control ), que apresenta os registros de uma tabela ou consulta em um formato tabular dentro de um formulário.

Nele eu associei uma consulta sem vincular campos com o formulário principal.

Eu queria criar um botão excluir que apagasse o registro selecionado na grid, mas não sei como fazer

No “navegador de formulários” a grid fica dentro de um subformulário criado automaticamente quando se acopla o objeto gridcontrol esse subformulário chama-se Subform.

Não consigo fazer referência a esses controles, na documentação do access2base tá confuso referenciar a um controle de um subformulário, alguém pode me explicar detalhadamente?

Eu queria criar um botão excluir que
apagasse o registro selecionado na
grid, mas não sei como fazer

É possível criar este botão excluir sem usar macro. O controle botão de pressão vem com algumas ações disponíveis. Uma delas, inclusive, permite excluir o registro atual (selecionado) do form ou subform onde o controle se encontra.

Para funcionar corretamente, é preciso certificar-se no Navegador de Formulários que o botão “excluir” esteja dentro do subformulário desejado . Depois, clique com o botão direito nele. E na janela propriedades, use a barra de rolagem para chegar na propriedade Ação e escolha “Excluir registro”.

Descrição da imagem

Não consigo fazer referência a esses
controles, na documentação do
access2base tá confuso referenciar a
um controle de um subformulário,
alguém pode me explicar
detalhadamente?

Realmente é confuso, pois, pelo que entendi, o framework Access2Base não suporta a hierarquia de formulários do Base. Ao invés disso, trata os subformulários como controles comuns dentro de um formulário. Então, primeiro é preciso acessar o subform como um controle (método Controls) e depois invocar sua propriedade Form:

Sub ValorColunaSF
Dim oForm as Object, oSubForm As Object, oColuna As Object
Dim ValorCol As String


	'Form
	oForm = Forms( "Form1" )
	'SubForm
	oSubForm = oForm.Controls( "SubForm" ).Form
	'Coluna (campo) do Controle Tabela do SubForm
	oColuna = oSubForm.Controls( "SubForm_Grid" ).Controls( "Nome" )
	'Valor atual (selecionado) da coluna (campo)
	ValorCol = oColuna.Value
	
	Print oColuna.Name & ": " & ValorCol
End Sub

Atte,
Grafeno

Oi Grafeno…

Muito obrigado pela dica, depois de muito penar também consegui um código que funciona, mas sua explicação detalhada vem muito a calhar e ajudará muitos outros, nem sabia desse campo “ação” de um botão e isso vai facilitar muito, a forma como vc dá prints na tela e organiza a resposta também é digna de elogios.
Segue abaixo outra forma de se fazer um botão excluir:

    
Sub btn_excluir

Dim Form1, SubForm_1, oConsulta, cmb_codhw, cmb_softw, cons_subtab, txtM, txtS As Object, sSQL As String

Set Form1=Forms("frm_licenca")
Set SubForm_1 = Form1.Controls("Subform") ' Trata o subform como um controle
Set cons_subtab = SubForm_1.form.Controls("Controle_de_tabela_1") ' também pode usar essa sintase
Set txtM = cons_subtab.Controls("TextField1") ' campos (colunas) do grid
Set txtS = cons_subtab.Controls("TextField2") 'idem
Set cmb_codhw=Form1.Controls("txtMicro")
Set cmb_softw=Form1.Controls("txtSoftware")
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("cons_subtab_licenca")

sSQL = ("DELETE FROM `c06`.`tab_licenca` WHERE `cod_hw` = '" & txtM.Value & "' AND `software` = '" & txtS.Value & "';") ' deleta da tabela o valor dos campos do registro selecionado e mais a frente atualiza o form

RunSQL(sSQL)

cmb_softw.Value=""

Form1.Requery

Muito obrigado Graffeno, pelo tempo dispendido em ajudar, vejo que é um dos que mais colaboram aqui.

Luiz Carlos

@LuizCarlos18RJ, é sempre um prazer ajudar. Obrigado pelo retorno (feedback).