Vous êtes sur la page 1sur 20

http://www.fontstuff.com/access/acctut15.

htm
Access y SQL
Parte 2: Poner VBA y SQL Juntos
En el primer tutorial de esta serie sobre Access y SQL expliqu en foto SQL
instalado en el acceso general. Este segundo tutorial introduce algunos
conceptos bsicos de SQL, las reglas esenciales que usted realmente necesita
saber cuando se trabaja con SQL en bases de datos de Access. Esta serie de
tutoriales se centra en la combinacin de SQL con VBA para ayudar a construir
poderosa y flexible, fcil de usar bases de datos-ms. Esto es lo que contiene
este tutorial:
5 minutos de duracin del curso en SQL
Algunos trminos tcnicos
SQL contiene una serie de palabras clave tales como SELECT, DELETE,
UPDATE, OR, AND, DISTINCT, y FROM, y muchos otros palabras clave de
SQL se suelen combinar con argumentos en forma de nombres de tablas,
nombres de campo, etc criterios para formar una sentencia SQL.
Una sentencia de SQL puede contener una o ms clusulas, como una
clusula WHERE (que contiene los criterios de una consulta) o una clusula
ORDER BY (que determina el orden en que se muestran los datos de una
consulta).
La estructura de una instruccin SQL
Esta ilustracin muestra las partes principales de una instruccin de consulta
SQL tpica:

Para mayor claridad, las distintas clusulas se muestran en lneas separadas.


Esta es la forma en la vista SQL de la ventana de diseo de la consulta donde
Access muestra su SQL Server.
Qu pasa con los soportes?
Access utiliza parntesis (parntesis) para incluir las distintas partes de la
clusula WHERE, pero stas pueden quedar fuera si usted encuentra este
sencillo (yo!).
WHERE (((tblStaff.Office)="London))
es la misma:
WHERE tblStaff.Office="London
No escatime en la informacin
Cuando un campo se especifica que tiene la opcin de aadir el nombre de la
tabla, que separa los dos con un punto.
SELECT Firstname, Lastname FROM tblStaff ORDER BY Lastname
es lo mismo:
SELECT tblStaff.Firstname, tblStaff.Lastname FROM tblStaff ORDER BY
tblStaff.Lastname
Siempre que los campos pertenecen a la fuente de datos especificados en la
clusula FROM. Si la consulta se refiere a ms de una tabla debe incluir el
nombre de la tabla junto con el nombre del campo.
Clasificacin para el tipo de datos
Cuando el suministro de los valores en una instruccin SQL, por ejemplo, como
criterios de consulta, su tipo de datos deben ser correctamente definido por una
"clasificacin". Esto se hace encerrando el valor entre un par de caracteres
apropiado.
El texto debe ir entre comillas simples (') o comillas ("), por ejemplo:
WHERE tblStaff.Department = "Marketing
O

WHERE tblStaff.Department = 'Marketing


La fecha debe estar entre las marcas de almohadilla (#) tambin llamada o el
nmero de signos de nmero, por ejemplo:
WHERE tblStaff.BirthDate = #09/27/1950#
Un nmero, de cualquier tipo, no necesita calificador y se puede entrar ya que
es, por ejemplo:
WHERE tblInvoices.InvoiceNumber > 1500
Obtener el formato de fecha correcto
Las fechas en SQL debe ser escrito en el formato de fecha EE.UU. (mes / da /
ao). Esto es imprescindible, independientemente de la configuracin de
formato por defecto la fecha en su equipo. La consulta en la ventana de diseo
de Access acepta fechas en el formato local por defecto, sino que convierte la
fecha se escribe en el formato correcto cuando se construye la sentencia SQL.
Recuerde el punto y coma
Una sentencia SQL debe finalizar con punto y coma (;). Si se omite el punto y
coma al escribir una sentencia SQL en la vista SQL de la ventana de diseo de
la consulta de Access la consulta seguir funcionando porque Access corrige el
error para ti! Usted debe recordar que incluyen al escribir SQL en VBA y en
otros lugares.
Cmo usar VBA cuando habla de SQL
VBA y SQL son cosas diferentes. VBA es un lenguaje de programacin en toda
regla que se puede utilizar para obtener acceso (y otros programas de
Microsoft Office) para hacer casi cualquier cosa que desee. SQL es un
lenguaje utilizado exclusivamente para manipular los datos y la estructura de
una base de datos.
VBA hace un llamamiento a una amplia gama de objetos, propiedades,
mtodos, funciones y constantes para la construccin de las declaraciones a
veces complejas para controlar el programa. SQL utiliza una gama limitada de
"palabras clave" combinadas con la informacin que suministro, tales como
nombres de tablas, nombres de campo y criterios, para la construccin de
estados esencialmente simple (aunque a veces largo) detallando lo que desea
que el programa para hacer con sus datos.

SQL a menudo se puede usar solos, por ejemplo, al establecer la propiedad de


un formulario o informe en la vista de diseo, o cuando se trabaja en la vista
SQL de la consulta ventana de diseo de Acceso. Pero este tutorial es sobre
cmo combinar SQL con VBA. Su objetivo es explicar las normas de SQL y
para fomentar el uso de buenas prcticas de cdigo escrito y de evitar las
dificultades y problemas que pueden ocurrir. La manera de escribir el cdigo
es algo muy personal as que voy a mostrar cmo hago las cosas, utilizando
algunas tcnicas que he aprendido de otros y algunos que he descubierto yo
mismo. Usted no tiene que hacerlo a mi manera, pero funciona para m por lo
que es lo que ense.
VBA es un lenguaje muy flexible y con frecuencia hay muchas maneras
diferentes en los que VBA puede lograr la misma tarea. SQL en el otro lado es
un lenguaje muy preciso y flexible. Todo tiene que ser tan, pero tiene la ventaja
de ser tambin muy simple. Como expliqu en la Parte 1: Descripcin de la
situacin de SQL existen varios dialectos de SQL. Aqu voy a estar utilizando
el SQL de Jet que impulsa el motor de base de datos Access.
Cmo escribir SQL en VBA
Diferentes desarrolladores tienen sus propias maneras de hacer las cosas y
esto se refleja en su estilo de codificacin. Lo que usted ve aqu es la manera
en la que me gusta escribir mi cdigo.
Use una variable de cadena
Cada vez que usted escribe SQL en el cdigo VBA es importante recordar que
el SQL est siempre en la forma de una cadena de texto. sentencias SQL
tambin puede ser bastante largo, y por esa razn por la que se suelen asignar
a las variables de texto para que sean ms fciles de manejar.
Cuando se trabaja con SQL en un procedimiento de VBA por lo general asignar
el SQL a una variable de texto y por lo general el nombre de mi variable es:
strSQL. Algo como esto ...
Dim strSQL As String
strSQL = "... LA SENTENCIA SQL AQU ...
DoCmd.RunSQL strSQL
Por supuesto que podra acabar con la variable y aplicar el SQL directamente,
de esta manera:

DoCmd.RunSQL "... La sentencia SQL Aqu ..."


Pero, como se ver en los tutoriales ms tarde la construccin de una
sentencia SQL puede implicar varias etapas y muchas lneas de cdigo, as
que por lo general la opcin de guardarlo en una variable.
Select tblStaff.Firstname, tblStaff.Lastname from tblStaff where
tblStaff.Office="Paris;
SELECT tblStaff.Firstname, tblStaff.Lastname FROM tblStaff WHERE
tblStaff.Office="Paris;
Estoy utilizando ejemplos sencillos, pero imagina tratando de leer una
instruccin SQL que es diez veces mayor que esta (NOTA: la longitud mxima
de una instruccin SQL en VBA es 32.768 caracteres!).
Incluya nombres de campo entre corchetes
Bueno, yo estoy aqu exigente, porque siempre pongo entre corchetes los
nombres de campo. El access slo exige que lo haga cuando los nombres de
campo contienen espacios. Por ejemplo, FirstName est bien, pero con First
Name debe ser escrito [First Name]. Los corchetes le indican a Access que
todas las palabras del nombre del campo van juntas. Tambin le dice a access
que "se trata de un nombre de campo", y as le permite utilizar palabras
reservadas de otro modo los nombres de los campos (por ejemplo, [Fecha],
que es tambin el nombre de una funcin) sin causar conflictos.
Pero lo hago por otra razn tambin. Yo s que si veo texto entre corchetes, ya
s que es un nombre de campo, tenga espacios en l o no ...
SELECT tblStaff.[Firstname], tblStaff.[Lastname] FROM tblStaff WHERE
tblStaff.[Office]="Paris;
Escribir cada clusula en una lnea separada
A menos que mi sentencia SQL es muy corto, por ejemplo:
SELECT tblStaff.* FROM tblStaff;
Me gusta escribir cada clusula de la instruccin SQL en una lnea
independiente. Esto hace que las declaraciones largas sean mucho ms fcil
de leer y editar ...

SELECT tblStaff.[Firstname], tblStaff.[Lastname]


FROM tblStaff
WHERE tblStaff.[Office]="Paris;
Al hacer esto en un procedimiento de VBA se debe recordar que se trata de
una sola cadena de texto, por lo que debe utilizar en cada lnea los carcter de
salto de VBA (un espacio seguido por un guin bajo) y concatenar las lneas
con un signo (&). No olvide que cada lnea debe tener la apertura y cierre de
las comillas.
Alternativa una o dos comillas
Es fcil confundirse con las comillas cuando se est construyendo una
sentencia SQL en VBA. La propia declaracin debe ir entre comillas porque es
una cadena de texto de VBA. Pero tambin podra haber algn texto en el SQL
como criterios en la clusula WHERE. Si utiliza el mismo tipo de comillas para
todos, access se confunde. Mira este ejemplo ...

Hay un problema con las comillas anidadas en la clusula WHERE.


Comparemos los dos ejemplos a continuacin. VBA comienza a leer de
derecha a izquierda, en el primer ejemplo ve dos cadenas de texto delimitada
por comillas dobles, y entre ellos una palabra que no entiende (Pars) por lo
que genera un error.

Pero cuando las comillas se alternan como se muestra en el segundo ejemplo,


el problema no se plantea. VBA ve una cadena de texto delimitada por comillas
dobles, dentro de la cual hay ms texto entre comillas simples.

Yo trabajo con muchos conjuntos de comillas que se confunden, usted siempre


puede usar el cdigo de caracteres ASCII para el signo de comillas dobles Chr (34) - en su lugar. Hay un ejemplo de esto en la siguiente seccin.
Poniendo todo junto
Algunas de estas normas son esenciales, otros son simplemente mi forma de
hacer las cosas (y la de muchos otros desarrolladores de bases de datos).
Sgalas y escribir buen cdigo que sea fcil de leer y depurar. La siguiente
ilustracin muestra una completa instruccin SQL escrita en la forma en que se
sugiere.

Trabajo con variables


En los ejemplos que he mostrado hasta ahora, los criterios establecidos en la
clusula WHERE han sido "rgida", escrito directamente en la instruccin SQL.
Pero esto no suele ser el caso. Una de las razones principales para trabajar
con SQL en sus procedimientos de VBA es que usted puede hacer cambios a
las cosas.
Usted podra estar cambiando los criterios, los campos e incluso las fuentes de
datos especificados en las instrucciones SQL cada vez que se ejecuta el
cdigo. La informacin que necesita la instruccin SQL se obtiene por parte
del usuario a travs de sus opciones, en un cuadro de dilogo o de los valores
en los campos de un formulario. Tutoriales de prxima aparicin en esta serie
mostrar cmo se puede hacer.
Considere este ejemplo sencillo, cuando el valor del criterio es "rgida" en la
clusula WHERE de la instruccin SQL:

Si desea permitir al usuario elegir un valor para los criterios, cada vez que se
ejecuta la consulta, por lo que se construye un cuadro de dilogo en el que hay
un cuadro combinado que contiene una lista de las oficinas. El cuadro
combinado se llama cboOffice. Puede insertar una referencia al valor del
cuadro combinado directamente en la instruccin SQL:

Como alternativa, puede colocar el valor del cuadro combinado en una variable
y luego insertar la variable en la instruccin SQL:

El uso de una variable puede hacer que el cdigo de instruccin SQL sea ms
fcil de leer y entender, especialmente cuando hay varios criterios variables a
considerar. A veces es necesario utilizar este mtodo cuando el valor tiene que
ser examinados o manipulados de alguna manera antes de que pase al SQL.
Cualquiera que sea el mtodo que elija, recuerde que debe incluir el tipo de
calificador de datos en la cadena SQL En la siguiente ilustracin, comillas
simples estn incluidas en la cadena SQL a ambos lados de la variable de texto
(marcados con flechas rojas)

Como alternativa, puede usar el cdigo de caracteres ASCII para la marca de


comillas dobles (Chr (34)) se puede insertar a uno y otro lado de la variable de
texto, pero fuera de la cadena SQL. Este mtodo requiere ms trabajo, pero
evita los conflictos y la confusin derivada de las comillas anidadas.

Recuerde que dentro de los criterios del cdigo, la variables requieren de una
correcta clasificacin para su tipo de datos: las comillas para el texto, las
marcas de # para las fechas, y nada para los nmeros.

Depuracin del cdigo SQL


Al igual que con cualquier otro tipo de programacin, el cdigo SQL puede no
funcionar correctamente. Puede ser que sea porque ha cometido un error de
lgica, o tiene la sintaxis SQL mal, o quizs usted acaba de hacer un error
tipogrfico. Si esto resulta viable en el cdigo no puede producir el resultado
que esperbamos. Ms a menudo si el resultado es un cdigo que no funciona
y el access arroja un error. Su trabajo consiste en averiguar lo que sali mal y
ponerlo bien.
Si est ejecutando una sentencia SQL dentro de un procedimiento de VBA
podrs ver los regulares mensajes de error de la base. A veces estos son muy
difciles de interpretar.
Un truco utilizado por los desarrolladores de access es poner a prueba su SQL
en la vista SQL de la ventana de diseo de la consulta de Access. Si hay un
problema Access mostrar un mensaje de error. Los mensajes de error que se
obtiene de la vista SQL de la herramienta de consulta de access son a menudo
mucho ms tiles y descriptivos que los que obtiene de VBA.
Mensajes de error de SQL
Vale la pena familiarizarse con los diferentes tipos de mensaje de modo que
usted puede rastrear el origen de los errores de cdigo. La mayora de los
errores son errores de sintaxis SQL. El motor de base de datos Jet no puede
interpretar la sentencia SQL, ya que no tiene sentido. Estos a menudo surgen
de simples errores tipogrficos u omisiones por lo que es importante, a tener
cuidado al escribir. stos son algunos ejemplos (NOTA: las flechas rojas son
mas - los mensajes no son de mucha ayuda!):
El tipo ms comn de error es la "falta operador". Normalmente se entiende el
trmino "operador" en el sentido de un smbolo matemtico como =,> o <pero
cuando un mensaje de error de acceso SQL utiliza la expresin "falta un
operador", debe buscar algo al margen de la declaracin. Podra ser un

operador matemtico, pero tambin puede ser una palabra como AND y OR, o
tal vez una marca de comillas. Aqu la comilla simple antes de la palabra
Bruselas es lo que falta:

A veces los mensajes de error son ms especficos y apuntan directamente a la


clusula que est causando el error, la palabra " BY " ha sido omitido de la
clusula ORDER BY de la instruccin SQL

Si escribes mal el nombre de una base de datos o de un objetos como una


tabla, o se refieren a que no existe, el motor de base de datos Jet no lo
reconocer. Estos errores suelen ser bastante fcil de rastrear:

En realidad, no es un mensaje de error, sino una respuesta a un error en la


instruccin SQL. Si escribe el nombre de un campo de forma incorrecta, el

motor de base de datos Jet interpreta a veces el SQL como una consulta de
parmetros y muestra el cuadro de dilogo de parmetros conocidos. Aunque
esto puede parecer confuso al principio, por lo general es bastante fcil de
diagnosticar y corregir porque el nombre equivocado se muestra en el cuadro
de dilogo. Usted slo tiene que encontrarlo en el cdigo y corregirlo:

Mensajes de error en VBA


Cuando intenta ejecutar una instruccin SQL defectuosa en VBA por lo general
va a generar un error en tiempo de ejecucin que resulta en un mensaje de
error de VBA como sta:

Los mensajes de error se entregan en la forma habitual del uso de error de en


el cuadro de dilogo de mensaje de Visual Basic y no de forma explcita que el
problema se encuentra en la instruccin SQL, aunque esto suele ser evidente
en el propio mensaje. Al pulsar el botn de depuracin le llevar a la lnea de
cdigo, pero esto puede no ser la instruccin SQL en s. He aqu algunos
ejemplos:

En el ejemplo anterior el cdigo fall cuando trat de aplicar la instruccin SQL


para una consulta almacenada. Acceso comprobar la instruccin SQL antes de
aplicar a la consulta y se encontr un error de sintaxis ("orden" debe ser
"ORDER BY") y destac la lnea de cdigo que no se pudo ejecutar, en lugar
de la que contena el error.
En el siguiente ejemplo, es evidente que hay un error ortogrfico en alguna
parte, pero puede ser que tome un tiempo para buscar:

Aqu, el error reside en la falta de


ortografa de un nombre de tabla en la
clusula SELECT de la instruccin
SQL pero el error no se plantea hasta
que el cdigo trat de ejecutar la
consulta y la tabla especificada no se
pudo encontrar.
El siguiente ejemplo tiene que recibir el premio para el mensaje de error ms
confuso que el acceso tiene que ofrecer!

Lo he visto en dos circunstancias diferentes. Se muestra si se produce un error


porque, en un procedimiento de VBA se ejecutar una consulta de parmetros o una consulta que pensaba que era una consulta de parmetros y as aparece
el cuadro de dilogo de parmetros (ver el ejemplo anterior, donde el nombre
del campo fue mal escrito) - y ha hecho clic en el parmetro de dilogo del

botn Cancelar. En circunstancias normales, que estara bien, pero si como


resultado de su cdigo fall, "Ha cancelado la operacin anterior." se muestra
en el mensaje y, supongo, tiene sentido.
Pero este mensaje tambin aparece cuando existe un tipo diferente de error
cuando intenta utilizar una instruccin SQL de VBA en el que el tipo de datos de
un criterio de la clusula Where no corresponde con el tipo de datos del campo
correspondiente. Por ejemplo, usted podra tener un campo de fecha y el
suministro de un tipo de datos de texto: WHERE tblStaff.BirthDate='Tuesday,
en lugar de hacer coincidir los tipos de datos correctamente: WHERE
tblStaff.BirthDate=#09/27/1950#.
Incluir un control de errores de rutina
Por ltimo, recuerde que una defectuosa instruccin SQL puede bloquear el
cdigo VBA a fin de recordar y pruebe sus procedimientos a fondo y siempre
incluyen un control de errores de rutina.
Access y SQL
Parte 3: Algunos ejemplos prcticos
stos son algunos ejemplos de SQL llevando a cabo desde VBA. tutoriales
futuro de esta serie se ampliar en estas tcnicas, y mostrarles ms cosas que
puedes hacer con SQL en bases de datos de Access.
Usando DoCmd.RunSQL para ejecutar consultas de accin
El objeto DoCmd en VBA se puede utilizar para llevar a cabo una gran
cantidad de acciones diferentes, incluyendo uno llamado RunSQL. No se
puede ejecutar ningn tipo de instruccin SQL mediante el mtodo RunSQL, es
especficamente para ejecutar el tipo de consultas que Access llamadas
"consultas de accin". Estas incluyen consultas de Eliminacin (para eliminar
registros de una tabla), consultas de datos anexados (utilizado para agregar
registros a una tabla), consultas de actualizacin (para editar los registros en
una tabla) y consultas de Creacin de tabla (utilizado para crear una nueva
tabla).
Trabajando desde la ventana de diseo de consulta de Access que se limitan a
los cuatro tipos de consulta descrito anteriormente, pero utilizando SQL en
relacin con el VBA (o mediante la introduccin de SQL directamente en la vista
SQL de la ventana de diseo de la consulta Access), puede lograr mucho ms,

incluyendo el uso de "consultas de definicin de datos", que se utilizan para


crear y modificar la estructura de la propia base de datos.
El mtodo RunSQL le pide dos argumentos, la instruccin SQL en s que debe
ser suministrado en forma de cadena (es decir, debe ir entre comillas) y el uso
de transacciones que es opcional:

El segundo argumento se refiere a procesamiento de transacciones y asume


cierto si lo omite. Cuando el procesamiento de transacciones se aplica a una
consulta, Access primero realiza un "simulacro" de la consulta durante el cual
se escribe todos los cambios en un archivo de registro temporal, pero no hacer
cambios permanentes en la base de datos. Si la consulta termina su tarea sin
ningn tipo de problemas, los cambios observados en el archivo de registro se
aplican y el trabajo (la operacin) se completa. Sin embargo, si se encuentra
con problemas de acceso, mientras que la ejecucin de la consulta, la
operacin termina y el archivo de registro se descarta sin ningn tipo de
cambios realizados. Procesamiento de transacciones es muy til para proteger
sus datos y se harn siempre, a menos que haya una razn especial para no
hacerlo.
Los ejercicios siguientes muestran algunas de las cosas que puede hacer.
Usted puede trabajar en una base de datos existente o crear uno nuevo.
Construir una nueva tabla
1.

Abra una ventana de cdigo VBA (Access 2000/2002: utilizar Alt + F11,
Access 97: ir a la pestaa Mdulos y haga clic en Nuevo).
A los efectos de este ejercicio, se ejecutar el cdigo directamente desde
la ventana Inmediato. Esta ventana le permite aplicar una instruccin de
cdigo directamente escribiendo en la ventana (tiene que ser escrito
como una sola lnea) y pulsa Intro.

2.

Abra la ventana Inmediato presionando Ctrl + G. En 2000/2002 la


ventana de acceso inmediato aparecer, generalmente acoplado al borde
inferior de la ventana Editor de Visual Basic. En Access 97 una nueva

ventana (la ventana de depuracin) aparecer, dividida horizontalmente


en dos secciones - el uso de la parte inferior de esta ventana.
3.

Introduzca la siguiente lnea de cdigo en una sola lnea, a continuacin,


pulse Intro:

DoCmd.RunSQL "CREATE TABLE tblTest ([StaffID] COUNTER


CONSTRAINT ndxStaffID PRIMARY KEY, [FirstName] TEXT(25),
[LastName] TEXT(30), [BirthDate] DATETIME);"

4.-Cambie a la ventana de base de datos Access (pulsar F11) y pasar a la


ficha Tablas. (NOTA: si la ficha Tablas se mostraba ya, actualice la vista
por el cambio a una ficha diferente a continuacin, volver a la ficha Tablas
de nuevo). Usted debe ver que una nueva tabla (tblTest) se ha creado.
Echa un vistazo a la tabla. Usted ver que contiene los cuatro campos
especificados en la instruccin SQL:

Pngala en vista de diseo y vea que los tipos de datos se especifican, con el
campo de texto de un tamao especificado, y que el campo StaffID es un
campo Autonumrico y tambin el campo clave principal:

Si intenta ejecutar la misma lnea de cdigo de nuevo un error se produce


porque una tabla con el nombre especificado ya existe:

Un mtodo para hacer frente a esta eventualidad se incluir en un tutorial


posterior de esta serie.
Aadir registros a una tabla
Vamos a aadir algunos datos a la tabla. Cierre la tabla si est abierto, y
volver a la ventana Inmediato.
1.

Introduzca la siguiente lnea de cdigo en una sola lnea, a


continuacin, pulse Intro (no dude en insertar su propio detalles!):

DoCmd.RunSQL "INSERT INTO tblTest ([FirstName], [LastName], [BirthDate])


VALUES ('Martin', 'Green', #09/27/1950#);"
1.

Tenga en cuenta las comillas simples alrededor de los valores de texto


Martin y Green, y recordar que las comillas simples se utilizan aqu para
no entrar en conflicto con las comillas dobles que encierran la declaracin
completa de SQL. Tenga en cuenta tambin que el valor de fecha est
rodeada por el signo (#) y que la fecha se presenta en formato EE.UU. (m
/ d / a).

2.

Cambie a la ventana de base de datos Access y abra la tabla. Usted


podr ver su nuevo disco. Debido a que el campo StaffID es un campo
Autonumrico su valor se asigna de forma automtica. No es necesario
que se especifiquen en el cdigo SQL.

Antes de que se ejecuta SQL, Access muestra un mensaje pidiendo permiso


para agregar un registro a la tabla. Esto es habitual cuando Access lleva a
cabo ninguna consulta de accin, y se puede suprimir con el cdigo VBA si no
quiere que sus usuarios para verlo:

Si el usuario decide no agregar el registro se puede hacer clic en el botn No y


se cancela la accin sin mayores consecuencias, pero cuando esto ocurre
cuando la instruccin SQL se ejecuta desde VBA error se produce un:

Por lo tanto, si desea dar al usuario la opcin de cancelar el registro, el cdigo


tendr que controlar el error cuando se presenta.
Agregar un campo a una tabla
SQL se puede utilizar para realizar cambios en la estructura de una tabla
existente. Los campos se pueden agregar, quitar o cambiar. As es como
aadir un nuevo campo. Cierre la tabla si est abierto, y volver a la ventana
Inmediato.
1.

Introduzca la siguiente lnea de cdigo en una sola lnea, a


continuacin, pulse Intro:

DoCmd.RunSQL "ALTER TABLE tblTest ADD COLUMN [Age] BYTE;"


1.

Cambie a la ventana de base de datos Access y abra la tabla. Usted


ver un campo nuevo se ha agregado.

Si usted echa un vistazo a la vista de diseo de la tabla se ver que el SQL ha


asignado el tipo de datos byte a nuevo campo.

Modificar los registros existentes


Adems de trabajar con la estructura de una tabla, SQL se puede utilizar para
modificar los datos existentes. Puede que haya utilizado un acceso Consulta
de actualizacin. En este ejemplo se utiliza el mismo mtodo de VBA. Hemos
agregado un nuevo campo a la mesa, ahora podemos introducir algunos datos.
En primer lugar, un ejemplo de la actualizacin de los registros especficos
mediante la adicin de una clusula WHERE a la instruccin SQL:
1.

Introduzca la siguiente lnea de cdigo en una sola lnea en la ventana


Inmediato, a continuacin, pulse Intro (sustitucin de los criterios
apropiados para su Nombre y Apellido campos):

DoCmd.RunSQL "UPDATE tblTest SET [Age]=52 WHERE [FirstName]='Martin'


AND [LastName]='Green';"
En cuanto al agregar registros a la tabla, Access muestra un mensaje de
confirmacin cuando los registros se va a actualizar. Recuerde que la
cancelacin de la actualizacin se producir un error en VBA.

Si usted no incluye una clusula where de la instruccin SQL UPDATE


modificar todos los registros de la tabla. Esto puede ser apropiado si desea
aplicar el mismo valor a todos los registros, o si desea calcular un valor de
utilizacin de los datos existentes:
2.

Introduzca la siguiente lnea de cdigo en una sola lnea en la ventana


Inmediato, a continuacin, pulse Intro:

DoCmd.RunSQL "UPDATE tblTest SET [Age]=Int((Date()-[BirthDate])/365.25);"


En lugar de aplicar un valor especfico, esta sentencia SQL realiza un clculo
en cada registro de la utilizacin del valor presente ya en el campo de fecha de
nacimiento y la fecha de acceso () para calcular la edad de cada persona:

NOTA: No es una prctica buena base de datos para almacenar los datos
calculados en una tabla que contiene los datos de los que se calcul. Por
qu? Principalmente porque los desechos espaciales. Si usted sabe la fecha
de nacimiento de una persona puede calcular su edad en cualquier momento
mediante una consulta. Adems, si almacena su edad como un nmero que no
se actualizar a medida que pasa el tiempo, por lo que finalmente se convertir
incorrecta. Pero me he quedado atrapado por una idea as que me he
permitido una excepcin a la regla!
Eliminar una tabla
Es tan fcil de borrar las cosas con SQL, ya que es crearlos. Los registros
pueden ser eliminados, al igual que los campos e incluso tablas enteras:
1.

Introduzca la siguiente lnea de cdigo en una sola lnea en la ventana


Inmediato, a continuacin, pulse Intro:

DoCmd.RunSQL "DROP TABLE tblTest;"


Usted no ver ningn mensaje de advertencia, pero usted encontrar que la
tabla ha pasado (un poco demasiado fcil para la comodidad!). Puede que
tenga que actualizar la ventana de base de datos como se describi
anteriormente antes de la entrada de la tabla se quita.
Resumen
Estos ejemplos prcticos han demostrado cmo se puede manipular la
estructura de una base de datos y sus datos mediante la aplicacin de
sentencias SQL con VBA, trabajando independientemente de la herramienta de
consulta de Access. Ellos muestran el potencial de trabajar directamente con
SQL de sus procedimientos de VBA para crear, modificar y rellenar las tablas
con facilidad.
He mostrado slo algunos ejemplos de lo que se puede hacer. SQL Server es
capaz de mucho ms. tutoriales futuro de esta serie explorarn usos prcticos

de estas tcnicas, as como los usos ms conocidos de SQL a los datos de


interrogar y el usuario disponga de la informacin.
Qu viene despus?
El siguiente tutorial de esta serie muestra cmo puede crear y modificar
consultas "sobre la marcha", trabajando directamente con SQL de la consulta, e
incluye un proyecto prctico para construir una consulta de usos mltiples:
El acceso y la parte de SQL 4: Construyendo Consultas "On the Fly"

Vous aimerez peut-être aussi