Ir para conteúdo

Arquivado

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

Thiago Caires

[Resolvido] Erro na Pesquisa por cor

Recommended Posts

Eu tenho um programa aqui de cadastro de presos, me pediram para elaborar uma pesquisa por cor de pele...

dentro do banco de dados "qualificativa" tem a coluna "cutis" que tem cadastrados a cor de cada prisioneiro....

preciso de uma ajuda para elaborar essa pesquisa... fiz uma programação aqui mas ele não está dando certo

gostaria de saber o que esta errado.... ou se alguém poderia me ajudar....

vou deixar abaixo a programação que eu criei:

 

 

 

Private Sub cmdcontar_Click()

 

Data.RecordSource = "select * from qualificativa where esta='SIM'"

Data.Refresh

 

Dim subtotal As Currency

subtotal = 0

 

Dim branca As Currency '1

branca = 0

Dim parda As Currency '2

parda = 0

Dim negra As Currency '3

negra = 0

Dim indigena As Currency '4

indigena = 0

Dim amarela As Currency '5

amarela = 0

 

 

While Not Data.Recordset.EOF

 

If Data.Recordset.Fields("cutis") = "1" Then

branca = branca + 1

 

 

ElseIf Data.Recordset.Fields("cutis") = 2 Then

parda = parda + 1

 

 

ElseIf Data.Recordset.Fields("cutis") = 3 Then

negra = negra + 1

 

 

ElseIf Data.Recordset.Fields("cutis") = 4 Then

indigena = indigena + 1

 

 

ElseIf Data.Recordset.Fields("cutis") = 5 Then

amarela = amarela + 1

 

 

Else

MsgBox "Nenhum Reeducando com esta cor!", vbExclamation, "Atenção!"

Exit Sub

End If

 

Data.Recordset.MoveNext

Wend

 

 

lbltotal.Caption = "Existem: " & subtotal & " Reeducandos na Unidade"

 

 

End Sub

Private Sub Form_Load()

 

var0b = Conexao(Data, caminho_bd, "qpalzmMZN", False)

 

End Sub

 

Private Sub list_Click()

 

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você deseja como retorno de sua consulta? Somente saber quantos tem de cada raça? Se dos, você pode fazer uma query que já te traz esse resultado assim:

select cutis, count(*) as total from tabela group by cutis order by cutis.

Essa consulta te trará a quantidade de cada raça que existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isso mesmo.... eu gostaria de fazer apenas uma consulta de quantos presos teriam com a cor "branca", "negra", "indigena", "parda" e "amarela"

você poderia me explicar melhor como seria essa query, fico muito agradecido pela ajuda....

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficaria algo mais ou menos assim ´p:

 

Data.RecordSource = "select cutis, count(*) as total from qualificativa where esta='SIM'"
Data.Refresh

do until Data.Recordset.EOF

If Data.Recordset.Fields("cutis") = "1" Then
branca = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 2 Then
parda = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 3 Then
negra = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 4 Then
indigena = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 5 Then
amarela = Data.Recordset.Fields("total")

Else
MsgBox "Nenhum Reeducando com esta cor!", vbExclamation, "Atenção!"
Exit Sub
End If

data.recordset.movenext

loop

E me diga uma coisa, o que é isso:

lbltotal.Caption = "Existem: " & subtotal & " Reeducandos na Unidade"

 

Você não está passando nenhum valor para subtotal. O que deveria estar sendo passado ali?

Compartilhar este post


Link para o post
Compartilhar em outros sites

descilpa não era para eu ter colado ele junto....

nesse mesmo relatorio ele gera o total de reeducandos que tem na unidade....

Muito obrigado pela ajuda...

é que eu sou administrador das redes aqui....

e acabaram me pedindo para eu fazer umas alterações no programa aqui....

mas não é meu forte programação....

tenho que fazer ainda um cadastro de diretores aqui também....

já criei na base de dados um campo para diretores....

agora estou programando aqui para fazer um cadastro apenas do nome de cada diretor que for comandar a unidade.....

na base de dados a tabe tem o nome de "DIRETOR"....

se você tiver alguma ideia para fazer esse cadastro de um modo simples te agradeceria muito...

 

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio....

a base de dados que o VB usa aqui é no excel...

tem uma tabela "qualificativa" dentro desta tabela... tem os presos cadastrados coluna "nome" ,coluna "endereço", coluna "artigo" até chegar a coluna "cutis"...

"

Data.RecordSource = "select cutis, count(*) as total from qualificativa where esta='SIM'"

Data.Refresh

"

 

coloquei do modo como você me enformou e deu erro....

do modo como eu estava programando ele não estava encontrando ninguém....

onde será que eu estou errando.... para fazer isso funcionar...

fodah =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio....

vou deixar abaixo o erro que deu:

 

Run-time error '3122'

Voce tentou execultar uma consulta que não inclui a expressão 'cutis' especificada como parte de uma função

 

 

Grato

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

OLha mudei e mesmo assim deu erro...

 

run-timer error '3075'

erro de sintaxe na seuqencia de caracteres na expressão de consulta 'esta='sim group by cutis, order by cutis'

 

 

 

Obrigado

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você copiou exatamente como coloquei, e pelo visto fez isso, repare que abri aspa simples mas não fechei, no sim. Fiz de propósito pra ver se você via, rs

 

OLha mudei e mesmo assim deu erro...

 

run-timer error '3075'

erro de sintaxe na seuqencia de caracteres na expressão de consulta 'esta='sim group by cutis, order by cutis'

 

 

 

Obrigado

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio continua dando erro...

 

run-time error

erro de sintaxe na clausula GROUP BY

 

 

Vou colocar a programação a baixo...

 

Private Sub cmdcontar_Click()

Data.RecordSource = "select cutis, count(*) as total from qualificativa where esta='SIM' group by cutis, order by cutis"
Data.Refresh

Do Until Data.Recordset.EOF

If Data.Recordset.Fields("cutis") = "1" Then
branca = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 2 Then
parda = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 3 Then
negra = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 4 Then
indigena = Data.Recordset.Fields("total")

ElseIf Data.Recordset.Fields("cutis") = 5 Then
amarela = Data.Recordset.Fields("total")

Else
MsgBox "Nenhum Reeducando com esta cor!", vbExclamation, "Atenção!"
Exit Sub
End If

Data.Recordset.MoveNext

Loop

End Sub
Private Sub Form_Load()

var0b = Conexao(Data, caminho_bd, "qpalzmMZN", False)

End Sub

Dentro da base do access tem uma tabela "qualificativa" dentro dela que esta a "cutis"....

 

Pode me ajudar nesse problema?

 

Grato!!

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio eu consegui resolver agora eu clico no pesquisar ele me traz o resultado correto !

vou deixar o código abaixo....

 

Código:

 

Private Sub cmdpesquisar_Click()

estado.RecordSource = "select * from cutis"
estado.Refresh

List1.Clear

Dim rel As String
Dim contador As Currency
contador = 0

Dim stotal As String
stotal = 0

While Not estado.Recordset.EOF
  
   rel = estado.Recordset.Fields("nome") & ""
	  
   qualificativa.RecordSource = "select * from qualificativa where esta='SIM'"
   qualificativa.Refresh
   
   Dim relig As String
   
   While Not qualificativa.Recordset.EOF
	  relig = qualificativa.Recordset.Fields("cutis") & ""
			
	   If relig = rel Then
		 contador = contador + 1
	   End If

	 qualificativa.Recordset.MoveNext
   Wend
   
   List1.AddItem "Existem: " & Format(contador, "00") & " Reeducandos " & rel
   stotal = stotal + contador
   contador = 0

  estado.Recordset.MoveNext
Wend


End Sub

Private Sub Data_Validate(Action As Integer, Save As Integer)

End Sub

Private Sub Form_Load()

var0b = Conexao(estado, caminho_bd, "qpalzmMZN", False)
var0b = Conexao(qualificativa, caminho_bd, "qpalzmMZN", False)

End Sub

Se você puder me ajudar nessa lhe agradeço mesmo....

ele esta funcionando...

mas dá o erro depois que me traz o resultado....

 

Grato!

 

 

Thiago Caires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claudio continua dando erro...

 

run-time error

erro de sintaxe na clausula GROUP BY

Tenta executar esse query direto no Access, veja se funciona.

 

mas dá o erro depois que me traz o resultado....

Qual erro está acusando e em qual linha?

 

Me diga uma coisa, dessa forma que você montou, ele está te dando o resultado que você queria, indicando quantos tem de cada raça? Pelo que olhei o código, não me parece que está fazendo isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já solucionei o erro também...

agora eu clico no pesquisar ele já aparece no "list"

 

exemplo:

 

50 reeducando da cor PARDA

100 reeducando da cor BRANCA

70 reeducando da cor NEGRA

10 reeducando da cor AMARELA

5 reeducando da cor INDIGENA

 

Obrigado pela ajuda!

 

 

 

Agora Claudio eu preciso fazer outra pesquisa.....

preciso fazer ele me trazer o resultado se o preso é

primario ou reincidente.

 

parece ser simples.....

mas na base de dados do Access ele grava assim...

 

TEM A COLUNA "PRIMARIO"

se o preso for primario vai estar o valor SIM

se o preso for reincidente vai estar o valor NÃO

se o preso for primario vai estar o valor SIM

se o preso for reincidente vai estar o valor NÃO

 

 

 

E assim por diante....

agora me ajuda a pensar como eu posso fazer essa pesquisa

ele trazendo o resultado no "list"

 

exemplo : 50 primarios

90 reincidentes

 

 

To tentando pensar aqui...

mas ta dificil....

 

 

Agradeço muito a ajuda!

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.