Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LexxCorp

[Resolvido] Inserindo no BD MySQL informações de um ListView

Recommended Posts

Caros Colegas de Fórum, Saudações !!!

 

Sou LexxCorp, Neófito aqui no Fórum, entretando, antes de qualquer coisa, gostaria de deixar claro que só estou postando aqui no Fórum através deste tópico novo, porque o problema pelo qual estou passando é bem específico e, depois de muita pesquisa e busca pelo Fórum, não consegui nenhuma resposta ou solução para o que estou enfrentando. Peço desculpas se porventura deixei escapar alguma coisa e isso(resposta) tenha em algum lugar do fórum. Mas vamos lá!

 

Estou construindo um programa para gerenciar livros e etc, só que na parte onde dou entrada de produtos no sistema, sabendo que esta entrada é na verdade um retorno de livros que saíram para eventos e voltaram, eu preciso escaneá-los com um leitor óptico o seu código de barras e este entra no campo código do produto, e, automaticamente pula para o campo quantidade. Quando informo a quantidade, ele volta para o campo código e dou ENTER e ele joga a informação do produto numa ListView com outras informações deste produto, como valor e aquela quantidade (informada anteriormente).

 

Só que o que acontece neste momento??? Eu dou o enter, ele joga no listview e quando clico em FECHAR ENTRADA, que e para gravar as informacoes no banco em MySQL, o sistema so grava o ultimo item da lista. Bom, e isso que eu nao estou conseguindo resolver. Abaixo segue o codigo...

 

Option Explicit

Public DB As New ADODB.Connection

Public RS As New ADODB.Recordset

Public RS2 As New ADODB.Recordset

Public RS3 As New ADODB.Recordset

Public RS4 As New ADODB.Recordset

Public Lista As ListItem

Public Coluna As ColumnHeader

 

Private Sub cmdSair_Click()

Unload Me

End Sub

 

Private Sub cmdFechaEntrada_Click()

Dim TSQL As String

Dim DSQL As String

Dim i As Integer

 

TSQL = "SELECT * FROM saidas ORDER BY idSaida DESC"

RS3.Open TSQL, DB, adOpenDynamic, adLockOptimistic

RS3.AddNew

RS3("natureza") = cmbNatureza

RS3("evento") = cmbEvento

RS3("data_saida") = txtDataEnt

RS3.Update

RS3.Close

 

DSQL = "SELECT * FROM produtos_retornos ORDER BY id DESC"

RS4.Open DSQL, DB, adOpenDynamic, adLockOptimistic

 

For i = 1 To lstLista.ListItems.Count

 

'Este e o trecho onde estou tendo problemas, ele so grava o ultimo item da lista ----------->>>>>>>>>>>>>>>>>

 

RS4.AddNew

RS4("cod_produto") = lstLista.ListItems.Item(i)

RS4("produto") = Lista.SubItems(i)

RS4("valor") = Format(Lista.SubItems(i), "##,###.00")

RS4("quant") = Lista.SubItems(i)

RS4.Update

Next i

 

'Fim do trecho onde estou tendo problemas... --------------->>>>>>>>>>>>>>>>>>>>>>>>>

 

RS4.Close

cmdFechaEntrada.Enabled = False

MsgBox "Retorno Informado ao Sistema Corretamente...", vbCritical

End Sub

 

Private Sub cmdNovo_Click()

 

cmdFechaEntrada.Enabled = True

'txtDataEnt.Text = "##/##/####"

txtCodProd.Text = ""

txtQuant.Text = ""

lstLista.ListItems.Clear

 

End Sub

 

Private Sub Form_Load()

Dim SQL As String

 

DB.CursorLocation = adUseClient

'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\oficio.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False

DB.Open "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=oficio_das_letras; User=root;Password=;Option=3;"

 

SQL = "SELECT * FROM eventos WHERE situacao='Em Andamento...'"

RS.Open SQL, DB, adOpenForwardOnly, adLockReadOnly

 

While Not RS.EOF

cmbEvento.AddItem RS("evento")

RS.MoveNext

Wend

 

End Sub

 

Private Sub Form_Unload(Cancel As Integer)

 

Set RS.ActiveConnection = Nothing

RS.Close

DB.Close

 

End Sub

 

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKeyReturn Then

SendKeys ("{TAB}")

KeyAscii = 0

End If

End Sub

 

Private Sub lstLista_BeforeLabelEdit(Cancel As Integer)

lstLista.ListItems.Remove (lstLista.SelectedItem.Index)

End Sub

 

Private Sub txtCodProd_KeyPress(KeyAscii As Integer)

Dim CSQL As String

 

'On Error Resume Next

If KeyAscii = 13 Then

 

CSQL = "SELECT * FROM produto WHERE codigo_produto LIKE '%" & txtCodProd.Text & "%' ORDER BY codigo_produto DESC"

RS2.Open CSQL, DB, adOpenForwardOnly, adLockReadOnly

If Not RS2.EOF Then

Set Lista = lstLista.ListItems.Add(, , RS2("codigo_produto"))

Lista.SubItems(1) = RS2("titulo_produto")

Lista.SubItems(2) = Format(RS2("preco"), "##,##0.00")

Lista.SubItems(3) = txtQuant.Text

txtCodProd.Text = ""

Else

MsgBox "Registro não encontrado!!!", vbCritical

End If

RS2.Close

 

End If

 

End Sub

 

Private Sub txtQuant_Change()

txtCodProd.SetFocus

 

End Sub

 

Gostaria gentilmente da ajuda de quem entender do assunto. Agradeco imensamente pela ajuda de antemao!!!

 

MUITO OBRIGADO!!!

 

LexxCorp

Compartilhar este post


Link para o post
Compartilhar em outros sites

LexxCorp por que você não usa a nova tecnologia do vb as versões .net

 

são muito boas e simples de desenvover com elas !!!

 

Se queser em vb 6 ok

 

o Problema que o objeto listbox tem algumas limitações .

 

so que você pode fazer algumas modificações.

 

se você puder postar o projeto dou uma olhada e te renvio o mesmo.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

LexxCorp por que você não usa a nova tecnologia do vb as versões .net

 

são muito boas e simples de desenvover com elas !!!

 

Se queser em vb 6 ok

 

o Problema que o objeto listbox tem algumas limitações .

 

so que você pode fazer algumas modificações.

 

se você puder postar o projeto dou uma olhada e te renvio o mesmo.

 

t+

 

Olá Nilson, tudo bem ???

 

Veja bem, eu até quero migrar para o VB.Net, só que vejo que é meio complicado, por isso, como demanda tempo aprender essa nova tecnologia e esse projeto é bem urgente, então vou esperar terminar este e aí passo para o .Net, mas neste projeto, não estou usando o listbox, e sim o listview.

O código é aquele que eu postei, mas estou colocando uma imagem de parte do programa, ou se preferir posso lhe enviar o projeto inteiro prá você ver, ok ?

 

Imagem Postada

 

Essa é a tela do programa, ou melhor, parte dele, a mais importante.

 

Mais uma vez, muito obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok

ja pegueo o projeto.

 

vou dar uma olhada e te renvio !!!

 

t+

 

Boa Tarde LexxCopr

 

Segue o codigo modificado com a solução do seu problem.

 


Private Sub cmdFechaEntrada_Click()
Dim TSQL As String
Dim DSQL As String
Dim i As Integer

    TSQL = "SELECT * FROM saidas ORDER BY idSaida DESC"
    RS3.Open TSQL, DB, adOpenDynamic, adLockOptimistic
    RS3.AddNew
    RS3("natureza") = cmbNatureza
    RS3("evento") = cmbEvento
    RS3("data_saida") = txtDataEnt
    RS3.Update
    RS3.Close
    
    DSQL = "SELECT * FROM produtos_retornos ORDER BY id DESC"
    RS4.Open DSQL, DB, adOpenDynamic, adLockOptimistic
    
    For i = 1 To lstLista.ListItems.Count
    RS4.AddNew
        RS4("cod_produto") = lstLista.ListItems.Item(i)
        RS4("produto") = lstLista.ListItems.Item(i).SubItems(1)
        RS4("valor") = Format(lstLista.ListItems.Item(i).SubItems(2), "##,###.00")
        RS4("quant") = lstLista.ListItems.Item(i).SubItems(3)
    RS4.Update
    Next i
    
    RS4.Close
cmdFechaEntrada.Enabled = False
MsgBox "Retorno Informado ao Sistema Corretamente...", vbCritical
End Sub

Qualquer coisa é so postar

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.