Elegir tabla para guardar registros

Tengo un formulario en Access 2013 común para todas las tablas.

No tiene origen de registro ni los campos origen de control.

Estoy intentando guardar los datos mediante un botón el cual he puesto el siguiente código.

 Dim TFamilia As String

TFamilia = Fam

DoCmd.RunSQL "Insert Into TFamilia  (Reparacion) Values (Form!reparar)"

DoCmd. RunCommand acCmdSaveRecord

DoCmd.SetWarnings False

      MsgBox "Agregado Correctamente"

El campo Fam es una lista despegable con todas las tablas que tengo.

Lo que intento es que la función insert into lea el valor de TFamilia para guardar los datos en la tabla seleccionada.

He probado y buscado y ya no sé qué más hacer.

No sé si se podrá hacer esto.

1

1 respuesta

Respuesta
2

La primera pregunta que me surge es ¿Para qué definir una variable que va a ser igual a un control del propio formulario?

Basta con poner

DoCmd.SetWarnings False
DoCmd.RunSQL "Insert into " & Fam.Value & "(reparacion)values(reparar)"

Con imágenes. Por ejemplo, diseño de tabla Otra

Si en el formulario, elijo por ejemplo, Otra y en el cuadro de texto pongo Acierto( y pulso Enter)

La tabla Otra me queda

Buenos días.

En primer lugar gracias por tu respuesta y ayuda.

La variable la puse como prueba para ver si recogía el valor de Fam.

Funciona correctamente. 

mil gracias por tu ayuda.

Un saludo

Hola de nuevo, disculpa mi ignorancia.

Si el nombre de la familia lleva espacio, ejemplo: neumáticos 2017 solo funciona si pongo _

¿Se podría hacer que funcione con el espacio?

Gracias por la ayuda.

Permíteme un consejo, no llames nunca a los campos, controles, objetos, etc con nombre separados, ya que en código tienes que estar encerrándolo entre corchetes. En tu caso basta con ponerlo

DoCmd.RunSQL "insert into [" & Me.fam.Value & "](reparacion)values(Reparar)"

Ufff, muchisimas gracias por todo. 

yo me lio mucho con los "" & [] 

Si no te importa que te haga otra pregunta. 

Tengo el formulario para meter los datos. 

en el campo familia he puesto un botón para crear la familia que me abre otro formulario.

En ese he puesto un cuadro de texto donde pongo el nombre de la familia y un botón que guarda y crea la tabla copiando desde una plantilla base.

DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRecordsGoToNew

DoCmd.CopyObject , "Lunas", acTable, "Plantilla"


DoCmd.Close acForm, "Familias"

lo que no consigo es que el código me lea el valor del campo familia.

Un saludo y gracias de verdad.

Honestamente, me he perdido. No sé si te refieres a que tengas una tabla Familias como la de la imagen

Observa que Ucrania no está. Y que tenga un formulario donde utilizo un combinado como buscador

Si escribo Ucrania, como no está en la lista, al pulsar enter

Si pulso Sí

Doy de "alta" Ucrania

Y cuando cierre el formulario Familias, en el combinado ya me "acepta" Ucrania.

En el combinado, al que he llamado Elegir, le tenía puesto que Limitar a la lista=Si y en el evento Al no estar en lista

No sé si es eso a lo que te refieres.

Hola

mas o menos es parecido. 

yo tengo una tabla que se llama familias, la cual uso para leer y almacenar los nombres.

luego, tengo una tabla base que se llama plantilla con los campos producto, reparación y precio.

tengo un formulario entrada servicio con los campos producto, reparación y precio y un campo de lista que lee la tabla familias.

al lado del campo familia tengo un botón para abrir un formulario para añadir nueva familia.

en este formulario tengo el campo nombre y el botón crear

la función del botón seria añadir a la tabla familias el nombre y al mismo tiempo crear una copia de la tabla base plantilla y renombrar con el nombre del campo nombre.

esto lo hago porque para cada familia tengo una tabla distinta. pero todas tienen los mismos campos.

gracias por tu tiempo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas