Vamos com este código incrementar numa coluna do datagrid uma ListBox, que dará opções de alteração no Banco de Dados, para isto vamos precisar fazer referencia à Biblioteca Microsoft ActiveX Data Objects 2.8 Library, pois iremos utilizar ADO para interagir com o BD, para isto va ao menu Project\References e na caixa de dialogo escolha "Microsoft ActiveX Data Objects 2.8 Library"
Para começar teremos que criar um BD com nome "BD" e uma tabela de nome "TABELA" com os seguintes campos:
COD
NOME
PAGO
PAGAMENTO
Após criado o banco insira alguns registros nele, ex:
COD = 1
NOME = MACEDO
PAGO = SIM
PAGAMENTO = CHEQUE
COD = 2
NOME = KUROI
PAGO = SIM
PAGAMENTO = CARTÃO
Agora no Form insira um Controle DataGrid e uma ListBox
Deixe a propriedade VISIBLE da List = FALSE
Agora pode copiar todo o código abaixo e executar sua aplicação, mas após ver o que acontece não deixe de estudar o código, pois o fiz todo comentado para ser estudado:
No General Declarations:
'declarando objetos necessarios
Dim cnn As New ADODB.Connection 'conexão
Dim cmd As New ADODB.Command 'command
Dim rs As New ADODB.Recordset 'recordset
Const indice_da_coluna = 3 'coluna onde será mostrada
'a listbox com itens para alterar o BD
No restante do FORM:
Private Sub conectar() 'String de conexão
cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0;" & _
"data Source = " & App.Path & "\BD.mdb;"
cnn.CursorLocation = adUseClient
cnn.Open
End Sub
'carrega o rs com dados da tabela
Private Sub carrega_rs()
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = "select * from tabela"
Set rs = .Execute
End With
End Sub
'preenche o datagrid com os dados do RS
Private Sub preenche_datagrid()
With rs
Set DataGrid1.DataSource = rs
DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell
'codigo abaixo lança a lisbox na coluna
DataGrid1.Columns(indice_da_coluna).Button = True
End With
End Sub
Private Sub lista() 'carrega a listbox com os itens
With List1
.AddItem "CHEQUE"
.AddItem "DINHEIRO"
.AddItem "CARNÊ"
.AddItem "BOLETO"
.AddItem "CARTÃO"
End With
End Sub
Private Sub Form_Load()
conectar 'conecta com o banco, abre a conexão
carrega_rs 'carrega o recordset
preenche_datagrid 'popula o datagrid
lista 'carrega o listbox com os itens
End Sub
'mostra a lista na coluna selecionada
Private Sub DataGrid1_ButtonClick(ByVal ColIndex As Integer)
Dim coluna As Column
If indice_da_coluna = indice_da_coluna Then
Set coluna = DataGrid1.Columns(indice_da_coluna)
With List1
.Left = DataGrid1.Left + coluna.Left
.Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + DataGrid1.RowHeight
.Width = coluna.Width + 15
.ListIndex = 0
.Visible = True
.ZOrder 0
.SetFocus
End With
End If
End Sub
Private Sub List1_dblClick()
'altera o registro da tabela para o valor selecionado
'na listbox
With cmd
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = " update TABELA set " & _
" PAGAMENTO = '" & List1.Text & "'" & _
"where cod = " & DataGrid1.Columns.Item(0) & ";"
.Execute
End With
List1.Visible = False
carrega_rs
preenche_datagrid
End Sub
'limpa o cmd e rs ao fechar o form
Private Sub Form_Unload(Cancel As Integer)
Set cmd = Nothing
Set rs = Nothing
End Sub
O que acontece: ao clicar nas linhas da coluna PAGAMENTO abre-se a List com os itens, e dando duplo click na list a celula do Datagrid assume o novo valor pois o BD foi alterado no registro e campo correspondente
Pergunta
Macêdo
Vamos com este código incrementar numa coluna do datagrid uma ListBox, que dará opções de alteração no Banco de Dados, para isto vamos precisar fazer referencia à Biblioteca Microsoft ActiveX Data Objects 2.8 Library, pois iremos utilizar ADO para interagir com o BD, para isto va ao menu Project\References e na caixa de dialogo escolha "Microsoft ActiveX Data Objects 2.8 Library"
Para começar teremos que criar um BD com nome "BD" e uma tabela de nome "TABELA" com os seguintes campos:
COD
NOME
PAGO
PAGAMENTO
Após criado o banco insira alguns registros nele, ex:
COD = 1
NOME = MACEDO
PAGO = SIM
PAGAMENTO = CHEQUE
COD = 2
NOME = KUROI
PAGO = SIM
PAGAMENTO = CARTÃO
Agora no Form insira um Controle DataGrid e uma ListBox
Deixe a propriedade VISIBLE da List = FALSE
Agora pode copiar todo o código abaixo e executar sua aplicação, mas após ver o que acontece não deixe de estudar o código, pois o fiz todo comentado para ser estudado:
No General Declarations:
No restante do FORM:O que acontece: ao clicar nas linhas da coluna PAGAMENTO abre-se a List com os itens, e dando duplo click na list a celula do Datagrid assume o novo valor pois o BD foi alterado no registro e campo correspondente
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.