Cambiar nombre de tabla en instrucción

Tengo un formulario llamado FArticulado, que muestra los datos de un registro filtrado, en el mismo formulario tengo un campo llamado NomTabla, en el cual puede aparecer según el filtro que realice: TCIR, TCON, TVEH, TLSV (son nombres de tablas)

En el mismo formulario tengo un botón (cmdmodificarRegistroOK) para poder modificar algunos datos del registro, con la siguiente instrucción:

Dim miSQL As String

Dim rst As Recordset

CurrentDb.Execute "UPDATE TCIR SET LSV = '" & Replace(Me.LSV, "'", "''") & "',HECHO = '" & Replace(Me.HECHO, "'", "''") & "', " _

                    & "OBSERVACIONES = '" & Replace(Me.OBSERVACIONES, "'", "''") & "',COMENTARIO = '" & Replace(Me.COMENTARIO, "'", "''") & "', " _

                    & "IMPORTE = '" & Replace(Me.IMPORTE, "'", "''") & "',MITAD = '" & Replace(Me.MITAD, "'", "''") & "', " _

                    & "PUNTOS = '" & Replace(Me.PUNTOS, "'", "''") & "',TOTAL = '" & Replace(Me.TOTAL, "'", "''") & "', " _

                    & "CALIFICACION = '" & Replace(Me.CALIFICACION, "'", "''") & "',CALCOD = '" & Replace(Me.CALCOD, "'", "''") & "', " _

                    & "RESPONSABLE = '" & Replace(Me.RESPONSABLE, "'", "''") & "' " _

                    & "WHERE ARTICULO1 = '" & Forms!FCodificado!SubGeneral!ARTICULO1 & "'", dbFailOnError

    MsgBox "Registro Modificado correctamente", vbInformation, "Atención"

La instrucción anterior, me funciona bien, pero lo que quiero es que en vez de TCIR, sustituirlo por Forms! FArticulado! NomTabla (para que me salga el nombre de la tabla), lo he intentado y me sale error 3144, sintaxis instrucción UPDATE.

Me podéis orientar, en cómo debería de plantearlo o si por el contrario para poder modificar algún dato tendría que hacerlo de otra manera.

3 respuestas

Respuesta
1

Esta parte quedaría:

CurrentDb.Execute "UPDATE " &  Forms! FArticulado! NomTabla & " " & SET LSV = '" & Replace(Me.LSV, "'", "''") & "',HECHO = '" & Replace(Me.HECHO, "'", "''") & "', " _

Y le sobran:

Dim miSQL As String

Dim rst As Recordset

Y siga la recomendación trate armar instrucciones complejas SQL en una cadena, así es más fácil hacer seguimiento.

Respuesta
1

Sé que es lo mismo, pero por qué no armas la instrucción sql en una variable de tipo String y después ejecutas esa variable (en teoría es lo mismo, pero te permitirá ver como queda armada tu consulta para buscar posibles fuentes de error). Debería quedarte algo como:

Dim miSQL As String
Dim rst As Recordset
miSQL = "UPDATE " &  Forms! FArticulado! NomTabla & 
 " SET LSV = '" & amp; Replace(Me.LSV, "'", "''") & amp; "',HECHO = '" & amp; Replace(Me.HECHO, "'", "''") & amp; "', " _
& amp; "OBSERVACIONES = '" & amp; Replace(Me.OBSERVACIONES, "'", "''") & amp; "',COMENTARIO = '" & amp; Replace(Me.COMENTARIO, "'", "''") & amp; "', " _
& amp; "IMPORTE = '" & amp; Replace(Me.IMPORTE, "'", "''") & amp; "',MITAD = '" & amp; Replace(Me.MITAD, "'", "''") & amp; "', " _
& amp; "PUNTOS = '" & amp; Replace(Me.PUNTOS, "'", "''") & amp; "',TOTAL = '" & amp; Replace(Me.TOTAL, "'", "''") & amp; "', " _
& amp; "CALIFICACION = '" & amp; Replace(Me.CALIFICACION, "'", "''") & amp; "',CALCOD = '" & amp; Replace(Me.CALCOD, "'", "''") & amp; "', " _
& amp; "RESPONSABLE = '" & amp; Replace(Me.RESPONSABLE, "'", "''") & amp; "' " _
& amp; "WHERE ARTICULO1 = '" & amp; Forms!FCodificado!SubGeneral!ARTICULO1 & amp; "'"
CurrentDb. Execute miSQL, dbFailOnError

De hecho en tu código hasta existía una variable "miSQL" que no estabas usando.

Y ahí puedes ver en la ejecución como queda armada la variable miSQL

Respuesta
1

Antonio: Antes de nada no sé que hacen las Líneas de >>

Dim miSQL As String

Dim rst As Recordset

Así bote pronto yo haría (no lo he probado)>>

Después de la Línea >> Dim Rst As ... que se pueden quitar si no las usas en el Procedimiento

Dim LaTabla As String

LaTabla = ‘” & Forms!FArticulado.Form.NomTabla & “’”

Y si ya estás en el Formulario FArticulado:

LaTabla = Me.NomTabla

Y en la primera línea del CurrentDB.Execute sustituyes TCIR por >>

" & LaTabla & "

Creo que funcionará >> Saludos>> JTJ

Antonio: Repasando mi respuesta creo que he introducido comillas y & donde no debo hacerlo.

LaTabla = ‘” & Forms!FArticulado.Form.NomTabla & “’” simplemente ha de ser>>

LaTabla = Forms!FArticulado.Form.NomTabla

Saludos >> JTJ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas