Me da error la consulta de creación de tabla . "Create table " & nomTbl & "..." y luego ejecutarla con Execute.

Tengo la consulta siguiente con una variable que contiene el nombre de la tabla

"Create table" & nomTbl & " ......nombre de los campos".

Db. Execute

Me da Error de la sentencia Create.

Pero si coloco el nombre de la tabla.(Ya no en una variable)

Create table TFacturas " ... Nombre de los campos. Si lo acepta.

¿Me podrían decir porqué?

2 Respuestas

Respuesta
1

Tengo un cuadro de texto Texto A y un botón de comando. Escribo algo Caramba en él cuadro y pulso el botón

Me ha creado la tabla con la estructura

El código es

DoCmd.RunSQL "CREATE TABLE " & Me.[TextoA] & " ([IdLoquesea] COUNTER CONSTRAINT ndxStaffID PRIMARY KEY, [Nombre] TEXT(25),[Apellidos] TEXT(30), [FechaNac] DATETIME);"
Respuesta
1

El motivo de que ocurra ese error al usar la variable es que no estás dejando un espacio entre el table y las comillas, y probablemente tampoco lo pongas después de las comillas que siguen a la variable.

Por ejemplo, si en tu variable nomTbl tienes el nombre "TTemp", y en tu código escribes la SQL así (como se deduce del enunciado de tu problema):

miSQL= "Create table" & nomTbl & " (Campo1 Text(10), Campo2 Text(10))".

Db. Execute miSQL

Access lo interpretará como:

"Create tableTTemp Campo1Text(10), Campo2Text(10)"

Y te dará error, porque no hay ningún comando SQL que sea tableTTemp.

Si embargo, si lo pones así (fíjate en el espacio en blanco después del Table):

miSQL= "Create table " & nomTbl & " (Campo1 Text(10), Campo2 Text(10))".

Db. Execute miSQL

Lo ejecutará sin problema.

El error también te puede venir por el nombre que uses para la tabla, pues "en principio", y con la SQL que manejas, no debería llevar acentos, eñes o espacios entre los nombres. Si ese fuera el caso, tendrías que pasar el nombre de la tabla entre corchetes, ya sea en la propia variable, al poner el nombre de la tabla, o bien modificando la SQL para que los tenga (si pones los corchetes siempre, nunca tendrás problemas, aunque sean nombres normalizados):

miSQL= "Create table [" & nomTbl & "] (Campo1 Text(10), Campo2 Text(10))".

Lo mismo se aplicaría a los nombres de los campos, por ejemplo:

miSQL= "Create table [" & nomTbl & "] ([Campo 1] Text(10), Campo2 Text(10))".

Un saludo.


     bit.ly/ForoNkSv 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas