RETIRAR DADOS DE MSHFLEXGRID
Estou tentando fazer um pequeno sistema em VB6. Utilizando uma base de dados ADO com Acess eu coloco os registros numa MSHFLEXGRID.Tenho os seguintes campos:Código,Nome, Data de nascimento e sexo (F/M).Carrego a MSHFLEXGRID assim:
Gostaria de manipular estes dados:
1) Enviando a linha selecionada para 4 textbox (1 para cada campo:Código,Nome, Data de nascimento e sexo)
2) Excluindo do banco de dados a linha selecionada com o clique de um botão
3) Alterando no banco de dados os dados da linha selecionada que foram alterados nas textbox com o clique de um botão.
Agradeço a quem puder me ajudar
Sub flex()
If Len(Text2.Text) = 0 Then
sql = "SELECT código,format(nascimento,'DD/MM/YYYY') as nascimento,nome,sexo FROM geral ORDER BY nome "
Else
sql = "SELECT código,format(nascimento,'DD/MM/YYYY') as nascimento,nome,sexo FROM geral WHERE nome LIKE '" & Trim(Me.Text2.Text) & "%'ORDER BY nome "
End If
rs.Close
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
rs.Open sql, conexao
Set MSHFlexGrid1.DataSource = rs
End Sub
Gostaria de manipular estes dados:
1) Enviando a linha selecionada para 4 textbox (1 para cada campo:Código,Nome, Data de nascimento e sexo)
2) Excluindo do banco de dados a linha selecionada com o clique de um botão
3) Alterando no banco de dados os dados da linha selecionada que foram alterados nas textbox com o clique de um botão.
Agradeço a quem puder me ajudar
Eu faço da seguinte maneira:
Depois de montado o GRID e eu quero fazer algo eu Clico na Linha e coloco um botão para fazer algo, no evento CLICK do botão eu pego da seguinte forma:
O primeiro parametro é a linha então eu uso o retorno da propriedade ROW e coloco o número da coluna que eu quero passando para o textbox
Espero ter ajudado
Depois de montado o GRID e eu quero fazer algo eu Clico na Linha e coloco um botão para fazer algo, no evento CLICK do botão eu pego da seguinte forma:
Textbox = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, [Coluna que eu quero])
O primeiro parametro é a linha então eu uso o retorno da propriedade ROW e coloco o número da coluna que eu quero passando para o textbox
Espero ter ajudado
Valeu Cheskys. Muito obrigado. Deu certinho.
Tentei com este artifÃÂÂcio conseguir alterar e excluir os registros do banco de dados, mas infelizmente não consegui.
Agradeço a quem puder me ajudar nestes dois ÂÂ'tópicos'.
Tentei com este artifÃÂÂcio conseguir alterar e excluir os registros do banco de dados, mas infelizmente não consegui.
Agradeço a quem puder me ajudar nestes dois ÂÂ'tópicos'.
Alguem me ajuda...
Para vc alterar ou excluir estes registros primeiro vc deve chamar ele na tela, intaum use um textbox e no on-change ou no Lost Focus dele coloque
Sql = "Select * From geral Where codigo Like '" & textbox.Text & "%' ORDER BY codigo"
com isso vc localiza no Banco o registo selecionado,,,
Ai criar um botão com delete no Sql para excluir e outro com Update no Sql para alterar...
Voce pode alterar o textbox pela linha selecionada no Mshflexgrid ai vc substitui o texbox por grid.text,,,
Pelo que eu entendi da sua duvida acho que isso deve resolver.
Sql = "Select * From geral Where codigo Like '" & textbox.Text & "%' ORDER BY codigo"
com isso vc localiza no Banco o registo selecionado,,,
Ai criar um botão com delete no Sql para excluir e outro com Update no Sql para alterar...
Voce pode alterar o textbox pela linha selecionada no Mshflexgrid ai vc substitui o texbox por grid.text,,,
Pelo que eu entendi da sua duvida acho que isso deve resolver.
VFNET obrigado pela ajuda.
Ainda estou com dificuldade pois não consegui fazer um código que desse um resultado satisfatório nos botões excluir e alterar.
Como seria o código???
Ainda estou com dificuldade pois não consegui fazer um código que desse um resultado satisfatório nos botões excluir e alterar.
Como seria o código???
No Delete coloque o codigo
Sql = "Delete * From geral"
No Alterar
Sql = "UPDATE tbent SET Codigo='" & Txt1.Text & "', nascimento='" & Txt2.Text & "', nome='" & Txt3.Text & "', sexo='" & Txt4.Text & "'"
E claro que cada Txt.text tem que ser o textbox que vc usa em seu sistema!
Sql = "Delete * From geral"
No Alterar
Sql = "UPDATE tbent SET Codigo='" & Txt1.Text & "', nascimento='" & Txt2.Text & "', nome='" & Txt3.Text & "', sexo='" & Txt4.Text & "'"
E claro que cada Txt.text tem que ser o textbox que vc usa em seu sistema!
Tentei mas infelizmente não deu. Olhe o código que coloquei
Sub limpa()
Text1 = ""
Text2 = ""
Text3 = ""
Text4 = ""
End Sub
Private Sub cmd_Alterar_Click()
Sql = "Select * FROM geral Where código Like '" & Text1.Text & "%' ORDER BY código"
rs.Close
rs.Open Sql, conexao, adOpenKeyset, adLockOptimistic
Sql = "UPDATE tbent SET Código='" & Text1.Text & "', nascimento='" & Text3.Text & "', nome='" & Text2.Text & "', sexo='" & Text4.Text & "'"
limpa
Text2.SetFocus
Exit Sub
End Sub
Private Sub cmd_Excluir_Click()
r = MsgBox("Deseja excluir -" & rs.Fields(0), vbYesNo, "Excluir registro")
If r = vbYes Then
Sql = "Select * FROM geral Where código Like '" & Text1.Text & "%' ORDER BY código"
rs.Close
rs.Open Sql, conexao, adOpenKeyset, adLockOptimistic
Sql = "Delete * From geral"
limpa
Text2.SetFocus
End If
End Sub
Vamos avaliar seu código:
Neste ponto criamos uma string e abrimos um rs ...
Neste momento abrimos uma string, limpamos as tstbox e jogamos o foco para outra então saimos da função...
Vc realmente não percebeu que precisaria EXECUTAR o comando da ultima SQL ?
onde vc falou executa SQL (UPDATE tbent ...)?
Faltou a linha :
conexao.Execute Sql
Faz assim:
Neste ponto criamos uma string e abrimos um rs ...
Sql = "Select * FROM geral Where código Like '" & Text1.Text & "%' ORDER BY código"
rs.Close
rs.Open Sql, conexao, adOpenKeyset, adLockOptimistic
Neste momento abrimos uma string, limpamos as tstbox e jogamos o foco para outra então saimos da função...
Sql = "UPDATE tbent SET Código='" & Text1.Text & "', nascimento='" & Text3.Text & "', nome='" & Text2.Text & "', sexo='" & Text4.Text & "'"
limpa
Text2.SetFocus
Exit Sub
Vc realmente não percebeu que precisaria EXECUTAR o comando da ultima SQL ?
onde vc falou executa SQL (UPDATE tbent ...)?
Faltou a linha :
conexao.Execute Sql
Faz assim:
Sql = "UPDATE tbent SET Código='" & Text1.Text & "', nascimento='" & Text3.Text & "', nome='" & Text2.Text & "', sexo='" & Text4.Text & "'"
conexao.Execute Sql
limpa
Text2.SetFocus
Exit Sub
Realmente não tinha atentado para este dado. Já quebrei cabeça até mesmo.
Fiz a alteração no código mas infelizmente não deu certo.
O campo código é do tipo auto numeração e o sistema diz que não pode ser atualizado. Se retiro o código da instrução sql:
Sql = "UPDATE tbent SET nascimento='" & Text3.Text & "', nome='" & Text2.Text & "', sexo='" & Text4.Text & "'"
O sistema dá erro indicando que está sendo gerado registro com dados repetidos e grava os dados como um novo registro e com novo número de código. O registro inicial que deveria ser alterado permanece preservado.
No comando de exclusão funcionou depois que alterei a instrução da dica do amigo vf net . Ficou assim.
Fiz a alteração no código mas infelizmente não deu certo.
O campo código é do tipo auto numeração e o sistema diz que não pode ser atualizado. Se retiro o código da instrução sql:
Sql = "UPDATE tbent SET nascimento='" & Text3.Text & "', nome='" & Text2.Text & "', sexo='" & Text4.Text & "'"
O sistema dá erro indicando que está sendo gerado registro com dados repetidos e grava os dados como um novo registro e com novo número de código. O registro inicial que deveria ser alterado permanece preservado.
No comando de exclusão funcionou depois que alterei a instrução da dica do amigo vf net . Ficou assim.
Private Sub cmd_Excluir_Click()
r = MsgBox("Deseja excluir -" & rs.Fields(0), vbYesNo, "Excluir registro")
If r = vbYes Then
Sql = "Select * FROM geral Where código Like '" & Text1.Text & "%' ORDER BY código"
rs.Close
rs.Open Sql, conexao, adOpenKeyset, adLockOptimistic
Sql = "Delete * FROM geral Where código Like '" & Text1.Text & "'"
conexao.Execute Sql
limpa
Text2.SetFocus
End If
End Sub
Cade a condiçao ? queres atualizar todos os registros da sua tabela ?
Ainda bem que o comando não deu certo pois senão vc ia ter 1mi de registros iguais, hehehehe.
Tem que ser algo assim fii.
UPDATE tabela SET campo=valor ... WHERE condicao
Este WHERE é tal qual o utilizado num SELECT
Ainda bem que o comando não deu certo pois senão vc ia ter 1mi de registros iguais, hehehehe.
Tem que ser algo assim fii.
UPDATE tabela SET campo=valor ... WHERE condicao
Este WHERE é tal qual o utilizado num SELECT
Tópico encerrado , respostas não são mais permitidas