FLEXGRID IGUAL AO EXCEL
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.
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.
Na realidade usa-se os dois.
exemplo
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
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
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
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.
é 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.
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
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?
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?
se ele auto numeração então deixe como está
só não inclua nada pois como dito é autonumeração
tente novamente
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
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?
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?
altere esta linha para isto
veja se funciona
TB_CONTAS!con_valor = IIf(Grade.TextMatrix(i, 4) = [Ô][Ô], Null, Grade.TextMatrix(i, 4))
veja se funciona
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é
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é
olha na verda é o seguinte para atulizar é assim
e para alterar
porém antes de tudo vc colocou
TB_CONTAS.MoveLast
acho que seria
TB_CONTAS.MoveFirst
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
Tópico encerrado , respostas não são mais permitidas