PESQUISA EM UMA MATRIZ
Boa Tarde.
Andei procurrrando pelo site e não encontrei nenhuma referência a este assunto.
Para realizar uma pesquisa dentro de uma matriz (array) tenho que verificar cada elemento (através de um FOR) ou existe alguma função para isto ?
Obrigado
Eder
Andei procurrrando pelo site e não encontrei nenhuma referência a este assunto.
Para realizar uma pesquisa dentro de uma matriz (array) tenho que verificar cada elemento (através de um FOR) ou existe alguma função para isto ?
Obrigado
Eder
For Linha = 1 to SuaMatriz.NumeroDeLinha
For COluna = 1 to SuaMatriz.NumeroDeColunas
If SuaMatriz(Linha,Coluna).Text = SuaCondicao then
MsgBox 'Achei'
Exit For
end if
next Coluna
Coluna = 0
Next Linha
For COluna = 1 to SuaMatriz.NumeroDeColunas
If SuaMatriz(Linha,Coluna).Text = SuaCondicao then
MsgBox 'Achei'
Exit For
end if
next Coluna
Coluna = 0
Next Linha
Segue um exemplo: Nele foi criado uma matriz (2x2) e a palavra procurada é MATRIZ.
Dim sArray(2, 2) As String, sPalavra As String
Dim L As Integer, C As Integer
sPalavra = "MATRIZ"
sArray(1, 1) = "TESTE"
sArray(2, 1) = "OPERACIONAL"
sArray(1, 2) = "PARA"
sArray(2, 2) = "MATRIZ"
For L = 1 To 2
For C = 1 To 2
If sArray(L, C) = sPalavra Then
MsgBox "PALAVRA " & sPalavra & " ACHADA COM SUCESSO.", vbInformation
Exit For
End If
Next C
Next L
ESPERO TER AJUDADO.
Dim sArray(2, 2) As String, sPalavra As String
Dim L As Integer, C As Integer
sPalavra = "MATRIZ"
sArray(1, 1) = "TESTE"
sArray(2, 1) = "OPERACIONAL"
sArray(1, 2) = "PARA"
sArray(2, 2) = "MATRIZ"
For L = 1 To 2
For C = 1 To 2
If sArray(L, C) = sPalavra Then
MsgBox "PALAVRA " & sPalavra & " ACHADA COM SUCESSO.", vbInformation
Exit For
End If
Next C
Next L
ESPERO TER AJUDADO.
o que vc guarda na sua matriz ?
Obrigado a todos, porém estas não eram as soluções que eu esperava.
Eu buscava uma função que realizasse a pesquisa automaticamente.
Ao Daniel,
Utilizo o Firebird e tenho vários bancos para efeito de segurança.
Em um banco tenho a tabela de pagamentos efetuados e seus respectivos códigos. Em outro banco tenho o cadastro de códigos e suas descrições.
Demora bastante para que encontrar 300 despesas e suas descrições.
Vou efetuar outros testes para minimizar este problema, por exemplo uma matriz multidimensional onde divido os códigos para facilitar a pesquisa.
VALEU !!!!
Eu buscava uma função que realizasse a pesquisa automaticamente.
Ao Daniel,
Utilizo o Firebird e tenho vários bancos para efeito de segurança.
Em um banco tenho a tabela de pagamentos efetuados e seus respectivos códigos. Em outro banco tenho o cadastro de códigos e suas descrições.
Demora bastante para que encontrar 300 despesas e suas descrições.
Vou efetuar outros testes para minimizar este problema, por exemplo uma matriz multidimensional onde divido os códigos para facilitar a pesquisa.
VALEU !!!!
edermir procure algo sobre split, acho que com ele vc consegue.
vou ver se acho algo pra vc
vou ver se acho algo pra vc
veja essa explicacao sobre a funcao Array se te ajuda em algo.
Array(argumentList)
Esta função retorna um variante contendo um array cujos elementos recebem valores de argumentList. O argumento argumentList é uma lista delimitada por vÃÂÂrgulas com valores atribuÃÂÂdos a elementos consecutivos do array. A omissão da argumentList cria um array sem elementos. Para usá-lo, você deve redimensioná-lo com o comando ReDim. As instruções a seguir criam um array com os nomes dos dias da semana:
Dim DiasSemana
DiasSemana = Array("Segunda", "Terça", "Quarta", "Quinta", _
"Sextaâ€ÂÂ, "Sábado", "Domingo")
PrimeiroDia = DiasSemana(0) ' Segunda
SegundoDia = DiasSemana(1) ' Terça
O limite inferior de um array criado com a função Array é sempre 0. Observe que a função Array não dimensiona o array. Ela só atribui valores aos seus elementos.
LBound(arrayname[,dimension])
Esta função informa o menor ÃÂÂndice da dimensão indicada de um array. O argumento arrayname é o nome do array e dimension é um inteiro indicando a dimensão cujo limite inferior será retornado. Se o dimension for omitido, a primeira dimensão será considerada. A função LBound() é usada com a função UBound(), que informa o maior ÃÂÂndice de uma dimensão de um determinado array, para determinar-lhe o tamanho.
UBound(Arrayname [,dimension])
Esta função retorna o maior ÃÂÂndice da dimensão indicada de um array. O argumento Arrayname é o nome do array e dimension é um inteiro indicando a dimensão cujo limite superior será retornado. Se o dimension for omitido, a primeira dimensão será considerada.
Para analisar todos os elementos de um array unidimensional, use as funções LBound() e UBound(). As instruções a seguir convertem os elementos do array de strings String() em maiúsculas:
Inf = LBound(Strings)
Sup = UBound(Strings)
For i = Inf to Sup
String(i) = Ucase(Strings(i))
Next
IsArray(variable)
Esta função informará True se o seu argumento for um array. Se a variável Nomes tiver sido definida como:
Dim Nomes(100)
a função:
IsArray(Nomes)
retornará True.
Array(argumentList)
Esta função retorna um variante contendo um array cujos elementos recebem valores de argumentList. O argumento argumentList é uma lista delimitada por vÃÂÂrgulas com valores atribuÃÂÂdos a elementos consecutivos do array. A omissão da argumentList cria um array sem elementos. Para usá-lo, você deve redimensioná-lo com o comando ReDim. As instruções a seguir criam um array com os nomes dos dias da semana:
Dim DiasSemana
DiasSemana = Array("Segunda", "Terça", "Quarta", "Quinta", _
"Sextaâ€ÂÂ, "Sábado", "Domingo")
PrimeiroDia = DiasSemana(0) ' Segunda
SegundoDia = DiasSemana(1) ' Terça
O limite inferior de um array criado com a função Array é sempre 0. Observe que a função Array não dimensiona o array. Ela só atribui valores aos seus elementos.
LBound(arrayname[,dimension])
Esta função informa o menor ÃÂÂndice da dimensão indicada de um array. O argumento arrayname é o nome do array e dimension é um inteiro indicando a dimensão cujo limite inferior será retornado. Se o dimension for omitido, a primeira dimensão será considerada. A função LBound() é usada com a função UBound(), que informa o maior ÃÂÂndice de uma dimensão de um determinado array, para determinar-lhe o tamanho.
UBound(Arrayname [,dimension])
Esta função retorna o maior ÃÂÂndice da dimensão indicada de um array. O argumento Arrayname é o nome do array e dimension é um inteiro indicando a dimensão cujo limite superior será retornado. Se o dimension for omitido, a primeira dimensão será considerada.
Para analisar todos os elementos de um array unidimensional, use as funções LBound() e UBound(). As instruções a seguir convertem os elementos do array de strings String() em maiúsculas:
Inf = LBound(Strings)
Sup = UBound(Strings)
For i = Inf to Sup
String(i) = Ucase(Strings(i))
Next
IsArray(variable)
Esta função informará True se o seu argumento for um array. Se a variável Nomes tiver sido definida como:
Dim Nomes(100)
a função:
IsArray(Nomes)
retornará True.
talvez o split tb possa te ajudar
Split(expression,[delimiter],[limit],[compare])
Esta função é o oposto da função Join(0. Ela retorna um array unidimensional de base zero contendo um número especificado de substrings. O argumento expression é uma string que contém a string original que será subdividida em substrings e o argumento opcional delimiter é um caractere usado para delimitar as substrings. Se o delimiter for omitido, será assumido o caractere de espaço (“ “) como delimitador. Se o delimiter for uma string de comprimento zero, será retornado um array de um único elemento contendo toda a expressão. O argumento limit também é opcional e ele determina o número de substrings a serem retornadas. Se ele for -1, todas as substrings serão retornadas. O último argumento, compare, também é opcional e indica o tipo de comparação a ser usada ao avaliar substrings. Seus valores válidos são descritos na função Filter().
Digamos que você tenha declarado uma variável string com o seguinte nome de caminho:
path = "c:\win\desktop\ActiveX\Exemplos\VBSCRIPT"
A função Split() pode extrair os componentes do caminho e atribuÃÂÂ-los ao array Parts por meio da seguinte instrução:
Parts = Split("c:\win\desktop\ActiveX\Exemplos\VBSCRIPT", "\")
Para exibir as partes do caminho, configure um laço como o seguinte:
For i = 0 To ubound(Parts)
MsgBox parts(i)
Next
Split(expression,[delimiter],[limit],[compare])
Esta função é o oposto da função Join(0. Ela retorna um array unidimensional de base zero contendo um número especificado de substrings. O argumento expression é uma string que contém a string original que será subdividida em substrings e o argumento opcional delimiter é um caractere usado para delimitar as substrings. Se o delimiter for omitido, será assumido o caractere de espaço (“ “) como delimitador. Se o delimiter for uma string de comprimento zero, será retornado um array de um único elemento contendo toda a expressão. O argumento limit também é opcional e ele determina o número de substrings a serem retornadas. Se ele for -1, todas as substrings serão retornadas. O último argumento, compare, também é opcional e indica o tipo de comparação a ser usada ao avaliar substrings. Seus valores válidos são descritos na função Filter().
Digamos que você tenha declarado uma variável string com o seguinte nome de caminho:
path = "c:\win\desktop\ActiveX\Exemplos\VBSCRIPT"
A função Split() pode extrair os componentes do caminho e atribuÃÂÂ-los ao array Parts por meio da seguinte instrução:
Parts = Split("c:\win\desktop\ActiveX\Exemplos\VBSCRIPT", "\")
Para exibir as partes do caminho, configure um laço como o seguinte:
For i = 0 To ubound(Parts)
MsgBox parts(i)
Next
"Vários bancos" não é uma solução de segurança, e sim um massacre na performance. Desculpe, mas você não resolverá o seu problema desta maneira. Analise o conceito de função.
Se você quer uma função que faça a pesquisa em uma matriz, ela pode ter o nome que for, a assinatura que for, mas em seu nucleo, ira funcionar com laços, do mesmo jeito que citamos antes para voce.
Repense esta sua distribuição de bancos, imagine que a cada conexão em um banco, é um pedaço de banda consumida.
Se você quer uma função que faça a pesquisa em uma matriz, ela pode ter o nome que for, a assinatura que for, mas em seu nucleo, ira funcionar com laços, do mesmo jeito que citamos antes para voce.
Repense esta sua distribuição de bancos, imagine que a cada conexão em um banco, é um pedaço de banda consumida.
Concordo com você ALMARTI.
Estou realmente pensando em unificar o banco. Em alguns casos ainda manterei dividido devido a quantidade de tabelas de cada banco.
Quanto a rotina, pesquisava por uma "caixa preta" porém já percebi que a solução é desenvolve-la.
Obrigado a todos novamente
Estou realmente pensando em unificar o banco. Em alguns casos ainda manterei dividido devido a quantidade de tabelas de cada banco.
Quanto a rotina, pesquisava por uma "caixa preta" porém já percebi que a solução é desenvolve-la.
Obrigado a todos novamente
Tópico encerrado , respostas não são mais permitidas