Error 3075 en código vba access

Tengo escrito el siguiente código en un combobox de access de un formulario de Access:

Private Sub Cuadro_combinado0_AfterUpdate()
Dim vartabla As String
Dim vartabla As Variant
vartabla = Me.Cuadro_combinado0 'Pillamos el nombre de la tabla del cuadro combinado

'Ponemos la variable a las tablas y le asignamos recordsource al formulario
Me.RecordSource = "SELECT " & vartabla & ".Companycode, " & vartabla & ".Postingdate, " & vartabla" & ".Documentdate, " & vartabla FROM " & vartabla & ";"
'Actualizamos formulario
Me.Requery
End Sub

Pretendo que en el formulario me refleje los datos de esa tabla, que he elegido con el combobox.

Funciona perfectamente si el nombre de la tabla no tiene espacios en blanco.

Cuando tiene espacios en blanco sale error 3075

1 Respuesta

Respuesta
1

Me parece raro que en ese código no te salte un error en las dos primeras lineas, al declarar una misma variable dos veces... Yo dejaría solo la primera declaración. También me parece raro que esa SQL que construyes no te de error, porque antes del FROM sobran o faltan cosas...

En cuanto a tu error de nombres, lo solucionas fácilmente con corchetes (aunque poner espacios y caracteres "extraños" en nombres de objetos no es una buena práctica http://neckkito.xyz/nck/index.php/teoria/cosas-que-es-bueno-saber/nombres-objetos):

Private Sub Cuadro_combinado0_AfterUpdate()
Dim vartabla As String
vartabla = Me.Cuadro_combinado0 'Pillamos el nombre de la tabla del cuadro combinado
'Ponemos la variable a las tablas y le asignamos recordsource al formulario
Me.RecordSource = "SELECT Companycode, Postingdate,Documentdate FROM [" & vartabla & "];"
'Actualizamos formulario
Me.Requery
End Sub

Un saludo.


Svenibojorn:

He procedido a poner tu código y ahora me da error 3141: Incluye palabra reservada, le falta un argumento o está mal escrito, o bien los signos de puntuación no son los correctos.

He visto que en tu código Me. RecordSource = "SELECT Companycode, Postingdate,Documentdate…. 

En Companycode, hay espacio Postingdate,No hay espacio Documentdate.

Me sale el mismo error "3141" si dejo espacio y si no dejo espacio.

He puesto ese ejemplo con 3 campos para facilitar la comprensión del código, pero uso mas campos. No se si alguno puede ser reservado:

Companycode, Postingdate, Documentdate, Currencyn, Headerdescription, DebitoCredito, Account, Amount, Costcenter, COorder, WBSelement, Profitcenter, Transactiontype, Lineitemtext, PartnerProfitcenter, PurchaseOrder, POItem, TradingPartner, Assignementfield, Auto, Asiento,

SignoAmount.

Gracias anticipadas.

He olvidado decir que Dim vartabla As String Y Dim vartabla As Variant, si uso una no uso la otra, poniéndole la comilla delante, según interese.

'Dim vartabla As String

Lo de la coma para separar los campos, no tiene importancia, porque lo interpreta como separador de campos. A lo que no le veo explicación es a lo de la palabra reservada, imagino que te lo marca en la linea del me.Recordsource...

Prueba poniendo:

Me.Recordsource=" SELECT * FROM [" & vartabla & "]"

Y si así te funciona, vete añadiendo los campos poco a poco a ver si alguno te da error.

También puedes probar a hacer la asignación directamente, omitiendo la variable:

Me.RecordSource = "SELECT Companycode, Postingdate, Documentdate FROM [" & Me.Cuadro_combinado0  & "]"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas