ADODC

USUARIO.EXCLUIDOS 20/07/2005 15:05:08
#95198
Possuo um DATAGRID vinculado a um controle ADODC, quando avanço ou recuo registros atualizo o adodc com um refresh, mas existe uma lentidão quando estou executando em rede.
Existe uma outra maneira de atualizar o DATAGRID sem ter que executar um refresh no controle ADO ?
USUARIO.EXCLUIDOS 20/07/2005 15:25:40
#95201
Pq naum tenta usar o Listview ! e preenche ele com um for ! c gostar da idéia mude essas propriedades no listview:

Fullrowselect = True
Labeledit = 1 - Manual
View = 3 - Report

e faça esse for: uma função é melhor pq vc pode chamar a qualquer momento !

lstUsuários.ListItems.Clear ' lstUsuários é o nome do listview
With lstUsuários
' Desenha as Linhas
If .ColumnHeaders.Count = 0 Then
.ColumnHeaders.Add 1, "Código", "Código", 929.8583 ' as colunas
.ColumnHeaders.Add 2, "Usuário", "» Usuário", 3344.882
.ColumnHeaders.Add 3, "Nível", "Nível", 929.8822
End If
For its = 1 To rsBusca.RecordCount ' rsBusca é o recordset
.ListItems.Add its, , rsBusca!usuario_id ' nome dos campos
.ListItems(its).ListSubItems.Add 1, , rsBusca!usuario 'nome dos campos
.ListItems(its).ListSubItems.Add 2, , rsBusca!nivel 'nome dos campos
rsBusca.MoveNext
Next
End With



TRUHILLO 20/07/2005 15:33:01
#95202
Concordo com o ATERLONI.

Trabalhar com recordsets desconectados é bem melhor.
Daí você pode abrir o recordset, preencher o listview (que é bem mais "apresentável" do que o datagrid) e fechar o recordset.

E pode movimentar pelos itens da lista sem ter que ficar buscando dados no recordset.
USUARIO.EXCLUIDOS 21/07/2005 11:12:05
#95303
Obrigado pelas respostas galera, mas vejam uma coisa:

A minha rotina esta funcionando perfeitamente, exceto esta lentidão, mas concordo em mudar desde que o listview possua recursos para editar as linhas dos registros exibidos, pois utilizo o DATAGRID para exibir e para alterar, excluir e para essas funções não preciso nem criar rotinas, certo ?

Paulo
TRUHILLO 21/07/2005 11:28:39
#95310
Uso o listview apenas para exibir uma lista dos registros.
No caso de uma edição, quando teclo ENTER, por exemplo, abre um formulário com todos os campos do registro selecionado.

Dê uma olhada como ficou uma tela que eu postei TELAS DE JUNHO/05:
O visual fica muito bom.

E outra coisa: quando visito alguns futuros clientes, eles me mostram os programas que estão usando e a maioria reclama que, quando esbarra em alguma tecla, sobrescreve o que estava no grid. E como a maioria não costuma "pensar rápido" pra teclar ESC, acabam perdendo a informação.

Vai dar mais trabalho do que permitir a edição direto no grid, mas no meu caso, gostei muito do resultado.
USUARIO.EXCLUIDOS 21/07/2005 15:32:08
#95395
Amigo Paulo César

Troquei o DATAGRID pelo LISTVIEW e gostaria de saber como armazenar em objetos texbox os valores correpondentes quando navego pelas linhas do LISTVIEW, por exemplo tenho tres colunas NOME,ENDERECO,CEP e para cada movimentação na grade, eu vinculo os valores atuais nos texbox, entende ?
No aguardo



TRUHILLO 21/07/2005 15:56:31
#95399
Entendi sim...

Para pegar o valor da primeira coluna do listview, é fácil:

txtNome.Text = lstView.SelectedItem.Text


Para pegar os outros valores das colunas faça assim:

txtEndereco.Text = lstView.SelectedItem.ListSubItems(1).Text 
txtCEP.Text = lstView.SelectedItem.ListSubItems(2).Text


No caso de muitos campos, você pode automatizar assim:

txtFields(0).Text = lstView.SelectedItem.Text
For i = 1 to txtFields.Count
txtFields(i).Text = lstView.SelectedItem.ListSubItems(i).Text
Next


Qualquer outra dúvida, pode mandar mensagem interna ou pelo Hotmail.
-----
Mas eu faço assim...
Na primeira coluna, sempre vai o número do registro.
Quando o usuário tecla ENTER, esse número vai para uma variável.
Um formulário de edição é exibido e no evento Load, chama uma função que abre um recordset e posiciona no registro selecionado.

Neste form estão os texts que ficarão com os valores dos campos da tabela.

For Its = 0 To txtFields.UBound
txtFields(i).Text = IIf(IsNull(rsClientes(i).Value), "", rsClientes(i).Value)
Next
USUARIO.EXCLUIDOS 21/07/2005 16:19:24
#95405
Paulo, novamente sua dica funcionou !

Obrigado por enquanto , pois talvez ainda terei dúvidas com este controle então espero contar com sua ajuda !

Ateh mais.
TRUHILLO 21/07/2005 16:22:44
#95408
Pode contar comigo.
E tenha certeza de que ficará satisfeito com este controle.

Além de bonito ele é bastante funcional.
USUARIO.EXCLUIDOS 22/07/2005 07:53:57
#95491
Bom dia Paulo, tudo bem ?

Amigo, qual a instrução para retornar o número da linha do LISTVIEW, por exemplo, um lista com 10 linhas, movimento ateh a linha 6, então o comando me retornaria o valor 6 !
Abraço,


Paulo
TRUHILLO 22/07/2005 08:03:09
#95492
Bom dia,
Você pode colocar no evento KeyUp do listview:

Msgbox lstView.SelectedItem.Index
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas