Modificar datos en tabla desde formulario independiente.

Tengo un formulario independiente (FAltas), con 3 botones (Altas, Bajas, Modificacion). Con el botón Altas y Bajas no tengo ningún problema, pero con el que tengo problemas es con el de modificación. Os comento lo que tengo realizado por si me podéis ayudar u orientar. Tengo insertado en el formulario un cuadro combinado (selEtilometro), y en el origen de fila tengo la siguiente instrucción: SELECT [TEtilometro].[NUMSERIE] FROM TEtilometro; . Cuando selecciono un dato en el cuadro combinado me muestra el registro en el formulario, con la siguiente instrucción:

Form!NUMSERIE.value = DLookup("[NUMSERIE]", "TEtilometro", "NUMSERIE=Form!selEtilometro.value") Form!VERSION.value = DLookup("[VERSION]", "TEtilometro", "NUMSERIE=Form!selEtilometro.value")

Form!MARCA.value = DLookup("[MARCA]", "TEtilometro", "NUMSERIE=Form!selEtilometro.value")

Form!FEXPEDICION.value = DLookup("[FEXPEDICION]", "TEtilometro", "NUMSERIE=Form!selEtilometro.value") Form!VALIDEZ.value = DLookup("[VALIDEZ]", "TEtilometro", "NUMSERIE=Form!selEtilometro.value")

Hasta aquí todo correcto. Ahora lo que deseo es modificar dos datos en concretos que serian FEXPEDICION Y VALIDEZ (datos tipos fecha), que tendría que hacer para poder modificar dichos datos y que me los guardara en la tabla.

Ahora lo que tengo puesto es la siguiente instrucción y lo que me hace es insertar un nuevo registro en la tabla y lo que deseo es modificar dos datos en concretos.

DoCmd. RunSQL "Insert Into TEtilometro(FEXPEDICION, VALIDEZ) Values(Form!FEXPEDICION, Form!VALIDEZ)"

2 respuestas

Respuesta
2

En lugar de una cadena "Insert into...", pasa una cadena "Update..." al select del registro que quieres tocar

Veo que lo haces por código. Para estructurarlo y hacerlo más fácil:

- Declara la variable strSQL como cadena para construir el SQL que le vas a pasar a DoCmd. RunSQL

- Construye esa cadena por pasos con los valores de los campos: su correspondiente Dim ValDate as string, etc... La cadena strSQL irá tomando forma poco a poco "UPDATE..." Para esto te aconsejo que te hagas la consulta update en modo diseño y luego la veas en modo SQL, copias, pegas y modificas en el módulo

- Cuando tengas tu cadena strSQL construida se la pasas al DoCmd

Como consejo: Cuando te funcione correctamente pon un DoCmd.SetWarnings false antes y un DoCmd.SetWarnings true después. Así actualizará de modo silencioso

Si tienes los valores de los campos del registro que has tocado: actuliza el formulario

Muchísimas gracias a los dos, tanto a dytcdo como a Icue González, por la ayuda prestada. Al final esta es la instrucción que me funciona.

Dim miSql As String

miSql = "UPDATE TEtilometro SET FEXPEDICION = [Form]![FEXPEDICION],VALIDEZ = [Form]![VALIDEZ] WHERE NUMSERIE = Form!selEtilometro "

DoCmd.SetWarnings False

DoCmd.RunSQL miSql

DoCmd.SetWarnings True

MsgBox "Actualización realizada correctamente", vbInformation, "Modificación"

Saludos y nuevamente gracias

Respuesta
1

En el formulario modifica los valores en los cuadros de texto y, en un botón de comando, por ejemplo, tienes que poner

Docmd.runsql"updateTEtilometro set expedición='" & me.expedicion & "', validez='" & me.validez & "' where numserie= " & me.seletilometro " & ""

Si expedición es un valor de texto déjalo como lo he puesto. Si fuera numérico ponlo como

 " & me.expedicion & "

Lo mismo para los demás

Muchísimas gracias a los dos, tanto a dytcdo como a Icue González, por la ayuda prestada. Al final esta es la instrucción que me funciona.

Dim miSql As String

miSql = "UPDATE TEtilometro SET FEXPEDICION = [Form]![FEXPEDICION],VALIDEZ = [Form]![VALIDEZ] WHERE NUMSERIE = Form!selEtilometro "

DoCmd.SetWarnings False

DoCmd.RunSQL miSql

DoCmd.SetWarnings True

MsgBox "Actualización realizada correctamente", vbInformation, "Modificación"

Saludos y nuevamente gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas