当使用 LIKE 运算符时,Excel 中具有来自访问的 OLEDB 连接的数据不会更新
Data in Excel with OLEDB connection from access don't update when use LIKE operator
当我在 Access 的查询中使用 LIKE 运算符并在 Excel 中创建 OLEDB 连接以将此数据导入 Excel 时,即使使用以下命令更改查询后数据也不会更新另一个过滤器。就像我没有使用新过滤器更改查询一样。
我可以通过此查询并添加一个 INTO TempTable 并在 excel 的 OLEDB 连接中链接此 temptable 来解决这个问题。在这种情况下会反映更改,但不会直接查询。
查询
SELECT tb_fechamento_ddd.PERIODO,
tb_fechamento_ddd.DDD,
tb_fechamento_ddd.metrica,
tb_fechamento_ddd.categoria,
tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*"
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*"
And (tb_fechamento_ddd.metrica) Not Like "*LTE*"))
AND ((tb_fechamento_ddd.categoria)="Pre"))
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*"
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*"
And (tb_fechamento_ddd.metrica) Not Like "*LTE*")
And (tb_fechamento_ddd.metrica) Like "Migra*")
AND ((tb_fechamento_ddd.categoria) Like "*Pré*"));
P.S: 对不起,括号过多,Where 子句中有重复的过滤器,但如果我不使用它,访问将无法正常工作。
基于 HansUp 引用的post:
我将每个 LIKE 更改为 ALIKE 运算符,并将访问模式的 * 更改为 ANSI 模式的百分比。
然后:
SELECT tb_fechamento_ddd.PERIODO,
tb_fechamento_ddd.DDD,
tb_fechamento_ddd.metrica,
tb_fechamento_ddd.categoria,
tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%"
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%"
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%"))
AND ((tb_fechamento_ddd.categoria)="Pre"))
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%"
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%"
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%")
And (tb_fechamento_ddd.metrica) Alike "Migra%")
AND ((tb_fechamento_ddd.categoria) Alike "%Pré%"));
Excel我得到解决方案的另一个访问查询错误:
- 使用 UNION 进行的查询不会显示在 Excel 中创建连接的查询列表中:
创建子查询 "shelter" 使用联合的查询:
Select * from table_A
UNION ALLL
Select * from table_B
至
Select * from
(Select * from table_A
UNION ALLL
Select * from table_B) as SubQryUnion
另一个错误:
如果您在具有聚合函数的字段上使用与 table 字段同名的别名,并在表达式字段中使用此别名,则不会显示查询。
Select field1, field2, sum(table.qtd) as qtd, qtd/12 as yearmean
from table
group by field1, field2
选择另一个名称来聚合字段:
Select field1, field2, sum(table.qtd) as quantity, quantity/12 as yearmean
from table
group by field1, field2
当我在 Access 的查询中使用 LIKE 运算符并在 Excel 中创建 OLEDB 连接以将此数据导入 Excel 时,即使使用以下命令更改查询后数据也不会更新另一个过滤器。就像我没有使用新过滤器更改查询一样。
我可以通过此查询并添加一个 INTO TempTable 并在 excel 的 OLEDB 连接中链接此 temptable 来解决这个问题。在这种情况下会反映更改,但不会直接查询。
查询
SELECT tb_fechamento_ddd.PERIODO,
tb_fechamento_ddd.DDD,
tb_fechamento_ddd.metrica,
tb_fechamento_ddd.categoria,
tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*"
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*"
And (tb_fechamento_ddd.metrica) Not Like "*LTE*"))
AND ((tb_fechamento_ddd.categoria)="Pre"))
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*"
And (tb_fechamento_ddd.metrica) Not Like "*CDMA*"
And (tb_fechamento_ddd.metrica) Not Like "*LTE*")
And (tb_fechamento_ddd.metrica) Like "Migra*")
AND ((tb_fechamento_ddd.categoria) Like "*Pré*"));
P.S: 对不起,括号过多,Where 子句中有重复的过滤器,但如果我不使用它,访问将无法正常工作。
基于 HansUp 引用的post:
我将每个 LIKE 更改为 ALIKE 运算符,并将访问模式的 * 更改为 ANSI 模式的百分比。
然后:
SELECT tb_fechamento_ddd.PERIODO,
tb_fechamento_ddd.DDD,
tb_fechamento_ddd.metrica,
tb_fechamento_ddd.categoria,
tb_fechamento_ddd.Qtd
FROM tb_fechamento_ddd
WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%"
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%"
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%"))
AND ((tb_fechamento_ddd.categoria)="Pre"))
OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#)
AND ((tb_fechamento_ddd.DDD)="93")
AND (((tb_fechamento_ddd.metrica) Not Alike "%GSM%"
And (tb_fechamento_ddd.metrica) Not Alike "%CDMA%"
And (tb_fechamento_ddd.metrica) Not Alike "%LTE%")
And (tb_fechamento_ddd.metrica) Alike "Migra%")
AND ((tb_fechamento_ddd.categoria) Alike "%Pré%"));
Excel我得到解决方案的另一个访问查询错误:
- 使用 UNION 进行的查询不会显示在 Excel 中创建连接的查询列表中:
创建子查询 "shelter" 使用联合的查询:
Select * from table_A
UNION ALLL
Select * from table_B
至
Select * from
(Select * from table_A
UNION ALLL
Select * from table_B) as SubQryUnion
另一个错误: 如果您在具有聚合函数的字段上使用与 table 字段同名的别名,并在表达式字段中使用此别名,则不会显示查询。
Select field1, field2, sum(table.qtd) as qtd, qtd/12 as yearmean
from table
group by field1, field2
选择另一个名称来聚合字段:
Select field1, field2, sum(table.qtd) as quantity, quantity/12 as yearmean
from table
group by field1, field2