FLEXGRID IGUAL AO EXCEL

RICOCARDOZO 23/03/2012 16:45:08
#398105
Olá a Todos
Tnho uma grade e estou tentando usa-la como o excel e gostaria da opnião e uma ajuda.
Por exemplo ela carrega com 50 linhas certo
Estou usando um text para passar os dados para a grade.
A medida que vou inserindo os dados , tenho um botão com o nome grava.
Qual a melhor maneira de se gravar estes dados :
Com um upadate ou Adnew ?
Só que por exeplo vão existir campos em branco , numero e text
Estou fazendo assim :

Private Sub gravar_dados()
TabelaContas
[ô]On Error Resume Next
TB_CONTAS.LockType = adLockOptimistic
TB_CONTAS.CursorType = adOpenStatic [ô]somente leitura
TB_CONTAS.CursorLocation = adUseServer
TB_CONTAS.Open [Ô]SELECT * FROM contas [Ô], BD_CAIXA
TB_CONTAS.MoveLast

For i = 1 To Grade.Text = [Ô][Ô]
TB_CONTAS!con_codigo = Grade.TextMatrix(i, 1)
TB_CONTAS!con_nome = Grade.TextMatrix(i, 2)
TB_CONTAS!con_dc = Grade.TextMatrix(i, 3)
TB_CONTAS!con_valor = 0 & Grade.TextMatrix(i, 4)
TB_CONTAS!con_fix_var = Grade.TextMatrix(i, 5)
TB_CONTAS!con_historico = Grade.TextMatrix(i, 6)
TB_CONTAS.Update
Next i
FechaTabelaContas
End Sub

Só que não está funcionando.
MARCELO.TREZE 23/03/2012 17:06:34
#398109
Resposta escolhida
Na realidade usa-se os dois.

exemplo

For i = 1 To Grade.Text = [Ô][Ô]
TB_CONTAS.AddNew[txt-color=#007100] [ô] aqui entra o addnew[/txt-color]
TB_CONTAS!con_codigo = Grade.TextMatrix(i, 1)
TB_CONTAS!con_nome = Grade.TextMatrix(i, 2)
TB_CONTAS!con_dc = Grade.TextMatrix(i, 3)
TB_CONTAS!con_valor = 0 & Grade.TextMatrix(i, 4)
TB_CONTAS!con_fix_var = Grade.TextMatrix(i, 5)
TB_CONTAS!con_historico = Grade.TextMatrix(i, 6)
TB_CONTAS.Update
Next i
RICOCARDOZO 23/03/2012 17:40:39
#398114
Obrigado Treze
Só que eu não sei o que está acontecendo
Pois quando eu clik no botão atualiza ele não salva nada e não dá erro tambem.
Que estranho
RICOCARDOZO 23/03/2012 17:48:19
#398115
Acho que sei o que está acontecendo
é o loop

For i = 1 To Grade.Text = [Ô][Ô]

Porque por exemplo a grade tem 50 linhas e se so foi preechida duas linhas não há necessidade de percorrer tudo , e se eu deixar o grade.rows -1 ele estava adicionando 50 registros novos.

MARCELO.TREZE 23/03/2012 17:58:29
#398117
O ideal seria vc adicionar as linhas conforme adiciona os registros, e não colocar 50 linhas, mas da maneira que está tenta assim

For i = 1 To Grade.Rows - 1
If Grade.TextMatrix(i, 1) = [Ô][Ô] Then Exit For
TB_CONTAS.AddNew [ô] aqui entra o addnew
TB_CONTAS!con_codigo = Grade.TextMatrix(i, 1)
TB_CONTAS!con_nome = Grade.TextMatrix(i, 2)
TB_CONTAS!con_dc = Grade.TextMatrix(i, 3)
TB_CONTAS!con_valor = 0 & Grade.TextMatrix(i, 4)
TB_CONTAS!con_fix_var = Grade.TextMatrix(i, 5)
TB_CONTAS!con_historico = Grade.TextMatrix(i, 6)
TB_CONTAS.Update
Next i
RICOCARDOZO 23/03/2012 18:08:07
#398119
O que esta me encucando é o seguinte ;
O Adnew não inclui um novo registro?
Pelo seguinte o con_codigo é autonumeração certo?
E a cada atualização ele esta incluindo um novo regsitro , será que é melhor deixar ele sem auto_nimeração?
MARCELO.TREZE 23/03/2012 18:19:20
#398120
se ele auto numeração então deixe como está

só não inclua nada pois como dito é autonumeração

For i = 1 To Grade.Rows - 1
If Grade.TextMatrix(i, 1) = [Ô][Ô] Then Exit For
TB_CONTAS.AddNew [ô] aqui entra o addnew
[txt-color=#007100] [ô]TB_CONTAS!con_codigo = Grade.TextMatrix(i, 1)[/txt-color]
TB_CONTAS!con_nome = Grade.TextMatrix(i, 2)
TB_CONTAS!con_dc = Grade.TextMatrix(i, 3)
TB_CONTAS!con_valor = 0 & Grade.TextMatrix(i, 4)
TB_CONTAS!con_fix_var = Grade.TextMatrix(i, 5)
TB_CONTAS!con_historico = Grade.TextMatrix(i, 6)
TB_CONTAS.Update
Next i


tente novamente
RICOCARDOZO 23/03/2012 18:23:53
#398122
Eu fiz isto :

For i = 1 To Grade.Rows - 1
If Grade.TextMatrix(i, 1) = [Ô][Ô] Then Exit For
TB_CONTAS!con_nome = Grade.TextMatrix(i, 2)
TB_CONTAS!con_dc = Grade.TextMatrix(i, 3)
TB_CONTAS!con_valor = Grade.TextMatrix(i, 4)
TB_CONTAS!con_fix_var = Grade.TextMatrix(i, 5)
TB_CONTAS!con_historico = Grade.TextMatrix(i, 6)
TB_CONTAS.Update
Next i

Passou , só que ele está dando erro no con_valor pois está em branco e ele é numérico.
Eu preciso prencher com 0 , não posso deixa-lo em branco?


MARCELO.TREZE 23/03/2012 18:28:28
#398124
altere esta linha para isto

 TB_CONTAS!con_valor = IIf(Grade.TextMatrix(i, 4) = [Ô][Ô], Null, Grade.TextMatrix(i, 4))


veja se funciona

RICOCARDOZO 23/03/2012 18:29:10
#398125
Entendi rsss
Tem que ter o Addnew sim
Eu fiz um Teste alterei a linha e gravei , deu certo atualizou
Dai inclui um novo registro na segunda linha e salvei novamente , ele exlui o primeiro e deixou o segundo.

Então quando for só atualizar usa-se upadate ao inserir dados em outra linha que estava em branco tem que dar um adnew .

Complicado né
MARCELO.TREZE 23/03/2012 18:40:35
#398127
olha na verda é o seguinte para atulizar é assim

TB_CONTAS.AddNew 
bla bla bla
TB_CONTAS.Update


e para alterar

TB_CONTAS.Edit
bla bla bla
TB_CONTAS.Update



porém antes de tudo vc colocou

TB_CONTAS.MoveLast

acho que seria

TB_CONTAS.MoveFirst

Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas