PESQUISA EM REGISTO EM SQL
Boas
Estou com uma duvida, que não sei como fazer/organizar.
O objectivo passa por fazer uma pesquisa a base de dados aos últimos 10 registos, no qual são entradas e saÃdas de alunos. como faço para saber se são entradas ou saÃdas!!! Tinha pensado no comando MOD. qualquer coisa com
If registo Mod 2 = 0 Then
entrada
else
saida
end if
.... mas como se passa em varias datas não sei como vou fazer.
o código que já tenho feito é o seguinte:
Dim contador As Integer
contador = 0
stropen = [Ô]select * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] order by id desc[Ô]
rs.Open stropen, cnn
topo:
If rs.EOF Or rs.BOF Then
rs.Close
GoTo fim
Else
GoTo continua
End If
continua:
If contador = 9 Then
rs.Close
GoTo fim
End If
datinha = rs.fields([Ô]data[Ô])
horinha = rs.fields([Ô]horas[Ô])
temper = Format(horinha, [Ô]HH:MM:SS[Ô])
passagem = rs.fields([Ô]tipo[Ô])
contador = contador + 1
........
Label34.Caption = Label38.Caption
Label35.Caption = Label39.Caption
Label36.Caption = Label40.Caption
Label37.Caption = Label41.Caption
Label38.Caption = datinha
Label39.Caption = temper
Label40.Caption = nrprocesso
If passagem = 0 Then
resultado = [Ô]Passagem não autoriada[Ô]
End If
If passagem = 1 Then
resultado = [Ô]Passagem Normal[Ô]
End If
Label41.Caption = resultado
rs.MoveNext
GoTo topo
Estou com uma duvida, que não sei como fazer/organizar.
O objectivo passa por fazer uma pesquisa a base de dados aos últimos 10 registos, no qual são entradas e saÃdas de alunos. como faço para saber se são entradas ou saÃdas!!! Tinha pensado no comando MOD. qualquer coisa com
If registo Mod 2 = 0 Then
entrada
else
saida
end if
.... mas como se passa em varias datas não sei como vou fazer.
o código que já tenho feito é o seguinte:
Dim contador As Integer
contador = 0
stropen = [Ô]select * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] order by id desc[Ô]
rs.Open stropen, cnn
topo:
If rs.EOF Or rs.BOF Then
rs.Close
GoTo fim
Else
GoTo continua
End If
continua:
If contador = 9 Then
rs.Close
GoTo fim
End If
datinha = rs.fields([Ô]data[Ô])
horinha = rs.fields([Ô]horas[Ô])
temper = Format(horinha, [Ô]HH:MM:SS[Ô])
passagem = rs.fields([Ô]tipo[Ô])
contador = contador + 1
........
Label34.Caption = Label38.Caption
Label35.Caption = Label39.Caption
Label36.Caption = Label40.Caption
Label37.Caption = Label41.Caption
Label38.Caption = datinha
Label39.Caption = temper
Label40.Caption = nrprocesso
If passagem = 0 Then
resultado = [Ô]Passagem não autoriada[Ô]
End If
If passagem = 1 Then
resultado = [Ô]Passagem Normal[Ô]
End If
Label41.Caption = resultado
rs.MoveNext
GoTo topo
stropen = [Ô]select TOP 10 * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] order by id desc[Ô]
Citação::
stropen = [Ô]select TOP 10 * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] order by id desc[Ô]
isso vai criar um array?
E como faço para obter o resultado na pesquisa?
Cara, a sua dúvida não está clara pois nem sei do que está falando.
Talvez enviando uma versão da Base de Dados e detalhando a sua necessidade, eu possa alterar a sua rotina para funcionar como vc quer...
Aliás, a instrução acima não cria uma ARRAY, você usa ela para criar, loga abaixo no seu código mesmo, um RECORDSET com somente 10 registros ordenados inversamente pelo campo [Ô]id[Ô].
Se me permite algumas observações:
. Não usa a instrução GOTO pois ela existe somente para NÃO SER USADA.
. Falta um LOOP para varrer o Recordset senão, para que você precisa de 10 registros?
De qualquer forma, imagino o seu código assim:
Talvez enviando uma versão da Base de Dados e detalhando a sua necessidade, eu possa alterar a sua rotina para funcionar como vc quer...
Aliás, a instrução acima não cria uma ARRAY, você usa ela para criar, loga abaixo no seu código mesmo, um RECORDSET com somente 10 registros ordenados inversamente pelo campo [Ô]id[Ô].
Se me permite algumas observações:
. Não usa a instrução GOTO pois ela existe somente para NÃO SER USADA.
. Falta um LOOP para varrer o Recordset senão, para que você precisa de 10 registros?
De qualquer forma, imagino o seu código assim:
stropen = [Ô]select TOP 10 * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] order by id desc[Ô]
rs.Open stropen, cnn
If not rs.EOF Then
Do While Not rs.EOF
datinha = rs.fields([Ô]data[Ô])
horinha = rs.fields([Ô]horas[Ô])
temper = Format(horinha, [Ô]HH:MM:SS[Ô])
passagem = rs.fields([Ô]tipo[Ô])
........
Label34.Caption = Label38.Caption
Label35.Caption = Label39.Caption
Label36.Caption = Label40.Caption
Label37.Caption = Label41.Caption
Label38.Caption = datinha
Label39.Caption = temper
Label40.Caption = nrprocesso
If passagem = 0 Then
resultado = [Ô]Passagem não autoriada[Ô]
Else
resultado = [Ô]Passagem Normal[Ô]
exit do
End If
Label41.Caption = resultado
rs.MoveNext
loop
End If
rs.Close
Eu acho que entendo mais ou menos que se passa e sua i[ô]deia a principio é lógica, mas precisamos saber o seguinte.
como esta a estrutura da base de dados? Quais os campos?
se eu ão estiver enganado vc está salvando da seguinte maneira
em sequencia
data Hora
01/01/2010 07:00 <---entradada
01/01/2010 12:00 <---Saida
01/01/2010 14:00 <----entrada
01/01/2010 18:00 <----Saida
acima é uma suposição de como esteja gravando os dados
apenas confirme se é isto, se não for explique como está armazenando os dados, e quais os nomes dos campos.
como esta a estrutura da base de dados? Quais os campos?
se eu ão estiver enganado vc está salvando da seguinte maneira
em sequencia
data Hora
01/01/2010 07:00 <---entradada
01/01/2010 12:00 <---Saida
01/01/2010 14:00 <----entrada
01/01/2010 18:00 <----Saida
acima é uma suposição de como esteja gravando os dados
apenas confirme se é isto, se não for explique como está armazenando os dados, e quais os nomes dos campos.
Detalhe da base de dados:
A base de dados chama-se escola e tem os seguintes campos
------ id
------ data
------ hora
------ tipo
------ nrprocesso
O que eu pretendo fazer é ir a base de dados filtrar os últimos 10 registos de maneira a organiza-los do mais recente para o mais antigo. Só que quero que aparece (numa instrução) se for Ãmpar é entrada se for par é saÃda. Vamos supor que sé encontrou 6 registos
55 - 2010-01-02 - 11:00:01 - 1 - 123456 .......Entrada (só existe 1 registo é impar)
55 - 2010-01-03 - 11:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 5 Ãmpar é entrada)
55 - 2010-01-03 - 12:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 4 par é saÃda)
55 - 2010-01-03 - 13:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 3 Ãmpar é entrada)
55 - 2010-01-03 - 14:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 2 par é saÃda)
55 - 2010-01-03 - 15:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 1 Ãmpar é entrada)
A base de dados chama-se escola e tem os seguintes campos
------ id
------ data
------ hora
------ tipo
------ nrprocesso
O que eu pretendo fazer é ir a base de dados filtrar os últimos 10 registos de maneira a organiza-los do mais recente para o mais antigo. Só que quero que aparece (numa instrução) se for Ãmpar é entrada se for par é saÃda. Vamos supor que sé encontrou 6 registos
55 - 2010-01-02 - 11:00:01 - 1 - 123456 .......Entrada (só existe 1 registo é impar)
55 - 2010-01-03 - 11:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 5 Ãmpar é entrada)
55 - 2010-01-03 - 12:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 4 par é saÃda)
55 - 2010-01-03 - 13:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 3 Ãmpar é entrada)
55 - 2010-01-03 - 14:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 2 par é saÃda)
55 - 2010-01-03 - 15:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 1 Ãmpar é entrada)
Veja se é assim:
Dim Contador as Double
stropen = [Ô]select * from moventradas where nrprocesso=[ô][Ô] & Str$(nrprocesso) & [Ô][ô] AND [Data] = #[ô] & Format(txtDataConsulta.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô]# order by id desc[Ô]
rs.Open stropen, cnn
If not rs.EOF Then
Contador = 0
Do While Not rs.EOF
Contador = Contador + 1
datinha = rs.fields([Ô]data[Ô])
horinha = rs.fields([Ô]horas[Ô])
temper = Format(horinha, [Ô]HH:MM:SS[Ô])
........
Label34.Caption = Label38.Caption
Label35.Caption = Label39.Caption
Label36.Caption = Label40.Caption
Label37.Caption = Label41.Caption
Label38.Caption = datinha
Label39.Caption = temper
Label40.Caption = nrprocesso
Label41.Caption = Iif(Contador / 2 = Int(Contador / 2), [Ô]SaÃda[Ô], [Ô]Entrada[Ô])
rs.MoveNext
loop
End If
rs.Close
AND [Data] = #[ô] & Format(txtDataConsulta.Text, [Ô]yyyy-mm-dd[Ô]) & [Ô]# order by id desc[Ô] ------- esta parte não percebi muito bem.
não sei se me expliquei bem mas temos quer analisar perante a data
o objectivo passa em ir a base de dados e trazer os últimos 10 registos
ID Data Hora tipo Nrprocesso resultado que eu queria obter
1 - 2010-01-02 - 11:00:01 - 1 - 123456 .......Entrada (só existe 1 registo é impar)
2 - 2010-01-03 - 11:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 5 Ãmpar é entrada)
3 - 2010-01-03 - 12:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 4 par é saÃda)
4 - 2010-01-03 - 13:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 3 Ãmpar é entrada)
5 - 2010-01-03 - 14:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 2 par é saÃda)
6 - 2010-01-04 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
7 - 2010-01-05 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
8 - 2010-01-06 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
9 - 2010-01-07 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
10 - 2010-01-08 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
O dia 2010-01-02 sõ tem um registo por isso é entrada
O dia 2010-01-03 tem 5 passagens ai é que se tem que ver qual é Ãmpar e par para a entrada ou saÃda
os restos dos dias 2010-01-04 e 2010-01-05 e 2010-01-06 e 2010-01-07 e 2010-01-08 só tem um registo só existiu uma passagem é tudo entradas, mas tem que se verificar pela data porque se no dia 2010-01-08 o registo 11 que não aparece for mais uma passagem ja seria saÃda.
não sei se me expliquei bem mas temos quer analisar perante a data
o objectivo passa em ir a base de dados e trazer os últimos 10 registos
ID Data Hora tipo Nrprocesso resultado que eu queria obter
1 - 2010-01-02 - 11:00:01 - 1 - 123456 .......Entrada (só existe 1 registo é impar)
2 - 2010-01-03 - 11:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 5 Ãmpar é entrada)
3 - 2010-01-03 - 12:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 4 par é saÃda)
4 - 2010-01-03 - 13:00:01 - 1 - 123456 .......Entrada (existem 5 registo nesta data, como este é o 3 Ãmpar é entrada)
5 - 2010-01-03 - 14:00:01 - 1 - 123456 .......SaÃda (existem 5 registo nesta data, como este é o 2 par é saÃda)
6 - 2010-01-04 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
7 - 2010-01-05 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
8 - 2010-01-06 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
9 - 2010-01-07 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
10 - 2010-01-08 - 15:00:01 - 1 - 123456 .......Entrada (existem 1 registo nesta data, como este é o 1 Ãmpar é entrada)
O dia 2010-01-02 sõ tem um registo por isso é entrada
O dia 2010-01-03 tem 5 passagens ai é que se tem que ver qual é Ãmpar e par para a entrada ou saÃda
os restos dos dias 2010-01-04 e 2010-01-05 e 2010-01-06 e 2010-01-07 e 2010-01-08 só tem um registo só existiu uma passagem é tudo entradas, mas tem que se verificar pela data porque se no dia 2010-01-08 o registo 11 que não aparece for mais uma passagem ja seria saÃda.
bom vamos lá a idéia a principio é a certa utlizar o MOD para saber qual é par e qual é impar
poré para funcionar vc deve coloca-la em um laço DO LOOP
exemplo
Bom acima fiz um exemplo para exibir os dados em um listbox, tente adapta-lo, não tenho certeza mas usando o Group By e order By conforme acima conseguiiremos o resultado
poré para funcionar vc deve coloca-la em um laço DO LOOP
exemplo
Dim cont As Integer
Dim Dta As String
Dim Hra As String
Dim Pas As Integer
Dim ES as String
cont = 0
stropen = [Ô]select top 10 * from moventradas where nrprocesso=[ô][Ô] + Str$(nrprocesso) + [Ô][ô] Group By [Data] order by [Data],[Horas] desc[Ô]
rs.Open stropen, cnn
Do While Not rs.EOF
Cont = Cont + 1
Dta = rs.fields([Ô]data[Ô])
Hra = Format(rs.fields([Ô]horas[Ô]),[Ô]hh:nn:ss[Ô])
Pas = rs.fields([Ô]tipo[Ô])
If (Contador Mod 2) = 0 Then
[ô] par
ES = [Ô]Saida[Ô]
Else
[ô]Impar
ES = [Ô]Entrada[Ô]
End if
rs.MoveNext
List1.AddItem Dta & [Ô] - [Ô] & Hra & [Ô] - [Ô] & Pas & [Ô] - [Ô] & ES
Loop
Bom acima fiz um exemplo para exibir os dados em um listbox, tente adapta-lo, não tenho certeza mas usando o Group By e order By conforme acima conseguiiremos o resultado
analizando melhor perceb que pode até exbibir os dados corretamente, porem a função entrada e saida não irá funcionar
me diga como pretente exibir estes dados, se for usar o flexgrid, da pra fazer uma boa adaptação
me diga como pretente exibir estes dados, se for usar o flexgrid, da pra fazer uma boa adaptação
Coloquei num ficheiro zip o form mais a tabela da base de dados
Não estava a pensar em usar flexgrid, mas se for mais fácil por tudo bem
Não estava a pensar em usar flexgrid, mas se for mais fácil por tudo bem
Tópico encerrado , respostas não são mais permitidas