Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué marco se necesita para poner sentencias SQL en VBA?

¿Qué marco se necesita para poner sentencias SQL en VBA?

Al utilizar sentencias SQL en VBA, no solo debes seguir las reglas de sintaxis de SQL. La construcción en VBA no solo debe seguir las reglas de sintaxis de SQL, sino que también debe seguir las reglas de sintaxis de VBA.

Como resultado, habrá muchos más símbolos, como conectores (&) y comillas dobles ("). Muchos principiantes se confunden con estos símbolos. Hablemos brevemente sobre cómo utilizar el método de división. Comprender la construcción de sentencias SQL dinámicas en VBA.

Aunque podemos vincular condiciones de consulta a controles de formulario, como en el siguiente ejemplo:

Select

* FROM. tabla de pedidos Donde nombre del cliente

=Formularios! Formulario de consulta del cliente. Cuadro de entrada del nombre del cliente. Pero esto solo se puede aplicar a consultas relativamente simples. A medida que aumenta la complejidad de las condiciones, la declaración SQL también aumentará. Aumenta drásticamente. Más importante aún, estas declaraciones SQL son difíciles de entender. Incluso si finalmente se crean, será muy problemático si es necesario modificarlas después de un período de tiempo.

Por lo tanto, usar variables para construir. Las sentencias SQL dinámicas en VBA se han convertido en una opción ideal. Veamos un ejemplo. Por ejemplo, queremos pasar tres cuadros de texto en el formulario (txt nombre del cliente, fecha de inicio del txt, fecha de finalización del txt), ingrese el

valor de condición para construir una declaración SQL que consulta los registros de ventas del cliente especificado dentro de un período de tiempo determinado en la tabla de pedidos, en VBA. El código es el siguiente:

strSQL="

Seleccione * DE la tabla de pedidos Donde nombre del cliente='www.gzlij.com" & Me.txt nombre del cliente& "'

Y Fecha de venta entre #" & Me.txt Fecha de inicio& "# And #" & Me.txt End Date

& "#"

La declaración anterior debería ¿Cómo entenderla? Aquí usamos el método de sustitución para dividir. Primero supongamos que el los valores de los cuadros de texto son:

txt fecha de inicio=2010-5-1

txt fecha de finalización= 2010-5-31

txt cliente nombre = Southeast Industrial

De acuerdo con las condiciones anteriores, la declaración SQL que necesitamos obtener debe ser:

Seleccione * DE la tabla de pedidos donde Nombre del cliente="Southeast Industrial" AND Sales Date Entre #2010-5-1# y #2010-5-31#

Aquí se utilizan comillas dobles (") porque deben construirse en VBA. es el delimitador de cadena en VBA, por lo que Si necesita cambiarlo a comillas simples (') para cumplir con las reglas gramaticales de VBA, entonces la declaración SQL se convierte en:

Seleccione * DE la tabla de pedidos Donde nombre del cliente ='Southeast Industrial' AND Sales Date Between # 2010-5-1# Y #2010-5-31#

(Por supuesto, también podemos usar dos comillas dobles de acuerdo con la sintaxis de VBA, para que VBA compile El procesador reconocerá estas dos comillas dobles consecutivas como un carácter de comilla doble en lugar de un delimitador de cadena. Sin embargo, esto es relativamente más complicado y problemático, y hay otras razones por las que no entraré en detalles aquí.

)

Luego reemplazamos el valor de la condición dentro con una variable Dado que la condición debe ser reemplazada por una variable, dividimos la declaración SQL anterior en varios fragmentos de la siguiente manera:

Seleccionar. * DE la tabla de pedidos Donde nombre del cliente = 'Southeast Industrial' Y fecha de venta Entre #2010-5-1# y #2010-5-31#

Luego cambie el valor de la condición a una variable, luego Completado:

Seleccione * DE la tabla de pedidos Donde nombre del cliente = 'Nombre del cliente Me.txt' Y fecha de ventas Entre la fecha de inicio de #Me.txt # y la fecha de finalización de #Me.txt #

Siguiente , agregue comillas dobles en ambos extremos del fragmento que no es una variable para que se ajuste a la sintaxis de cadena en VBA:

"Select * FROM order table Where customer name='"Me.txt customer Name "' AND Sales date Entre #"Me.txt start date"# Y #"Me.txt end date"#"

Finalmente, usamos el conector (&) para dividirlos y obtener Los fragmentos son conectados y combinados en una cadena (tenga en cuenta que cuando se usan conectores para combinar múltiples cadenas o variables, debe haber espacios en ambos lados del conector), y obtenemos la declaración SQL dinámica en VBA que necesitamos:

"Seleccione

* DE la tabla de pedidos Donde nombre del cliente='" & Me.txt nombre del cliente& "' Y fecha de venta Entre #"

& Me.txt fecha de inicio & "# Y #" & Me.txtFecha de finalización& "#"