CONSULTA MAIS RAPIDA.

USUARIO.EXCLUIDOS 08/06/2005 13:54:11
#87701
Wilian,

Como faço para "paginar"?

Imagine uma tabela com 100 registros, quero mostar de 10 em 10:

SELECT TOP 10 meus campos
FROM minha tabela
WHERE minhas condições

Mas e agora para os próximo 10 (que seria do 11 até o 20) como faço???

Obrigado,

Christiano
TRUHILLO 08/06/2005 14:11:06
#87705
Ai estah a string de conexão e o laço For...Next usando o Super Grid 2 do vbAccelerator:

Public dbGuia As New ADODB.Connection
Public dbCmd As New ADODB.Command
Public tbFones As New ADODB.Recordset, tbAnun As New ADODB.Recordset

dbCatalogo.Open "Driver=MySQL ODBC 3.51 Driver;Database=catalogo;server=localhost;port=3306;uid=root;pwd=masterkey"

With dbCmd
Set .ActiveConnection = dbGuia
.CommandType = adCmdText
.CommandText = "select nome,telefone,endereco from tabela"
End With

With tbFones
.LockType = adLockReadOnly
.CursorType = adOpenForwardOnly
.CursorLocation = adUseClient
.Open dbCmd
End With
End Function

With grdFones
For Its = 1 To tbFones.RecordCount
tbAnun.MoveFirst
tbAnun.Find "Telefone = '" & tbFones!Telefone & "'"
.CellDetails Its, 1, tbFones!Telefone, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0)), , fBold
.CellDetails Its, 2, tbFones!Nome, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0)), , fBold
.CellDetails Its, 3, tbFones!Cidade & "-" & tbFones!UF, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0))
.CellDetails Its, 4, tbFones!Endereco
.CellDetails Its, 5, Format(tbFones!CEP, "00000-000") & " - " & _
tbFones!Endereco & " - " & tbFones!Bairro, DT_WORDBREAK, , , RGB(0, 0, 190)
.RowHeight(Its) = .EvaluateTextHeight(Its, 5) + .DefaultRowHeight + 4
tbFones.MoveNext
DoEvents
Next
End With

tbFones.Close
USUARIO.EXCLUIDOS 08/06/2005 15:40:30
#87767
VBCODE
uma solução rapida é fazer a consulta de todos os registros
depois com o uso de for next, preencher de 1 a 10, na pagina dois de 11 a 20 e assim por diante, pois como comentei a consulta é rápida, o problema e preencher o grid

TRUHILLO
não esta ruim mas eu faria assim(sem usar o NEW, prefira setar ele que é mais rápido)

Public dbGuia As ADODB.Connection
Set dbGuia = New ADODB.Connection

Public tbFones As ADODB.Recordset
Set tbFones = New ADODB.Recordset

dbGuia.Open "Driver=MySQL ODBC 3.51 Driver;Database=catalogo;server=localhost;port=3306;uid=root;pwd=masterkey"

With tbFones
.activeconnection = dbGuia
.LockType = adLockReadOnly
.CursorType = adOpenForwardOnly
.CursorLocation = adUseClient
.Open "Select Nome, Telefone, Endereco from Tabela order by nome"
End With
End Function

With grdFones
For Its = 1 To tbFones.RecordCount
tbAnun.MoveFirst
tbAnun.Find "Telefone = '" & tbFones!Telefone & "'"
.CellDetails Its, 1, tbFones!Telefone, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0)), , fBold
.CellDetails Its, 2, tbFones!Nome, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0)), , fBold
.CellDetails Its, 3, tbFones!Cidade & "-" & tbFones!UF, , , IIf(tbAnun.EOF, -1, RGB(255, 204, 0))
.CellDetails Its, 4, tbFones!Endereco
.CellDetails Its, 5, Format(tbFones!CEP, "00000-000") & " - " & _
tbFones!Endereco & " - " & tbFones!Bairro, DT_WORDBREAK, , , RGB(0, 0, 190)
.RowHeight(Its) = .EvaluateTextHeight(Its, 5) + .DefaultRowHeight + 4
tbFones.MoveNext
DoEvents
Next
End With

tbFones.Close

quanto ao preenchimento do seu grid ja não sei pois nunca o usei, então fica dificil dizer se esta correto ou não,
agora no inicio do seu FORr tem um movefirst, mas com isso não preenche só com a primeira linha do recordset??? no meu entender o movefirst teria que estar antes do FOR.
outra coisa, porque o FIND??? no meu entender tambem não precisa pois você deu um movenext no fim do FOR o que estaria correto.Para maiores esclarecimentos veja:
http://www.vbmania.com.br/vbmdetail.php?varID=2971
TRUHILLO 08/06/2005 16:22:39
#87799
Esse tbAnun eh outra tabela Wilian.
Toda vez que o For mudar de registro, vai procurar na tabela Anunciantes se existe um número de telefone igual ao que está na tbFones.
Mas isso eh outro caso. Mesmo sem essa consulta fica bem lento.

Vou tentar como vc me falou e volto a postar aqui o resultado.
Obrigado a todos.
USUARIO.EXCLUIDOS 09/06/2005 09:06:18
#87926
Wilian,

Se nós estamos buscando uma melhor performance, não acho certo "fazer uma consulta de todos os registros"!

No meu caso eu não carrego a grid com For, mas sim:
Set mshflexgrid.DataSource = Rs

Então, continua a dúvida:

SELECT TOP 10 meus campos
FROM minha tabela
WHERE minhas condições
Rs.open ... ... ....
Set mshflexgrid.DataSource = Rs

Mas e agora para os próximo 10 (que seria do 11 até o 20) como faço???

Obrigado,

Christiano
TRUHILLO 10/06/2005 14:33:59
#88261
Alguem mais tem outra idéia de como popular ListView rapidamente?
USUARIO.EXCLUIDOS 10/06/2005 16:41:02
#88295
como o assunto é extenso e não achei nada no site,
veja
http://www.macoratti.net/ado_nav.htm
http://www.macoratti.net/dat_page.htm
se alguem achar algo no site é só avisar
TRUHILLO 10/06/2005 17:11:40
#88309
Obrigado, William.
Acho q isso vai resolver o problema.
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas