USAR FLEXGRID PARA INCLUIR E EDITAR BANCO DE DADO

RICOCARDOZO 26/03/2012 12:49:24
#398313
Olá a todos
Gostaria de uma dica de como fazer o seguinte:
Tenho uma flexgride com 10 linhas
Carrego eslas em branco Ok
Fiz uma rotina com text para poder editar certo.
Agora gostaria de poder incluir no banco de dados quando for nova linha e editar quando houver alteração de uma determinada celula de uma linha existente.
NETMANIA 26/03/2012 12:52:23
#398314
Neste caso você terá que construir uma rotina que será associado ao eventos do grid para manipular estes dados junto ao banco de dados
RICOCARDOZO 26/03/2012 13:41:15
#398318
Eu pensei em fazer o seguinte na logica por enquanto;
Abrir o Grid com 5 linhas e duas colunas:
Codido | Descrição

Na coluna codigo inserir no banco de dados o numero de 1 a 5 e descricão deixar em branco.
Esconder a coluna codigo do usuário, e a hora que ele abrir o form verá o grid e ao inlcuir qualquer dado ao sair ou pular para proxima linha excutar um update na tebela.
LLAIA 26/03/2012 16:35:22
#398335
Coloque as informações no Grid e quando trocar o curso de Row, salve no Banco. Não precisa criar linhas no BD quando não tem informação a inserir.
RICOCARDOZO 26/03/2012 17:00:18
#398339
Fiz esta funçãozinha mais não ta dando certo
Ele cria o grid com 5 linhas numerado aparentemente correto , mas nao ta gravando no bd.

Private Sub inclui_dados()
TabelaContas
TB_CONTAS.Open [Ô]SELECT * FROM contas [Ô], BD_CAIXA

Grade.Rows = 5
Dim codigo As Integer
codigo = 1


For L = 1 To Grade.Rows - 1
Grade.TextMatrix(L, 1) = codigo

If TB_CONTAS.EOF = True Then
sql = [Ô]INSERT INTO contas(con_codigo) VALUES ([Ô]
sql = sql & [Ô][ô][Ô] & codigo & [Ô][ô])[Ô]
codigo = codigo + 1
Else
sql = [Ô]UPDATE contas set con_codigo=[ô][Ô] & Grade.TextMatrix(L, 1) & [Ô][ô][Ô]
BD_CAIXA.Execute (sql)
codigo = codigo + 1
End If

Next L
FechaTabelaContas
End Sub
RICOCARDOZO 26/03/2012 17:04:44
#398340
Puts que gafe sem execute nunca ia funcionar n rsrsrsrsrsrs

Corrigido

Private Sub inclui_dados()
TabelaContas
TB_CONTAS.Open [Ô]SELECT * FROM contas [Ô], BD_CAIXA

Grade.Rows = 5
Dim codigo As Integer
codigo = 1


For L = 1 To Grade.Rows - 1
Grade.TextMatrix(L, 1) = codigo

If TB_CONTAS.EOF = True Then
sql = [Ô]INSERT INTO contas(con_codigo) VALUES ([Ô]
sql = sql & [Ô][ô][Ô] & codigo & [Ô][ô])[Ô]
codigo = codigo + 1
BD_CAIXA.Execute (sql)
Else
sql = [Ô]UPDATE contas set con_codigo=[ô][Ô] & Grade.TextMatrix(L, 1) & [Ô][ô][Ô]
BD_CAIXA.Execute (sql)
codigo = codigo + 1
BD_CAIXA.Execute (sql)
End If

Next L
FechaTabelaContas
End Sub

Só que agora acontece o seguinte na primeira execução com o bd limpo ele faz os lançamentos certinho mais a medidade que eu executo a segunda vez ele faz o seguinte:

Codigo
4
4
4
4

MARCELO.TREZE 26/03/2012 17:44:55
#398345
Resposta escolhida
ta faltando um WHERE na query de UPDATE

RICOCARDOZO 26/03/2012 18:18:49
#398346
Onde Treze?
sql = [Ô]UPDATE contas set con_codigo=[ô][Ô] & Grade.TextMatrix(L, 1) & [Ô][ô][Ô]

Where não seria para comparar? ou filtrar?
desculpe se eu estiver errado

MARCELO.TREZE 26/03/2012 21:13:16
#398356
Exatamente pra isso mesmo

é assim

UPDATE tabela SET nome=[ô]marcelo[ô],idade=40 WHERE id = 1

no caso acima o registro de ID 1 é o que será alterado entendeu

RICOCARDOZO 26/03/2012 21:42:20
#398358
O que pode estar errado ?
Ele acerta no grid:
Codigo
1
2
3
4

Mais a hora que recarrego o form ele volta assim
Codigo
4
4
4
4

For L = 1 To Grade.Rows - 1
Grade.TextMatrix(L, 1) = codigo

If TB_CONTAS.EOF = True Then
sql = [Ô]INSERT INTO contas(con_codigo) VALUES ([Ô]
sql = sql & [Ô][ô][Ô] & codigo & [Ô][ô])[Ô]
codigo = codigo + 1
BD_CAIXA.Execute (sql)
Else
sql = [Ô]UPDATE contas set con_codigo=[ô][Ô] & codigo & [Ô][ô][Ô] _
& [Ô] where con_codigo =[Ô] & Grade.TextMatrix(L, 1)
codigo = codigo + 1
BD_CAIXA.Execute (sql)
End If
Next L
FechaTabelaContas
MARCELO.TREZE 26/03/2012 23:28:57
#398365
olha no update vc não atualiza con_codigo apenas usa ele como a referencia para registro a ser atualizado

veja bem este exemplo

eu possuo os seguintes dados na tabela

Id Nome Endereco
01 Marcelo Rua A
02 Joao Rua B
03 Pedro Rua C

supondo que o João mudou de endereço, farei uma atualização

UPDATE tabela SET endereco = [ô]rua dos bobos nº 0[ô] WHERE id = 02


no update acima eu poderia até atualizar o nome do joão mas o id não mudarei apenas o usarei como base para atualização

espero que tenha entendido

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