Grabar registros con Access con VBA

Estoy empezando a diseñar una base de datos en access, y tengo un formulario en blanco con un boton guardar para que me inserte en una tabla los valores de unos registros que están en un cuadro de texto del formulario.

El código es el siguiente:

Private Sub BTGuardar_Click()

If Not IsNull(TxTNumPresupuesto) Then
DoCmd. RunSQL "INSERT INTO TPresupuesto ( IdProyecto, NumPresupuesto )SELECT forms!FormPresupuesto!IdProyecto, forms!FormPresupuesto!TxTNumPresupuesto FROM Registro;", -1
MsgBox "Guardado con exito"

DoCmd.Close acForm, "FormPresupuesto"

Forms![FormProyectos].Refresh
End If

End Sub

El código funciona, el problema es que me crea el registro pero siempre me varia el primer registro de la tabla.

1 Respuesta

Respuesta
1

No entendí la ultima parte "El código funciona, el problema es que me crea el registro pero siempre me varia el primer registro de la tabla."

, ¿Alguna imagen? O explica un poco mejor.

Private Sub Registrate_Click()
If IsNull(Me.UsuarioR) Or IsNull(Me.NombreR) Or IsNull(Me.PassR) Then
    MsgBox "Nombre/Usuario/Contraseña" & vbLf & "Requeridos" & vbLf & vbLf & "Verifique.", vbInformation, "Aviso"
Else
    CurrentDb.Execute "INSERT INTO Login(IdLogin,NombreUsuario,Usuario,Pass) VALUES (" _
                      & Me.IdLoginHidden & " , '" & Me.NombreR & "' , '" & Me.UsuarioR & "' , '" _
                      & Me.PassR & "')", dbFailOnError
    MsgBox "Cuenta Registrada", vbInformation, "Aviso"
    Me.IdLoginHidden = get_Id("IdLogin", "Login")
    Me.NombreR = Null
    Me.UsuarioR = Null
    Me.PassR = Null
End If
End Sub

el codigo anterior es un ejemplo de la manera que yo inserto

El primer registro 1021 de id proyecto, me lo va cambiando cada vez que hago la macro. Pj si envío idProyecto 1032, y numpresupuesto 1032_1. El preimer registro (negro) pasaría a ser 1032, 1_1

Private Sub BTGuardar_Click()
    If Not IsNull(TxTNumPresupuesto) Then
      CurrentDb.Execute " INSERT INTO TPresupuesto(IdProyecto,NumPresupuesto)VALUES ( " & Me.IdProyecto & " , '" & Me.TxTNumPresupuesto & "')", dbFailOnError
      MsgBox "Guardado con exito"
      DoCmd.Close acForm, "FormPresupuesto"
    End If
End Sub

remplaza  este codigo en tu boton de guardar y me avisas 

En la tu tabla tienes que tener el idProyecto como numero y tu numpresupuesto como texto para que funcione

Ok voy a probarlo mañana en el trabajo que es donde tengo access . El idProyecto si lo tengo como numero y numpresupuesto como texto.

Muchasssss gracias, mañana te digo.

Ok. De acuerdo

Buenos días Antonio, he probado tu código y no funciona bien. No se porque graba el registro bien en la tabla presupuesto, pero me cambia el segundo registro, sólo el IdProyecto.

Como puedes ver el segundo registro se grabo como 1019, 1019_1, en cambio ejecuto otra vez la macro con otro idproyecto (el 1018) me graba el registro 1018, 1018_1, pero me cambia el segundo registro a 1018 en el idproyecto. Cuando tendria que ser como se grabo antes 1019_1.

Lo que hace el código que cambia el registro que graba y el registro que estaba grabado. Será porque se tiene que añadir una linea antes?. He probado colocando antes la linea "DoCmd.GoToRecord , , acFormAdd" pero me da error en la linea "

CurrentDb.Execute

De antemano muchas gracias

Buenas otra vez Antonio,

He probado a empezar desde el principio con un formulario en blanco. Y ahora con tu código me ha fucnionado todo correcto. Seguramente había algo que daba el pisar el registro.

Muchas gracias por tu tiempo.

Lo bueno que ya quedo. Si tienes otra duda me dices

Buenas tardes Antonio, sigo con mi diseño de la base de datos para crear presupuestos y tengo un duda y no se como seguir.

Lo que necesito es copiar unos registros de una tabla según un criterio y copiarlos en la misma tabla imponiendole un valor. Me explico

En la tabla TdetallePres (adjunto foto) tengo el código y la cantidad que están asciado a un IdPresupuesto, entonces quiero hacer una versión que me copie todos los registros con el criterio de idpresupuesto por ejemplo "15" (7 registros en total) y los pegue pero con el idpresupuesto que le impongo por ejemplo "19". Es para copiar las líneas de un presupuesto para hacer una versión del anterior.

Esto lo relizaria desde un formulario donde le digo que Idpresupuesto tome com criterio y que idformulario nuevo pegue los registros.

De antemano muchas gracias por ti sabiduría.

Jose M

Supongo que quieres actualizar tu campo IdPresupuesto, mediante un formulario al hacer click en tu botón, que recoja el valor de un texbox y todos tus registros que tengan 15 los remplace por 19.

¿Eso quieres hacer?

Respóndeme y preparo un ejemplo

No que los remplace, sino que los copie todos los que tiene 15, y los cambie a 19 los que ha copiado. En la tabla de ejemplo tenemos 7 registros que están asociado al 15, que copie estos 7 y los agregue a la misma tabla y los cambie a id 19.

Muchas gracias

A ok supongamos que del IdDetalle del 28 al 34

Quedaran los que tienen 15 a 19, ¿también copiando código y cantidad?

Pregunta . ¿Siempre sera el ID 15 el que copiaras o puede variar?

https://drive.google.com/open?id=0B68j-Y3JB-dWWkt4V2tBVzN6enM 

Te anexo el ejemplo

Me avisas si te sirvió o si tienes alguna duda

¡Gracias! 

Efectivamente lo que necesitaba, el id puede variar . Lo adapto a mi formulario.

Millll Gracias !!!!

De nada . Si no es mucho pedir me regalas una suscripción a este canal por favor.

https://www.youtube.com/channel/UCjS6fHbImLyqtrcdHvJLRgg 

¡Gracias! 

Hecho, 

Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas