BUSCA DINAMICA 02

RCMRO 08/12/2009 13:37:48
#329338
Não tenho a mínima idéia... Aliás, nem tem lógica... Se achar coerente, me manda o banco completo que eu faço o teste para ver se entendo... Se for me enviar, me manda também o código do desenho que você usou para fazer o teste que deu errado para eu simular a mesma situação.
A única possibilidade que vejo é o mesmo código de desenho em vários documentos diferente mas, com a pontuação que coincide com as opções que fizemos:
Ex.:
Se você fornecer o código de desenho 0685016041, ele irá trazer TODOS os documentos que tenham qualquer um dos seguintes códigos: 0685016041, 0685-0-160-41 , 0685-01-604-1, 0685.0.160.41, 0685.01.604.1
Se outros registros tiverem um desses formatos, serão apresentados também.
IRENKO 09/12/2009 08:04:23
#329395
Observe bem, no campo Desenho da tabela tem o desenho (0679-02-348-1) que se relaciona ao número 6326 o qual devo mostrar no Grid. Se eu digito no TextBusca 0679-02-348-1 com a formatação o select retorna somente o 6326, se eu digito 0679023481, ele retorna varios números. Segue o banco original.
RCMRO 09/12/2009 12:11:01
#329412
Pronto. Código corrigido.
Agora é só testar, confirmar, fechar o tópico e me pontuar (risos).

Dim Dado As String
Dim Formato10(4) As String
Dim Formato8(4) As String
Dim DadoFormatado(4) As String
Dim DadoSemFormato As String
Dim i As Integer

Formato8(0) = [Ô]@@@@\-@\-@@\-@[Ô]
Formato8(1) = [Ô]@@@@\.@\.@@\.@[Ô]

Formato10(0) = [Ô]@@@@\-@\-@@@\-@@[Ô]
Formato10(1) = [Ô]@@@@\-@@\-@@@\-@[Ô]
Formato10(2) = [Ô]@@@@\.@\.@@@\.@@[Ô]
Formato10(3) = [Ô]@@@@\.@@\.@@@\.@[Ô]
Dado = Trim(txtbusca.Text)

If Len(Dado) = 8 Then
For i = 0 To UBound(Formato10) - 1
If Formato8(i) <> [Ô][Ô] Then
DadoFormatado(i) = Format(Dado, Formato8(i))
End If
Next
ElseIf Len(Dado) = 10 Then
For i = 0 To UBound(Formato10) - 1
If Formato10(i) <> [Ô][Ô] Then
DadoFormatado(i) = Format(Dado, Formato10(i))
End If
Next
End If

DadoSemFormato = Replace(Replace(Dado, [Ô]-[Ô], [Ô][Ô]), [Ô].[Ô], [Ô][Ô])
If Len(Dado) = 11 Or Len(Dado) = 13 Then
.Source = [Ô]SELECT Desenho,LM_2 AS Lista FROM DadosCab WHERE Desenho = [ô][Ô] & Dado & [Ô][ô] OR Desenho = [ô][Ô] & DadoSemFormato & [Ô][ô][Ô]
Else
.Source = [Ô]SELECT Desenho, LM_2 AS Lista FROM DadosCab WHERE Desenho = [ô][Ô] & DadoSemFormato & [Ô][ô][Ô]
For i = 0 To UBound(DadoFormatado)
If DadoFormatado(i) <> [Ô][Ô] Then
.Source = .Source & [Ô] OR Desenho = [ô][Ô] & DadoFormatado(i) & [Ô][ô][Ô]
End If
Next
.Source = .Source & [Ô] ORDER BY LM_2[Ô]
End If
IRENKO 09/12/2009 12:32:31
#329413
Valeu RCMRO, obrigado pela paciencia.O codigo ficou assim:

Dim Dado As String
Dim Formato10(4) As String
Dim Formato8(4) As String
Dim DadoFormatado(4) As String
Dim DadoSemFormato As String
Dim Source As String
Dim i As Integer

Formato8(0) = [Ô]@@@@\-@\-@@\-@[Ô]
Formato8(1) = [Ô]@@@@\.@\.@@\.@[Ô]

Formato10(0) = [Ô]@@@@\-@\-@@@\-@@[Ô]
Formato10(1) = [Ô]@@@@\-@@\-@@@\-@[Ô]
Formato10(2) = [Ô]@@@@\.@\.@@@\.@@[Ô]
Formato10(3) = [Ô]@@@@\.@@\.@@@\.@[Ô]
[ô]Formato10(4) = [Ô]@@@@@@@@@@[Ô]
Dado = Trim(TxtBusca.text)

If Len(Dado) = 8 Then
For i = 0 To UBound(Formato10) - 1
If Formato8(i) <> [Ô][Ô] Then
DadoFormatado(i) = Format(Dado, Formato8(i))
End If
Next
ElseIf Len(Dado) = 10 Then
For i = 0 To UBound(Formato10) - 1
If Formato10(i) <> [Ô][Ô] Then
DadoFormatado(i) = Format(Dado, Formato10(i))
End If
Next
End If

DadoSemFormato = Replace(Replace(Dado, [Ô]-[Ô], [Ô][Ô]), [Ô].[Ô], [Ô][Ô])
If Len(Dado) = 11 Or Len(Dado) = 13 Then
.Source = [Ô]SELECT Desenho,LM_2 AS Lista FROM DadosCab WHERE Desenho = [ô][Ô] & Dado & [Ô][ô] OR Desenho = [ô][Ô] & DadoSemFormato & [Ô][ô][Ô]
Else
.Source = [Ô][Ô]
For i = 0 To UBound(DadoFormatado)
If DadoFormatado(i) <> [Ô][Ô] Then
If .Source = [Ô][Ô] Then
.Source = [Ô]SELECT Desenho, LM_2 AS Lista FROM DadosCab WHERE Desenho = [ô][Ô] & DadoFormatado(i) & [Ô][ô][Ô]
Else
.Source = .Source & [Ô] OR Desenho = [ô][Ô] & DadoFormatado(i) & [Ô][ô][Ô]
End If
End If
Next
.Source = .Source & [Ô] ORDER BY LM_2[Ô]
End If
Página 3 de 3 [24 registro(s)]
Tópico encerrado , respostas não são mais permitidas