Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marius_Coutinho

Busca em Array

Recommended Posts

Olá Pessoal,

 

Minha dúvida é a seguinte: Fiz uma busca em uma tabela do DB e inseri o resultado em uma matriz multidimensional.

 

Agora, preciso filtrar alguns valores dessa matriz para poder gerar o resultado de forma correta, mas não sei como pesquisar dados em uma matriz. Tipo: Listar todos os dados em que MinhaArray(0,i) = 1, por exemplo. Poderia fazer isso com "if", mas não resolve...

 

Não resolve porque se não houver nenhum registro eu devo listar o box como vazio, mas como para cada box eu teria que fazer um loop na matriz inteira, todos os boxes, obrigatoriamente em algum momento, terão resultado falso, tendo ou não agendamentos...

 

-----------------------------------------------------------------------------

 

Vou explicar o que preciso fazer, talvez tenha uma forma melhor.

 

Preciso montar um gráfico que lista horários livres e ocupados de um determinado box de uma oficina.

 

Armazeno na tabela do DB o box e as demais informações para cada registro. Para cada box, será gerada uma linha no gráfico, contendo as horas livres e ocupadas. Ou seja, como minha matriz tem os dados de todos os boxes, preciso conseguir filtrar desses dados apenas os de um box expecífico para que possa criar a linha, finalizar e criar outra com para outro box e assim segue...

 

Poderia fazer um select para cada box, usando loops, mas posso ter até 50 boxes e vou começar a ter problemas com desempenho.

 

Desde já, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,Consegui resolver usando a função Filter()Valeu!

Felei cedo demais! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Não funcionou com uma matriz multidimensional. Erro: Tipos Incompatíveis: 'Filter'Pela lógica, deveria ter que fazer uma referência de onde (coluna) deveria buscar os dados, mas não consegui criar uma sintaxe válida.Ex:b=Filter(a,"e") <-- Assim funcionab=Filter((a,1),"e") <-- Assim não funcionaAlguém sabe como fazer isso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que a solução não seria o Array, use o FILTER do RecordSet ADO ANTES de usar o "GetRows" para criar seu Array.

 

Ah, a descrição da função FILTER do VBS diz que o parametro array deve ser UNIDIMENSIONAL.

Returns a zero-based array containing a subset of a string array based on a specified filter criteria.

 

Filter(InputStrings, Value[, Include[, Compare]])

Arguments

InputStrings

Required. One-dimensional array of strings to be searched.

Value

Required. String to search for.

Include

Optional. Boolean value indicating whether to return substrings that include or exclude Value. If Include is True, Filter returns the subset of the array that contains Value as a substring. If Include is False, Filter returns the subset of the array that does not contain Value as a substring.

Compare

Optional. Numeric value indicating the kind of string comparison to use. See Settings section for values.

Settings

The Compare argument can have the following values:

Constant Value Description

vbBinaryCompare 0 Perform a binary comparison.

vbTextCompare 1 Perform a textual comparison.

Remarks

If no matches of Value are found within InputStrings, Filter returns an empty array. An error occurs if InputStrings is Null or is not a one-dimensional array.

 

The array returned by the Filter function contains only enough elements to contain the number of matched items.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que a solução não seria o Array, use o FILTER do RecordSet ADO ANTES de usar o "GetRows" para criar seu Array.

 

Ah, a descrição da função FILTER do VBS diz que o parametro array deve ser UNIDIMENSIONAL.

Returns a zero-based array containing a subset of a string array based on a specified filter criteria.

 

Filter(InputStrings, Value[, Include[, Compare]])

Arguments

InputStrings

Required. One-dimensional array of strings to be searched.

Value

Required. String to search for.

Include

Optional. Boolean value indicating whether to return substrings that include or exclude Value. If Include is True, Filter returns the subset of the array that contains Value as a substring. If Include is False, Filter returns the subset of the array that does not contain Value as a substring.

Compare

Optional. Numeric value indicating the kind of string comparison to use. See Settings section for values.

Settings

The Compare argument can have the following values:

Constant Value Description

vbBinaryCompare 0 Perform a binary comparison.

vbTextCompare 1 Perform a textual comparison.

Remarks

If no matches of Value are found within InputStrings, Filter returns an empty array. An error occurs if InputStrings is Null or is not a one-dimensional array.

 

The array returned by the Filter function contains only enough elements to contain the number of matched items.

Valeu Salgado!

 

Mas vou precisar de uma ajudinha nisso! rs rs rs

 

Como eu poderia fazer? Poderia me ajudar com um exemplo?

 

Eu sei que é ser muito "mala", mas eu não achei muita coisa sobre isso.

 

Como seriam os filtros?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu RecordSet é criado de que forma? Set RS = Conexao.EXECUTE ou Set RS = Server.CreateObject("ADODB.RECORDSET")?

Para funcionar deve ser da segunda forma, e ter logo antes do RS.OPEN um RS.CursorLocation = 3. Depois de aberto é só usar a sintaxe: RS.FILTER = "campo = valor", isso irá retornar ao RecordSet apenas aqueles que atenderem ao filtro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.