ALTERACAO_LISTBOX_VBTAB

FERRAZ 24/11/2010 17:15:22
#358146
Marcelo, viu, nao eh um ListView e sim um ListBox. O codigo que uso para preencher o ListBox eh:

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.

MARCELO.TREZE 24/11/2010 18:21:17
#358156
digo o código de consulta, vc diz ter um codigo de consulta posta o mesmo
FERRAZ 24/11/2010 18:31:30
#358159
Beleza, este eh o codigo:

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
FERRAZ 25/11/2010 08:44:16
#358183
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.
MARCELO.TREZE 25/11/2010 11:41:01
#358199
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

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

FERRAZ 25/11/2010 11:50:24
#358200
Marcelo beleza, vou testar e depois falo pro ce.
FERRAZ 25/11/2010 12:33:41
#358205
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.
MARCELO.TREZE 25/11/2010 13:36:06
#358208
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.



FERRAZ 25/11/2010 14:20:13
#358211
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.
FERRAZ 25/11/2010 17:47:16
#358237
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.
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 ?
Página 2 de 3 [25 registro(s)]
Tópico encerrado , respostas não são mais permitidas