- 08 Ago 2015 às 17:45
#2015
A função abaixo tenta retornar qualquer lista de valores de números de um campo "numero" (por exemplo) de uma tabela de um banco de dados grande. sendo que quero filtrar os seguintes números como exemplo:
018897
018898
018899
022900
035901
036902
085903
181904
182905
189906
184907
189908
218909
218910
318911
318912
318913
518914
918915
928916
938917
Então criando uma função mseleciona("b2:b22";"numero") deveria trazer de volta:
select * from 50e where numero="018897" or numero = "018898" or numero = "018899" or numero = "022900" or numero = "035901" or numero = "036902" or numero = "085903" or numero = "181904" or numero = "182905" or numero = "189906" or numero = "184907" or numero = "189908" or numero = "218909" or numero = "218910" or numero = "318911" or numero = "318912" or numero = "318913" or numero = "518914" or numero = "918915" or numero = "928916" or numero = "938917"
a função mseleciona seria digitada assim, mseleciona("b2:b22";"numero") , porém está retornando erro #valor.
Public Function mseleciona(tvar As Range, tcampo As String)
Dim wmatriz As Range
Dim wcomando, tcomando As String
wcomando = "Select * from 50e where " & tcampo & " = "
tcomando = wcomando
For Each wmatriz In Range(tvar)
If tcomando = wcomando Then
tcomando = IIf(wmatriz = "", tcomando, tcomando & """" & Format(wmatriz, "000000") & """")
Else
tcomando = IIf(wmatriz = "", tcomando, tcomando & " or " & tcampo & " = " & """" & Format(wmatriz, "000000") & """")
End If
Next wmatriz
mseleciona = tcomando
End Function
Alguém tem uma ideia do que estou fazendo errado?
A ideia é que qualquer quantidade de uma lista possa retornar o comando.
Desde já agradeço.
018897
018898
018899
022900
035901
036902
085903
181904
182905
189906
184907
189908
218909
218910
318911
318912
318913
518914
918915
928916
938917
Então criando uma função mseleciona("b2:b22";"numero") deveria trazer de volta:
select * from 50e where numero="018897" or numero = "018898" or numero = "018899" or numero = "022900" or numero = "035901" or numero = "036902" or numero = "085903" or numero = "181904" or numero = "182905" or numero = "189906" or numero = "184907" or numero = "189908" or numero = "218909" or numero = "218910" or numero = "318911" or numero = "318912" or numero = "318913" or numero = "518914" or numero = "918915" or numero = "928916" or numero = "938917"
a função mseleciona seria digitada assim, mseleciona("b2:b22";"numero") , porém está retornando erro #valor.
Public Function mseleciona(tvar As Range, tcampo As String)
Dim wmatriz As Range
Dim wcomando, tcomando As String
wcomando = "Select * from 50e where " & tcampo & " = "
tcomando = wcomando
For Each wmatriz In Range(tvar)
If tcomando = wcomando Then
tcomando = IIf(wmatriz = "", tcomando, tcomando & """" & Format(wmatriz, "000000") & """")
Else
tcomando = IIf(wmatriz = "", tcomando, tcomando & " or " & tcampo & " = " & """" & Format(wmatriz, "000000") & """")
End If
Next wmatriz
mseleciona = tcomando
End Function
Alguém tem uma ideia do que estou fazendo errado?
A ideia é que qualquer quantidade de uma lista possa retornar o comando.
Desde já agradeço.