USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Access
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 22/01/2005 18:38 hs            
Ok Korn acho q agoooooooooooooooooooooooooooooooooooooooooooora a coisa
vaaaaaaaaaaaaaaaaaaaaaaaaaaaaai!!!!Emoções
 
Segue abaixo versão 1.1 do código q gera a consulta:
 
***********************************************************
Dim i As Integer, j As Integer, intSQL As Integer
Dim s As String, strSQL As String, strCampo As String
Dim s2() As String, strParteSQL() As String
Dim ObjectAccess As Object
Dim campo As String
 
 
Private Sub Command1_Click()
Text1 = Trim(Text1)
If Text1 = "" Then Exit Sub
For i = 1 To Len(Text1)
If Mid(Text1, i, 1) < Chr(48) Or Mid(Text1, i, 1) > Chr(57) Then
If Mid(Text1, i, 1) <> ";" And Mid(Text1, i, 1) <> "-" Or _
VBA.Right(Text1, 1) = ";" Or VBA.Right(Text1, 1) = "-" Then
MsgBox "Existem caracteres inválidos", vbCritical, "Erro no filtro"
Exit Sub
End If
End If
Next
For i = 1 To Len(Text1)
If Mid(Text1, i, 1) = ";" Then j = j + 1
Next
ReDim s2(j) As String
j = 0
For i = Len(Text1) To 1 Step -1
If Mid(Text1, i, 1) <> ";" Then
s = Mid(Text1, i, 1) & s
If i - 1 = 0 Then s2(j) = s
Else
s2(j) = s
s = ""
j = j + 1
End If
Next
For i = 0 To j 'Conta a qtde de intervalos existentes na expressão, exemplo
'de intervalo: 6-8
If InStr(s2(i), "-") > 0 Then intSQL = intSQL + 1
Next

campo = InputBox("Digite o nome do campo a ser filtrado", "Filtro")
If intSQL >= 1 Then
 ReDim strParteSQL(intSQL - 1) As String
 strSQL = campo & " "
Else
For i = 0 To j 'Formação dos campos avulsos: campo = numero
If i > 0 Then
strSQL = strSQL & " OR " & campo & " = " & s2(i)
Else
strSQL = campo & " = " & s2(i)
End If
Next
GoTo AbreRelatorio
End If

intSQL = 0
For i = 0 To j 'Monta a sentença BETWEEN
If InStr(s2(i), "-") > 0 Then
strParteSQL(intSQL) = " BETWEEN " & Left(s2(i), InStr(s2(i), "-") - 1) & _
" AND " & VBA.Right(s2(i), InStr(StrReverse(s2(i)), "-") - 1)
intSQL = intSQL + 1
End If
Next
intSQL = intSQL - 1
For i = 0 To intSQL 'Formação dos BETWEEN'S
If i = intSQL Then strSQL = strSQL & strParteSQL(i)
If i < intSQL Then strSQL = strSQL & strParteSQL(i) & " OR " & campo & " "
Next
For i = 0 To j 'Formação dos campos avulsos: campo = numero
If InStr(s2(i), "-") = 0 Then
strSQL = strSQL & " OR " & campo & " = " & s2(i)
End If
Next

AbreRelatorio:
'abrindo o relatório
Set ObjectAccess = CreateObject("access.application")
With ObjectAccess
.OpenCurrentDatabase filepath:="C:Caminho_do_banco.mdb"  'caminho do
'banco
.Visible = False
.DoCmd.OpenReport "Etiquetas_Proprietarios", acViewPreview, , strSQL, acWindowNormal
.CloseCurrentDatabase
End With
Set ObjectAccess = Nothing
End Sub
**********************************************************
Acho q agora dará certo... em azul está o q mudei, mas lembre-se de fazer a consistência com os dados q o usuário coloca. Eu procurei fazer o possível mas teste todas as possibilidades q imaginar. Ele aceita somente caracteres numéricos, ponto-e-vírgula, e traço e não aceita ponto-e-vírgula como último caractere ok??
 
boa sorte, se precisar estamos ae e qq problema é só postar
 
t+
TÓPICO EDITADO
   
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 23/01/2005 23:47 hs            
Korn,
 
Não li esse codigo do Ghost, mas deve funcionar...
 
Mas vou te dar uma sugestão mais pratica:
 
No seu SQL, usa a instrução IN, assim:
 
Select * from Clientes Where CodCli IN [1,2,3,5,7,11,15,248]
 
Assim, vai retornar apenas os registros onde CodCli está na lista entre colchetes.
Esse SQL é batata pra fazer o que vc quer... não tenho certeza se roda no Access, mas no SQl Server e no IB funciona perfeitamente...
 
Ve se isso resolve teu problema...
 
Ah, pra gerar no vb, basta substituir os valores por variaveis... vc sabe como fazer, não?
 
Abraços...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Korn
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 24/01/2005 14:07 hs            
Eliser ,
Eu num sei como fazer isso que vc esta falando mas gostaria de aprender ta ligado , esse jeito que o ghost esta ensinando tamen é facil e esta chegando onde eu quero, mas quanto mais do mesmo a gente aprender pra qualquer um aki é melhor. falou obrigado pelo interesse
ae ghost postei um barato do .exe no seu email

Jesus Cristo é O Senhor!!!
TÓPICO EDITADO
   
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 25/01/2005 01:48 hs            
Como o usuario seleciona os codigos que deseja listar???
Como o programa sabe que deve listar o 1, 2 e 4, e não listar o 3 ???
 
 


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Korn
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 25/01/2005 13:48 hs            
eliser é isso que o ghost esta me ensinando , elele me passou o codigo acima , so que deu um errinho,

Jesus Cristo é O Senhor!!!
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 26/01/2005 00:14 hs            
Uma Correção:
No SQL, onde eu usei Colchetes [] para delimitar a lista, deve-se usar ()...
Foi mal pelo erro...
 
________________________________
Korn,
 
Vou te mandar um exemplo por email... é coisa simples, vai dar uma clareada... depois vc adapta pra sua necessidade... acho q amanha te mando...


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Página(s): 8/12     « ANTERIOR    PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página