Valor de una variable como instrucción

¿Cómo puedo ejecutar el valor de una variable? Ejemplo.
Tengo un campo [DNI], un cuadro de texto: txtdni1="12345678", una variable f="txtdni1".
Cuando hago dni = f  se asigna al campo dni en valor de "txtdni1" en cual debe asignar ="12345678".
En Fox creo que era algo asi dni = &f pero en vb (access) ¿como es?

1 Respuesta

Respuesta
2

Para asignar a una variable el valor de un cuadro de texto, tienes que pasarle el nombre del control (cuadro de texto), pero sin comillas, pues si lo haces así, le estás pasando un valor de tipo texto.

En tu caso, para asignarle el valor a la variable, harías:

f=Me.txtdni1

(El Me. Es para indicar que es un control del formulario/informe en el que te encuentras, aunque se puede obviar, yo siempre lo uso)

Y para pasar el valor de la variable al campo DNI (suponiendo que en el formulario/informe tenga ese mismo nombre):

Me.DNI=f

Ante todo, Muchas Gracias por tu tiempo.
Muy buena tu aclaración, el detalle esta en que en mi formulario tengo que ingresar 10 registros de una vez (por 14 campos son 140 cuadros de texto: txtnombre1, txtnombre2, ...    txtnombre10; txtdni1, txtdni2... txtdni10, txtdato1...txtdato10...etc).

Para lo cual pensé en un BOTÓN Guardar y un código que tenga un FOR
algo así

For  i = 0 to 10
       i = i + 1
       f = "txtnombre" + str(i)
       Me.nombre = f 
       f = "txtdni" + str(i)
       Me.dni = f 
       ...
       DoCmd.GoToRecord , , acNewRec

 Next i    

Me.Refresh  
En este caso ¿Como concateno "txtdni" con "i"?

Lo más sencillo sería que encadenaras SQL para anexar datos:

Dim i As Integer
Dim miSQL As String
DoCmd.SetWarnings False  'Desactivas los avisos de confirmación de Access
For i = 1 To 10  
'Construyes la SQL para cada valor de i
    miSQL = "INSERT INTO NombreTaba (Nombre, DNI ...) VALUES ('" & Me.Controls("txtNombre" & i) & "','" & Me.Controls("txtDNI" & i) & ....& "')"
    DoCmd.RunSQL miSQL  'Ejecutas la SQL para insertar los datos en la tabla
Next i
DoCmd.SetWarnings True  'Activas los avisos de nuevo
'Este For...Next es para limpiar los cuadros de texto
For i = 1 To 10
    Me.Controls("txtNombre" & i) = Null
    Me.Controls("txtDNI" & i) = Null
Next i

Consideraciones:

1º/ Has de cambiar NombreTabla por el nombre de tu tabla donde quiereas guardar los registros. Si el nombre lleva espacios, guiones... debe ir entre corchetes, por ejemplo: [Ventas Productos], [Compras-Libros]

2º/ Has de añadir el resto de campos donde van los puntos suspensivos

3º/ A la hora de asignar los valores, has de tener en cuenta que si son datos de tipo texto, han de ir entre comillas simples ('" & elValor & "'), si son de fecha, han de ir entre almohadillas y con formato americano ( #" & Format(elValor,"mm/dd/yyyy") & "# ), y si son numéricos, se pasan directamente

http://www.aulaclic.es/sql/t_6_1.htm 

4º/ Fíjate en cómo hago referencia a los distintos cuadros de texto: Me. Controls("parte fija del nombre" & parte variable)

Te adjunto un mini-ejemplo:

http://www.filebig.net/files/f76G9y2KWq 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas