ALTERACAO_LISTBOX_VBTAB
Marcelo, viu, nao eh um ListView e sim um ListBox. O codigo que uso para preencher o ListBox eh:
Eu acho tbem que vai ficar mais claro pro ce, com mais este codigo aqui, uso em um modulo, que talves seja o cara, lembra desse codigo:
Valeu meu amigo, ha minha demora em responder vc, o corre, corre...no trabalho.
Private Sub CarList()
[ô]Aqui eu monto a sub para preencher o listbox
With ListMov
.AddItem [Ô] [Ô] & (TxtProd.Text) & vbTab & (TxtQuant) & vbTab & _
(TxtVlor.Text) & vbTab & (TxtSubTl.Text)
End With
End Sub
Eu acho tbem que vai ficar mais claro pro ce, com mais este codigo aqui, uso em um modulo, que talves seja o cara, lembra desse codigo:
Private Declare Function SendMessage Lib [Ô]user32[Ô] _
Alias [Ô]SendMessageA[Ô] (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Const LB_SETTABSTOPS = &H192
Public Sub ListColumns(lListHandle As Long)
Dim iNumColumns As Long
[ô] Coloque o nº de colunas que o ListBox e terá -1 no array a seguir:
Dim iListTabs(3) As Long
Dim Ret As Long
[ô] O ListBox terá 4 colunas
iNumColumns = 4
[ô] A 1º coluna terá 12 caracteres e a 2º 24
[ô] 24 caracteres * 2 = 24
iListTabs(0) = 96 [ô] 96/4 = 24 caracteres
iListTabs(1) = 48 [ô] 48/4 = 12 caracteres
iListTabs(2) = 48 [ô] 48/4 = 12 caracteres
iListTabs(3) = 48 [ô] 48/4 = 12 caracteres
Ret = SendMessage(lListHandle, _
LB_SETTABSTOPS, iNumColumns, iListTabs(0))
End Sub
Call ListColumns(ListMov.hwnd) no load do form em questao.
CarListCblho - este aqui eh uma sub para o cabecalho que tbem esta no load do form em questao.
Valeu meu amigo, ha minha demora em responder vc, o corre, corre...no trabalho.
digo o código de consulta, vc diz ter um codigo de consulta posta o mesmo
Beleza, este eh o codigo:
Este aqui eh a confirmacao da consulta:
Valeu meu amigo, vou precisar sair agora, abracos
Private Sub lvBConlProd_Click()
[ô]===========================================================================================================
[ô]Aqui eu verifico se o campo total eh = a zero se for segnifica que eh a primeira consulta realiza
[ô]caso contrario, entao, o campo total eh maior que zero, segnifica que outra consulta feita, portanto
[ô]o listmov precisar ser limpo para receber a nova consulta.
[ô]===========================================================================================================
If TxtTlProj.Text = 0 Then
FrmBCald.Show vbModal
Else
With ListMov
.Clear
End With
CarListCblho
FrmBCald.Show vbModal
End If
[ô]===========================================================================================================
End Sub
Este aqui eh a confirmacao da consulta:
Private Sub PreecheConsulta_Projeto()
Dim SQL As String
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô][Ô] & TxtBsc.Text & [Ô]%[ô] order by NClt[Ô]
Set rs = cn.Execute(SQL)
With MsFlexProjeto
Do While Not rs.EOF
FrmProjeto.TxtReg.Text = .TextMatrix(.RowSel, 0)
FrmProjeto.TxtDta.Text = .TextMatrix(.RowSel, 1)
FrmProjeto.CboTipServ.Text = .TextMatrix(.RowSel, 6)
FrmProjeto.TxtClt.Text = .TextMatrix(.RowSel, 9)
FrmProjeto.TxtTlProj = .TextMatrix(.RowSel, 7)
FrmProjeto.TxtFtUso = .TextMatrix(.RowSel, 8)
FrmProjeto.ListMov.AddItem [Ô] [Ô] & (rs!Itens) & vbTab & (rs!Qtde) & vbTab & _
(rs!VUnit) & vbTab & (rs!SbTl)
rs.MoveNext
Loop
End With
End Sub
Valeu meu amigo, vou precisar sair agora, abracos
Marcelo, dia, amigo, eu estou sem net em casa e acredito que so vou estabelecer a conecxao com a rede mundial, so no ano que vem, portanto, nao poderei responder a vc e a todos do VbMania depois das 17:30 horas de PE ou seja nao vou responder depois do seu horario ai 16:30 horas de SP.
Na verdade, estou sustificando a minha saida ontem as presas, na minha ultima resposta ao meu topico, aqui no VbMania.
Valeu, meu amigo.
Na verdade, estou sustificando a minha saida ontem as presas, na minha ultima resposta ao meu topico, aqui no VbMania.
Valeu, meu amigo.
agora acho que entendi o problema
primeiro na sua rotina de pesquisa altere esta linha
FrmProjeto.ListMov.AddItem [Ô] [Ô] [txt-color=#e80000]& (rs!ID) & vbTab[/txt-color] & (rs!Itens) & vbTab & (rs!Qtde) & vbTab & _
(rs!VUnit) & vbTab & (rs!SbTl)
feito alteração acima, na sua rotina de alteração proceda da seguinte maneira
agora faça um teste para ver o resultado acho que ja vamos chegar perto do que deseja
primeiro na sua rotina de pesquisa altere esta linha
FrmProjeto.ListMov.AddItem [Ô] [Ô] [txt-color=#e80000]& (rs!ID) & vbTab[/txt-color] & (rs!Itens) & vbTab & (rs!Qtde) & vbTab & _
(rs!VUnit) & vbTab & (rs!SbTl)
feito alteração acima, na sua rotina de alteração proceda da seguinte maneira
Private Sub lvBAlt_Click()
[ô]===========================================================================================================
Dim Valor() As String
Valor = Split(ListMov.List(ListMov.ListIndex), vbTab)
TxtTlProj.Text = CCur(TxtTlProj.Text) - CCur(Valor(3))
TxtTlProj.Text = Format(TxtTlProj.Text, [Ô]currency[Ô])
With ListMov
.RemoveItem (.ListIndex)
End With
[ô]Aqui eu tenho de atualizar a tabela ja que foram modificados conteudo no banco.
[ô]fecho o programa depois da alteracao para evitar erros em tempo de execucao.
Dim SQL As String
Dim RemCabList As String
SQL = [Ô]UPDATE TbProjeto SET[Ô]
SQL = SQL & [Ô] Dta =[ô][Ô] & TxtDta.Text & [Ô][ô], [Ô]
SQL = SQL & [Ô] Itens =[ô][Ô] & RemCabList & [Ô][ô], [Ô]
SQL = SQL & [Ô] TipoProjeto =[ô][Ô] & CboTipServ.Text & [Ô][ô], [Ô]
SQL = SQL & [Ô] TotalProjeto =[ô][Ô] & TxtTlProj.Text & [Ô][ô], [Ô]
SQL = SQL & [Ô] FatorAplicado =[ô][Ô] & TxtFtUso.Text & [Ô][ô], [Ô]
SQL = SQL & [Ô] NClt =[ô][Ô] & TxtClt.Text & [Ô][ô][Ô]
SQL = SQL & [Ô] WHERE ID = [Ô] & LTrim(Valor(0))
Set rs = cn.Execute(SQL)
MsgBox [Ô]Projeto Alterado Com Sucesso ! Seu Novo Valor[Ô] + TxtTlProj.Text, vbOKOnly + vbInformation
Unload Me
[ô]===========================================================================================================
End Sub
agora faça um teste para ver o resultado acho que ja vamos chegar perto do que deseja
Marcelo beleza, vou testar e depois falo pro ce.
Marcelo, fiz os testes, e o resultado, agora mudou um pouco, ele nao esta calculando correto os valores e tbem esta eliminando o nome do item e duplicando, veja nas imagens:
Este aqui mostra eu selecionando o item para excluir
http://img10.imageshack.us/img10/1882/imgtelaitemsel.jpg
Este aqui mostra o item alterado no list, mais com o calculo errado, pois, o valor do sub total do item eh 3.500,00, totalizando no final 5.180,00, depois alteracao total fica 4.480,00 ?
http://img201.imageshack.us/img201/1949/imgtelaitemalt.jpg
Este aqui mostra a consulta do registro, veja como ficou.
http://img826.imageshack.us/img826/416/imgtelaitemconsultado.jpg
Bom, tivemos outro resultado, mais vamos la, valeu.
Este aqui mostra eu selecionando o item para excluir
http://img10.imageshack.us/img10/1882/imgtelaitemsel.jpg
Este aqui mostra o item alterado no list, mais com o calculo errado, pois, o valor do sub total do item eh 3.500,00, totalizando no final 5.180,00, depois alteracao total fica 4.480,00 ?
http://img201.imageshack.us/img201/1949/imgtelaitemalt.jpg
Este aqui mostra a consulta do registro, veja como ficou.
http://img826.imageshack.us/img826/416/imgtelaitemconsultado.jpg
Bom, tivemos outro resultado, mais vamos la, valeu.
George, olha vai ser dificil corrigir o que está tentando fazer, mas vou dar uma dica de como consultar e alterar, ok.
primeiro o ideal seria vc preencher um grid com os dados da consulta.
depois ao se clicar em um dos itens, estes aparecerem nas textbox.
e fazer a alteração baseado na textbox, fazendo uma nova consulta em seguida.l
veja um exemplo:
a. crio uma funcão de consulta que apaga o grid e prenche com os dados encontrados;
b. chamo esta função em um botão (ex: btnConsulta);
c. no evento click do grid crio uma função que preenche os campos(textboxs) conforme a linha selecionada;
d. faço as alterações necessárias nos textbox, e no botão alterar chamo a função que apaga e preenche o grid(a) com as alterações efetuadas.
entedeu, porém vc tem que ter um id para identificar qual o registro a ser alterado, e quanto a soma, não sei com vc tá fazendo a matemática disto.
primeiro o ideal seria vc preencher um grid com os dados da consulta.
depois ao se clicar em um dos itens, estes aparecerem nas textbox.
e fazer a alteração baseado na textbox, fazendo uma nova consulta em seguida.l
veja um exemplo:
a. crio uma funcão de consulta que apaga o grid e prenche com os dados encontrados;
b. chamo esta função em um botão (ex: btnConsulta);
c. no evento click do grid crio uma função que preenche os campos(textboxs) conforme a linha selecionada;
d. faço as alterações necessárias nos textbox, e no botão alterar chamo a função que apaga e preenche o grid(a) com as alterações efetuadas.
entedeu, porém vc tem que ter um id para identificar qual o registro a ser alterado, e quanto a soma, não sei com vc tá fazendo a matemática disto.
Meu amigo, vou nessa, digo, fazer as alteracoes necessarias para seguir sua sugestao, que conserteza, terei mais sucesso.
Vou deixar este topico aberto e a medida que for aparecendo alguma duvida, eu, chamo a galera, neste mesmo topico, tudo bem ?
Valeu, maos a obra.
Vou deixar este topico aberto e a medida que for aparecendo alguma duvida, eu, chamo a galera, neste mesmo topico, tudo bem ?
Valeu, maos a obra.
Marcelo, viu, ja estou testando a nova forma de alteracao no bd, conforme sua sugestao, ainda preciso fazer alguns ajustes, mais quando eu tentei alterar o item selecionado no grid,
ele foi alterado, mais nao ficou bom ainda: Se tenho dois itens e quero apenas alterar um valor que digamos esta errado, ele ate altera, deixa o registro que tem dois itens com o mesmo nome: tipo, Rosca s/fim e Montagem de Granulador = registro 4: agora o registro fica: Montagem de Granulador e Montagem de Granulador ?
Veja o que acha:
Minha funcao para preencher os campos.
Minha funcao para faze o update na tabela.
Minha funcao para alterar o item ja nos campos text.
Valeu, espero que eu ter sido claro e que o codigo ta bom ?
ele foi alterado, mais nao ficou bom ainda: Se tenho dois itens e quero apenas alterar um valor que digamos esta errado, ele ate altera, deixa o registro que tem dois itens com o mesmo nome: tipo, Rosca s/fim e Montagem de Granulador = registro 4: agora o registro fica: Montagem de Granulador e Montagem de Granulador ?
Veja o que acha:
Minha funcao para preencher os campos.
Public Sub PreencheCampos()
[ô]===========================================================================================================
[ô]Aqui tenho uma funcao que preenche os campos txt do form altera projeto
[ô]===========================================================================================================
Dim SQL As String
SQL = [Ô]SELECT * FROM TbProjeto WHERE ID like [ô][Ô] & FrmBCald.TxtBsc.Text & [Ô]%[ô] order by NClt[Ô]
Set rs = cn.Execute(SQL)
With FrmBCald.MsFlexProjeto
Do While Not rs.EOF
.Rows = .Rows + 1
FrmAltProj.TxtReg.Text = .TextMatrix(.RowSel, 0)
FrmAltProj.TxtDta.Text = .TextMatrix(.RowSel, 1)
FrmAltProj.TxtItens.Text = .TextMatrix(.RowSel, 2)
FrmAltProj.TxtQuant.Text = .TextMatrix(.RowSel, 3)
FrmAltProj.TxtVlorUnit.Text = .TextMatrix(.RowSel, 4)
FrmAltProj.TxtSubTl.Text = .TextMatrix(.RowSel, 5)
FrmAltProj.CboTipServ.Text = .TextMatrix(.RowSel, 6)
FrmAltProj.TxtTlProj.Text = .TextMatrix(.RowSel, 7)
FrmAltProj.TxtFtUso.Text = .TextMatrix(.RowSel, 8)
FrmAltProj.TxtClt.Text = .TextMatrix(.RowSel, 9)
rs.MoveNext
Loop
End With
[ô]===========================================================================================================
End Sub
Minha funcao para faze o update na tabela.
Public Function AlteraProjeto(ByVal strRegistro As String, strDataRegistro As String, _
strCliente As String, strItens As String, strTipServ As String, _
strValorUnit As String, strQuant As String, strSubTotal As String, _
strFator As String, strTotal As String) As Variant
cn.Execute [Ô]Update TbProjeto Set[Ô] _
& [Ô] Dta= [ô][Ô] & strDataRegistro & [Ô][ô], [Ô] _
& [Ô] Itens= [ô][Ô] & strItens & [Ô][ô], [Ô] _
& [Ô] Qtde= [ô][Ô] & strQuant & [Ô][ô], [Ô] _
& [Ô] VUnit= [ô][Ô] & strValorUnit & [Ô][ô], [Ô] _
& [Ô] SbTl= [ô][Ô] & strSubTotal & [Ô][ô], [Ô] _
& [Ô] TipoProjeto= [ô][Ô] & strTipServ & [Ô][ô], [Ô] _
& [Ô] TotalProjeto= [ô][Ô] & strTotal & [Ô][ô], [Ô] _
& [Ô] FatorAplicado= [ô][Ô] & strFator & [Ô][ô], [Ô] _
& [Ô] NClt= [ô][Ô] & strCliente & [Ô][ô][Ô] _
& [Ô] Where ID = [Ô] & strRegistro
AlteraProjeto = True
End Function
Minha funcao para alterar o item ja nos campos text.
Private Sub lvBAlt_Click()
[ô]===========================================================================================================
[ô]Aqui eu chamo a funcao que ira fazer as atualizacoes na tabela projeto
[ô]===========================================================================================================
Dim AtualProj As Variant
AtualProj = AlteraProjeto(TxtReg.Text, TxtDta.Text, TxtClt.Text, TxtItens.Text, _
TxtVlorUnit.Text, TxtQuant.Text, TxtSubTl.Text, CboTipServ.Text, _
TxtFtUso.Text, TxtTlProj.Text)
If AtualProj = True Then
MsgBox [Ô]Parabens Alteração Concluida. ![Ô], vbInformation
Unload Me
Else
MsgBox [Ô]Erro na atualização.[Ô], vbCritical
End If
[ô]===========================================================================================================
End Sub
Valeu, espero que eu ter sido claro e que o codigo ta bom ?
Tópico encerrado , respostas não são mais permitidas