VBA para tirar informações de caixas de texto e inserindo na tabela
-
13-09-2019 - |
Pergunta
Então, eu tenho um formulário de entrada que deseja usar para atualizar uma tabela com certos campos de informações. Tenho a identificação do registro que vem automaticamente em uma caixa de texto. Eu tenho três caixas de texto que eu preciso adicionar a tabela (excluindo o ID) em um clique de botão.
Name Date Method
são os nomes de campo.
As_Name As_Date As_Method
são os nomes de caixa de texto
O nome da tabela é POC
, eo ID é POC_ID
(seu um autonumber).
Então eu não quero esses objetos (caixas de texto) para ser ligado à mesa, porque isso é um pouco formulário separado "pop-up" que vem de uma forma que a mesa, e eu só quero a entrada para ser relativo ao POC_ID que já está selecionada através da forma original.
Então, como faço para escrever o VBA para que isso 1) certifique-se de que os registros não existirem .... 2) atualizar os campos (listado acima) com a entrada de dados das caixas de texto (listadas acima). Eu quero ser capaz de usar isso com um clique de botão ....
EDIT:
na verdade, é uma mesa não dois; i tem duas formas que eu quero ser capaz de enviar informações para a mesma tabela (informações diferentes embora). este db já foi construído por alguém e sei que tenho sido deamed para assumi-la.
Eu preciso adicionar um segundo pouco pop-up forma para obter informações adicionais a ser adicionado com base em novos requisitos (não há literalmente nenhum onde para eu colocar isso na outra). Já fiz isso, e usou uma abordagem objeto sugerido para referenciar as primeiras formas (a partir do qual este segundo "pop-up" de formulário brota) para adicionar os campos id relativos. Agora eu tenho esta segunda pouco pop-up forma que apenas pediu três valores a serem inseridos (que são os listados acima).
Eu simplesmente não sei como vincular a caixa de texto, com um campo de modo que uma vez que um usuário entra na informação, cliques "salvar" ele salva as informações para a mesa em relação ao tripId que está lá (mencionado acima). a única maneira que eu sei como obter as caixas de texto para salvar dados para a tabela é usar o construtor / assistente quando eu criar um novo.
Gostaria de aprender a vincular um objeto (caixa de texto, a CMB, lista) etc em um formulário, a uma tabela com um método "On Click" para que eu possa usar um botão Salvar. Basicamente é isso!
Solução
Ainda não tenho certeza eu entendo a sua situação, mas deixe-me oferecer o esboço de uma resposta. Se a minha exposição não é perto o suficiente, por favor, explicar onde andava errado.
O seu formulário pai, frmParent, tem um botão de comando (cmdMoreFields) que abre o formulário filho (frmChild), onde irá inserir valores para 3 campos adicionais no registro exibido em frmParent. Depois que o usuário entra esses valores em frmChild (em controles de caixa de texto chamado As_Name, As_Date e As_Method), ela vai clicar em um botão de comando (cmdSave) para armazenar esses valores para campos (nome, data e Método) em POC mesa, e perto frmChild. Além disso, frmParent inclui uma caixa de texto (txtPk_field), que contém o valor para a chave primária (pk_field campo no POC tabela) do registro atual.
No entanto, eu não tenho certeza de qual campo / controle que você está usando para txtPk_field, e duvido que o valor está disponível se o registro atual ainda não foi salvo. Então, eu vou sugerir este código para os cmdMoreFields "no clique" evento:
If Me.Dirty Then Me.Dirty = False
DoCmd.OpenForm "frmChild"
No caso de "no clique" de cmdSave (em frmChild), tente um código semelhante a:
Dim strSql As String
strSQL = "UPDATE POC SET [Name] = """ & Me.As_Name & """, [Date] =#" _
& Me.As_Date & "#, Method = """ & Me.As_Method & """ WHERE pk_field = " _
& Forms!frmParent.txtPk_field & ";"
Debug.Print strSql
CurrentDb.Execute strSql, dbFailOnError
DoCmd.Close
Se isto funcionar abordagem, considere passando o valor pk_field para frmChild com AbrirArgs, como Remou sugeriu.
Nota: eu assumi o tipo de dados para o nome é texto, data é a data / hora e Método é texto. Você vai ter que mudar os delimitadores instrução UPDATE para todos os campos cujos tipos de dados diferem dos meus palpites.
Outras dicas
O método OpenForm de DoCmd permite vários argumentos, incluindo onde e AbrirArgs. Você pode tirar proveito destes.
No entanto, algo parece ser bastante errado com seu design da tabela em que você parece estar segurando as mesmas informações em duas tabelas e sem motivo declarado. Você já leu http://www.r937.com/relational.html ?
Gostaria de sugerir que o desenho que você precisa provavelmente só inclui um POC_ID campo numérico que é uma chave estrangeira para a tabela principal.