REGISTOS NO FINAL DA TABELA - TA CONFUSO
Viva pessoal!
Tou com uma dúvida meio confusa (pelo menos pra mim). Espero que tenham paciência para a lêr! [S36]
Tenho uma tabela num BD de access que, entre outros, tem os seguintes dados:
Caixa Nº | Bolas
1 1
2 1
3 5
1 8
2 1
3 1
1 6
3 1
Isto significa, por exemplo: caixa nº1 teve 1 bola, teve 8 bolas mas no fim ficou com 8.
Estes dados são lançados aleatóriamente e eu não os posso alterar.
A lista está cronologicamente ordenada. No final dá pra vêr que a caixa nº 2 não foi usada, facto que também não é previsivel.
De que forma, usando uma expressão SQL, posso seleccionar apenas os últimos registos de modo a exibir numas labels o conteudo final das caixas e caso 1 caixa não seja usada, também preciso de o indicar.
Desculpem, provavelmente haveria forma mais simples de expà 'r o problema....mas é como eu digo......tou meio confuso! [S82]
Tou com uma dúvida meio confusa (pelo menos pra mim). Espero que tenham paciência para a lêr! [S36]
Tenho uma tabela num BD de access que, entre outros, tem os seguintes dados:
Caixa Nº | Bolas
1 1
2 1
3 5
1 8
2 1
3 1
1 6
3 1
Isto significa, por exemplo: caixa nº1 teve 1 bola, teve 8 bolas mas no fim ficou com 8.
Estes dados são lançados aleatóriamente e eu não os posso alterar.
A lista está cronologicamente ordenada. No final dá pra vêr que a caixa nº 2 não foi usada, facto que também não é previsivel.
De que forma, usando uma expressão SQL, posso seleccionar apenas os últimos registos de modo a exibir numas labels o conteudo final das caixas e caso 1 caixa não seja usada, também preciso de o indicar.
Desculpem, provavelmente haveria forma mais simples de expà 'r o problema....mas é como eu digo......tou meio confuso! [S82]
Miguel
Eu realmente não estou entendendo nada.
[s55]
Por favo, aumente o Universo de Amostras, e por que é que as Caixas 1, 2 e 3 apresentam valores diferentes?
Este é o exemplo de EstatÃstica que postei no teu Tópico anterior, não é? Se for, como são gerados estes números? (Importados de um TXT?)
Como está confuso, [txt-color=#0000ff]explique o processo em si[/txt-color]!
[s92]
Eu realmente não estou entendendo nada.
[s55]
Por favo, aumente o Universo de Amostras, e por que é que as Caixas 1, 2 e 3 apresentam valores diferentes?
Este é o exemplo de EstatÃstica que postei no teu Tópico anterior, não é? Se for, como são gerados estes números? (Importados de um TXT?)
Como está confuso, [txt-color=#0000ff]explique o processo em si[/txt-color]!
[s92]
Ok! Aqui vai! Mas acho que agora ainda mais complicado vai ficar.
As "caixas" e as "bolas" foi apenas para (tentar) simplificar, porque o que se passa na realidade é o seguinte:
- temos 1 motherboard com 8 sockets de memória RAM;
- nessa motherboard vão ser colocados de cada vez, 8 módulos de memória
- de seguida é iniciada uma aplicação que testa esses módulos e gera num ficheiro TXT, o numero do socket e, se passou coloca o nº "1" e se falhou coloca um nº entre 5 e 8 (tá relacionado com o tipo de falha eléctrica).
- os dados vão sendo adicionados nesse ficheiro que fica com o seguinte aspecto:
Socket Result
1 5
2 1...etc....
- um pormenor: como os sockets por vezes se danificam, pode acontecer que nesta lista, em vez de ficar socket 1,2,3,4,5,6,7,8 possa ficar 1,3,4,5,7,8 (sockets 2 e 6 danificados)
- como não temos uma aplicação que interprete estes dados, tou criando uma que o faça.
- para já, a aplicação transporta estes dados para uma tabela de access (apenas porque é mais fácil pra mim) e apresenta outros dados estatiscos que não vale a pena mencionar.
- mas agora o que eu pretendo, é apresentar num form, o ultimo resultado do teste: numero do socket; resultado e caso não tenha sido usado deve apresentar como resultado um "-".
A minha dúvida é então, qual a expressão SQL que me consegue dar estes resultados.
Abraço e obrigado pela paciência.
As "caixas" e as "bolas" foi apenas para (tentar) simplificar, porque o que se passa na realidade é o seguinte:
- temos 1 motherboard com 8 sockets de memória RAM;
- nessa motherboard vão ser colocados de cada vez, 8 módulos de memória
- de seguida é iniciada uma aplicação que testa esses módulos e gera num ficheiro TXT, o numero do socket e, se passou coloca o nº "1" e se falhou coloca um nº entre 5 e 8 (tá relacionado com o tipo de falha eléctrica).
- os dados vão sendo adicionados nesse ficheiro que fica com o seguinte aspecto:
Socket Result
1 5
2 1...etc....
- um pormenor: como os sockets por vezes se danificam, pode acontecer que nesta lista, em vez de ficar socket 1,2,3,4,5,6,7,8 possa ficar 1,3,4,5,7,8 (sockets 2 e 6 danificados)
- como não temos uma aplicação que interprete estes dados, tou criando uma que o faça.
- para já, a aplicação transporta estes dados para uma tabela de access (apenas porque é mais fácil pra mim) e apresenta outros dados estatiscos que não vale a pena mencionar.
- mas agora o que eu pretendo, é apresentar num form, o ultimo resultado do teste: numero do socket; resultado e caso não tenha sido usado deve apresentar como resultado um "-".
A minha dúvida é então, qual a expressão SQL que me consegue dar estes resultados.
Abraço e obrigado pela paciência.
Nessa tabela crie um campo para ser a chave primaria autonumeric. Assim fica possivel fazer a consulta
Tabela
ID Socket Result
1 - 1 - 5
2 - 2 - 1
3 - 4 - 5
....
Assim para saber sobre o ultimo resultado do Socket 1 por exemplo
Select Max(id) From Tabela Where Socket=1
Da forma que esta o banco, para saber o ultimo registro fica mais complicado e não vejo como fazer via SQL, somente por programação que no caso do ADO tem um atributo que retorna a posição do registro.
Tabela
ID Socket Result
1 - 1 - 5
2 - 2 - 1
3 - 4 - 5
....
Assim para saber sobre o ultimo resultado do Socket 1 por exemplo
Select Max(id) From Tabela Where Socket=1
Da forma que esta o banco, para saber o ultimo registro fica mais complicado e não vejo como fazer via SQL, somente por programação que no caso do ADO tem um atributo que retorna a posição do registro.
Miguel
Deixa ver se entendi.
Vamos analisar o problema:
* 8 Sockets: de números 1 a 8
* 5 Tipos de informação:
- 1 - Se o teste passar
- 5, 6, 7 e 8 - para cada tipo de problema
Se for isto mesmo, poderia ter uma Estrutura como a abaixo:
Deixa ver se entendi.
Vamos analisar o problema:
* 8 Sockets: de números 1 a 8
* 5 Tipos de informação:
- 1 - Se o teste passar
- 5, 6, 7 e 8 - para cada tipo de problema
Se for isto mesmo, poderia ter uma Estrutura como a abaixo:
Miguel
Insira um CommandButton, um MSFlexGrid e um Módulo
' ---------------------------------------------------------------------------------------------------'
No Form
' ---------------------------------------------------------------------------------------------------'
No Módulo
Assim você terá 8 Winsocks, redimensionado no Form, para uma estrutura de até 8 tipos de Falhas.
Veja se é isto que necessita.
[s50]
Insira um CommandButton, um MSFlexGrid e um Módulo
' ---------------------------------------------------------------------------------------------------'
No Form
Private Sub Command1_Click()
Dim bNum As Byte
ReDim Resumo(8) As Resultado
For bNum = 0 To 7
Resumo(bNum).Falha1 = 100 * Rnd(Timer)
Resumo(bNum).Falha2 = 0
Resumo(bNum).Falha3 = 0
Resumo(bNum).Falha4 = 0
Resumo(bNum).Falha5 = 100 * Rnd(Timer)
Resumo(bNum).Falha6 = 100 * Rnd(Timer)
Resumo(bNum).Falha7 = 100 * Rnd(Timer)
Resumo(bNum).Falha8 = 100 * Rnd(Timer)
Next
For bNum = 1 To 8
MSFlexGrid1.ColWidth(bNum) = 600
Next
' ------ Só para testas os valores --------
For bNum = 0 To 7
MSFlexGrid1.TextMatrix(bNum + 1, 1) = Resumo(bNum).Falha1
MSFlexGrid1.TextMatrix(bNum + 1, 2) = Resumo(bNum).Falha2
MSFlexGrid1.TextMatrix(bNum + 1, 3) = Resumo(bNum).Falha3
MSFlexGrid1.TextMatrix(bNum + 1, 4) = Resumo(bNum).Falha4
MSFlexGrid1.TextMatrix(bNum + 1, 5) = Resumo(bNum).Falha5
MSFlexGrid1.TextMatrix(bNum + 1, 6) = Resumo(bNum).Falha6
MSFlexGrid1.TextMatrix(bNum + 1, 7) = Resumo(bNum).Falha7
MSFlexGrid1.TextMatrix(bNum + 1, 8) = Resumo(bNum).Falha8
Next
End Sub
' ---------------------------------------------------------------------------------------------------'
No Módulo
Public Type Resultado
Falha1 As Long
Falha2 As Long
Falha3 As Long
Falha4 As Long
Falha5 As Long
Falha6 As Long
Falha7 As Long
Falha8 As Long
End Type
Public Resumo() As ResultadoAssim você terá 8 Winsocks, redimensionado no Form, para uma estrutura de até 8 tipos de Falhas.
Veja se é isto que necessita.
[s50]
Obrigado Renato.
é esqueci de dizer...já tinha esse campo criado....
Da forma que você indica funciona bem, a não ser numa situação em que 1 socket tá danificado (tal como indiquei no post acima).
Por exemplo: Na última rodada todos os sockets estão activos à  excepção dos sockets 1,3,4 e 5. Assim, a tabela pode apresentar os valores:
ID Socket Result
60 2 5
61 6 1
62 7 1
63 8 8
Ou seja, eu não posso "pedir" o resultado do socket 1, pois este não foi utilizado, se o fizesse, iri retomar o resultado de uma rodada anterior.
é esqueci de dizer...já tinha esse campo criado....
Da forma que você indica funciona bem, a não ser numa situação em que 1 socket tá danificado (tal como indiquei no post acima).
Por exemplo: Na última rodada todos os sockets estão activos à  excepção dos sockets 1,3,4 e 5. Assim, a tabela pode apresentar os valores:
ID Socket Result
60 2 5
61 6 1
62 7 1
63 8 8
Ou seja, eu não posso "pedir" o resultado do socket 1, pois este não foi utilizado, se o fizesse, iri retomar o resultado de uma rodada anterior.
Miguel
Você quer só os ÃÅ¡LTIMOS REGISTROS de cada Winsock?
Eu estou MUITO CONFUSO MESMO! Sinceramente não entendo o por que, nas estruturas que montei era para se Totalizar as falhas, mas só as últimas falhas?
[s50]
Você quer só os ÃÅ¡LTIMOS REGISTROS de cada Winsock?
Eu estou MUITO CONFUSO MESMO! Sinceramente não entendo o por que, nas estruturas que montei era para se Totalizar as falhas, mas só as últimas falhas?
[s50]
Obrigado.....a ordem dos posts está trocada...!!!! Bem..adiante....obrigado mais uma vez KpellaJr, mas realmente tá a confundir...penso que no meu ultimo post está mais explicÃto.
Citação:Obrigado Renato.
é esqueci de dizer...já tinha esse campo criado....
Da forma que você indica funciona bem, a não ser numa situação em que 1 socket tá danificado (tal como indiquei no post acima).
Por exemplo: Na última rodada todos os sockets estão activos à  excepção dos sockets 1,3,4 e 5. Assim, a tabela pode apresentar os valores:
ID Socket Result
60 2 5
61 6 1
62 7 1
63 8 8
Ou seja, eu não posso "pedir" o resultado do socket 1, pois este não foi utilizado, se o fizesse, iria retomar o resultado de uma rodada anterior.
Saudações Miguelm,
Bem assim vc deve incluir mais um campo na tabela.Que indicaria a rodada.
Mudando completamente o modo anterior. Pois antes estaria pegando os valores do ID maiores para identificar as ultimas rodadas. Agora não seria necessario.
Assim fazendo um Select pela Rodada, inclusive podendo agrupar vai retornar os socket que foram testados e o que faltar são os com erros.
Então Select Socket From Tabela Rodada 1
Retorna 2 6 7 e 8 logo 1 3 4 5 estão com problema.
Se vc criar uma outra tabela para armazenar somente so Socket e relacionar com a Tabela TESTE é possivel fazer uma Join trazendo todos os registros que participam do relacionamento ( que seriam os socket testados ) e também retornaria os que não participaram do relacionamento ( socket ruins) sendo que para os ruins teria que ver o que iria retornar no campo Result, acho que seria NULL, assim ficaria facil de verificar os que foram testados e os que não foram. A
Só testanto para ver.
A consulta use Left Join ou o Right Join
Bem assim vc deve incluir mais um campo na tabela.Que indicaria a rodada.
Mudando completamente o modo anterior. Pois antes estaria pegando os valores do ID maiores para identificar as ultimas rodadas. Agora não seria necessario.
ID Socket Result Rodada
60 2 5 1
61 6 1 1
62 7 1 1
63 8 8 1
64 1 5 2
65 3 1 2
66 4 1 2
67 7 8 2
Assim fazendo um Select pela Rodada, inclusive podendo agrupar vai retornar os socket que foram testados e o que faltar são os com erros.
Então Select Socket From Tabela Rodada 1
Retorna 2 6 7 e 8 logo 1 3 4 5 estão com problema.
Se vc criar uma outra tabela para armazenar somente so Socket e relacionar com a Tabela TESTE é possivel fazer uma Join trazendo todos os registros que participam do relacionamento ( que seriam os socket testados ) e também retornaria os que não participaram do relacionamento ( socket ruins) sendo que para os ruins teria que ver o que iria retornar no campo Result, acho que seria NULL, assim ficaria facil de verificar os que foram testados e os que não foram. A
Só testanto para ver.
A consulta use Left Join ou o Right Join
Renato
TAnto a Estrutura de uma TAbela quanto um Array dariam conta do recado, o que me deixa CONFUSO é se os erros devem ser Totalizados ou só os últimos resultados!
[s55]
Na minha ótica, um levantamente seria uma Totatilzação, ou seja, Winsock 1, Falha 7 = 55 , por exemplo
[s95]
TAnto a Estrutura de uma TAbela quanto um Array dariam conta do recado, o que me deixa CONFUSO é se os erros devem ser Totalizados ou só os últimos resultados!
[s55]
Na minha ótica, um levantamente seria uma Totatilzação, ou seja, Winsock 1, Falha 7 = 55 , por exemplo
[s95]
Tópico encerrado , respostas não são mais permitidas