Tengo un archivo de texto con algunas declaraciones SQL que quiero ejecutar en una base de datos de Access. Pensé que debería ser posible con Access ' Query Editor. Por lo tanto, que entro en este editor y pegar las instrucciones:¿Cómo ejecuto múltiples instrucciones SQL en Access 'Query Editor?
insert into aFewYears (yr) values ('2000')
insert into aFewYears (yr) values ('2001')
insert into aFewYears (yr) values ('2002')
insert into aFewYears (yr) values ('2003')
Intentar ejecutar ellos (por golpear el signo de exclamación rojo) recibo una
Missing semicolon (;) at end of SQL statement.
Esto podría tomarse como una indicación de que la editor permitiría ejecutar declaraciones múltiples. Por lo tanto, yo cambio las declaraciones y añadir un punto y coma tales al final:
insert into aFewYears (yr) values ('2000');
insert into aFewYears (yr) values ('2001');
insert into aFewYears (yr) values ('2002');
insert into aFewYears (yr) values ('2003');
cuando me siento un
Characters found after end of SQL statement.
que probablemente podría tomarse como una indicación de que no es posible para ejecutar varias instrucciones .
Ok, así que la pregunta: ¿es posible ejecutar varias instrucciones en el editor consulta, o es posible de alguna manera por lotes ejecutar sentencias SQL en un archivo en /Access en/contra.
Gracias/René
edición Las instrucciones de inserción se utilizaron como ejemplo y que se dan cuenta de que son menos que perfecta, porque todos van a la misma mesa y tal cosa puede, obviamente, de alguna manera ser resueltos por usando una declaración que tiene una unión o algo. En mi caso real que trato de resolver, el archivo no solo contiene instrucciones de inserción, sino también crea declaraciones de tabla e inserta instrucciones con diferentes tablas subyacentes. Así que esperaba (y todavía espero) que haya algo así como mi amado SQL * Plus para Oracle que pueda ejecutar un archivo con todo tipo de declaraciones SQL.
¿Por qué usar una variable de tipo Variant? Solo para que pueda saltarse el uso de un contador y UBound()? Cuando lo vi por primera vez, pensé que se parecía al código de un refugiado que no era de Access, y luego veo que es de usted, Albert. Nunca lo haría de esta manera. Estoy dividiendo cadenas, por lo que la matriz debería ser de tipo cadena, en mi opinión. –
@David W. Fenton - "¿Por qué usar una variable de tipo Variant?" - a veces VBA no le da mucha opción en el asunto y este es uno de ellos. El beneficio de usar Split y For Each es que el código es IMO más legible ... pero esa es una cuestión de gusto. Noto que a menudo omite las palabras clave ByVal/ByRef, lo que resulta en ByRef implícito, mientras que ByVal explícito sería más apropiado. Pero solo una cuestión de gusto, no es gran cosa. – onedaywhen
Sí para cada medio que no uso el comando ubound(). También guarda el contador de declaraciones para el ciclo for/next. Me parece un poco menos tipeo y no tengo que usar una matriz de referencias como vSql (I). Y, también en lugar de "Siguiente I" puedo usar: "Siguiente" (así puedo cambiar la variable utilizada pero y menos otros lugares en el código efectuado si renombra la var). "para cada" var tiene que ser una variante; sin embargo, la matriz (como señala Dave) realmente debería haberse declarado un conjunto de cadenas Dim vSql() Como cadena –