sirve - sql ejemplos
MS Access VBA consulta SQL depuraciĆ³n seleccionar caso (1)
Veo al menos dos problemas con su declaración SQL:
Primero, Access SQL no admite la palabra clave CASE
. Si estaba pensando en el CASE ... WHEN
construye en T-SQL (Microsoft SQL Server), entonces el equivalente en Access SQL es la función Switch()
(ref: aquí ). Puede pensar en la función Switch()
como haciendo
Switch(when1, then1, when2, then2, ...)
En segundo lugar, hasta donde yo sé, Access SQL solo admite el punto ( .
) Como el símbolo decimal y la coma ( ,
) como separador de lista, incluso si las configuraciones regionales en su máquina especifican otros valores (por ejemplo, coma ( ,
) como el decimal símbolo y punto y coma ( ;
) como el separador de lista). En otras palabras, estoy bastante seguro de que
left(KU.man_year_source;3)
nunca funcionará; necesitarás usar
left(KU.man_year_source,3)
en lugar.
En MS Access 2013 VBA obtengo un error de sintaxis en esta cadena SQL:
strSQL = "INSERT INTO [man_year] ( man_year_val, year_int, main_research_area, organisation, man_year_source ) SELECT KU.[2007], ''2007'' AS Expr1, " _
& "select case right(left(KU.man_year_source;6);2) like ''Hu'' 3 case right(left(KU.man_year_source;6);2) like ''Sa'' 1 case right(left(KU.man_year_source;6);2) like ''Te'' 2 case right(left(KU.man_year_source;6);2) like ''Su'' 4 case right(left(KU.man_year_source;6);2) like ''Ud'' 5 AS Expr2, " _
& "4 AS Expr3, " _
& "select switch" _
& "(left(KU.man_year_source;3) like ''1. ''; 1;" _
& "left(KU.man_year_source;3) like ''1.1''; 4;" _
& "left(KU.man_year_source;3) like ''1.2''; 5;" _
& "left(KU.man_year_source;3) like ''1.3''; 6;" _
& "left(KU.man_year_source;3) like ''1.4''; 7;" _
& "left(KU.man_year_source;3) like ''1.5''; 8;" _
& "left(KU.man_year_source;3) like ''1.6''; 9;" _
& "left(KU.man_year_source;3) like ''2. ''; 2;" _
& "left(KU.man_year_source;3) like ''2.1''; 47;" _
& "left(KU.man_year_source;3) like ''2.2''; 48;" _
& "left(KU.man_year_source;3) like ''2.3''; 49;" _
& "left(KU.man_year_source;3) like ''2.4''; 50;" _
& "left(KU.man_year_source;3) like ''2.5''; 51;" _
& "left(KU.man_year_source;3) like ''2.6''; 52;" _
& "left(KU.man_year_source;3) like ''3. ''; 3;" _
& "left(KU.man_year_source;3) like ''3.1''; 53;" _
& "left(KU.man_year_source;3) like ''3.2''; 54;" _
& "left(KU.man_year_source;3) like ''3.3''; 55;" _
& "left(KU.man_year_source;3) like ''3.4''; 56;" _
& "left(KU.man_year_source;3) like ''3.5''; 57;" _
& "left(KU.man_year_source;3) like ''3.6''; 58) from KU;"
Aparece el error en la parte CASE, pero eso puede deberse a que todavía no ha llegado a la parte SWITCH. :-) ¿Alguien puede ayudarme? No puedo encontrar el error.
Mejor pmelch