Ir ao conteúdo

SQL funciona certo mas errado?!?!?!? VB


Pulllga

Posts recomendados

Postado

Olá, sou o Pulllga,

Eu tenho este trecho de código:


Function GRIAGE()
Dim x As Integer
Dim tmpRS As Recordset

Set tmpRS = frmDat.datCons.Database.OpenRecordset("select * from Eventos e where e.Call of Duty in (select en.codEve from Eve_Neg en, Negocios n where en.CodNeg = 1)", dbOpenSnapshot)

For x = 1 To tmpRS.RecordCount
   griNeg.Row = x
   griNeg.Col = 0
   griNeg.Text = tmpRS.Fields("qtd").Value
   griNeg.Col = 1
   griNeg.Text = tmpRS.Fields("mod").Value
   griNeg.Col = 2
   griNeg.Text = tmpRS.Fields("dia").Value
   griNeg.Col = 3
   griNeg.Text = tmpRS.Fields("dat").Value
   griNeg.Col = 4
   If (tmpRS.Fields("sitGan").Value = True) And (tmpRS.Fields("sitPer").Value = False) Then
      griNeg.Text = "Ganho"
   End If
   If (tmpRS.Fields("sitGan").Value = False) And (tmpRS.Fields("sitPer").Value = True) Then
      griNeg.Text = "Perdido"
   End If
   If (tmpRS.Fields("sitGan").Value = False) And (tmpRS.Fields("sitPer").Value = False) Then
      griNeg.Text = "Pendente"
   End If
Next

End Function

É uma função para preencher uma grid com os dados da tabela filtrados com o SQL.

Se eu mudar o "set" para:


Set tmpRS = frmDat.datCons.Database.OpenRecordset("select * from Eventos", dbOpenSnapshot)

O "RecordCount" também retorna 1!!!

Qualquer consulta que eu faça, com qualquer tabela, sempre retorna 1, porque isso?

Alguém sabe explicar?

falou :D:D:D

  • Membro VIP
Postado

O DAO (Data Access Object) era bem conhecido por causa desse problema.

Você tem que "chacoalhar" o Recordset para ele "acordar" e retornar a quantidade de registros, ou seja, você tem que mover para o ultimo registro e depois voltar para o primeiro.

Assim:

Set tmpRS = frmDat.datCons.Database.OpenRecordset("select * from Eventos", dbOpenSnapshot)

If Not tmpRS.EOF And Not tmpRS.BOF Then

tmpRS.MoveLast

tmpRS.MoveFisrt

End If

Só assim pra funcionar... ou então você usa o ADO (com ou sem o controle) ao invés do DAO com controle Data.

:joia:

Postado

Clemente,

Puxa, que barbada, e que bobeira, foi exatamente o que você disse, fiz o SQL, dei um MoveFirst + MoveLast + MoveFirst (Triple Combo!!!) e funcionou perfeitamente.

Gracias muchacho, valeu :D:D:D

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!