PROBLEMAS EM ATUALIZAR O MSFLEXGRID

RAPHAELLBA 01/02/2010 13:53:00
#333326
Olá Pessoal Tudo bem, sou novo aqui no vbmania e tambem sou novato em vb, tenho um aplicativo para abertura de ordem de serviços, está tudo ok na hora de abrir a ordem de serviços, só tenho problemas na hora de incluir os produto, uso o componente msflexgrid e uso uma instrução sql pra preencher ele.
segue rotina de preenchimento

[txt-color=#0000f0]Public Sub MontarListaos()

Dim RS As New ADODB.Recordset
Dim SQL As String
Dim Criterio As String
Dim valor As Currency


grdpesquisa.TextMatrix(0, 0) = [Ô]Cod_Produto[Ô]
grdpesquisa.TextMatrix(0, 1) = [Ô]Cod Prod[Ô]
grdpesquisa.TextMatrix(0, 2) = [Ô]Produto[Ô]
grdpesquisa.TextMatrix(0, 3) = [Ô]V.Unitário[Ô]
grdpesquisa.TextMatrix(0, 4) = [Ô]Qtde[Ô]
grdpesquisa.TextMatrix(0, 5) = [Ô]Sub Total[Ô]

Limpaos


Criterio = Chr$(39) & txtcodos & Chr(39)

SQL = [Ô]SELECT CodCliente, Cod_Produto, Produto, Format (Valor_Venda, [ô]R$ ##,#0.00[ô]), Qtde, Format(valor_Total,[ô]R$ ##,#0.00[ô])FROM Os_Produto WHERE Os_Produto.Numero_Os Like [Ô] & Criterio & [Ô] ORDER BY Numero_Os[Ô]

On Error Resume Next

With RS

.Open SQL, cnSQL, adOpenForwardOnly, adLockReadOnly

If .EOF Then


Limpaos
grdpesquisa.TextMatrix(1, 1) = [Ô][Ô]
grdpesquisa.TextMatrix(1, 2) = [Ô][Ô]
grdpesquisa.TextMatrix(1, 3) = [Ô][Ô]
grdpesquisa.TextMatrix(1, 4) = [Ô][Ô]
grdpesquisa.TextMatrix(1, 5) = [Ô][Ô]
grdpesquisa.TextMatrix(1, 6) = [Ô][Ô]

Else

Limpaos

Do Until .EOF

grdpesquisa.AddItem RS(0) & vbTab & RS(1) & vbTab & RS(2) & vbTab & RS(3) & vbTab & RS(4) & vbTab & RS(5)

.MoveNext
Loop

grdpesquisa.RemoveItem 1

End If

.Close

End With

End Sub[/txt-color]

--- Essa rotina eu uso no evento dblclick de outro msflexgrid que funciona bem.

só que quando vou adicionar os produtos eu uso outro form com essa rotina

[txt-color=#e80000]Private Sub cmdSalvar_Click()

GravaDados
somarflexgrid
cmdSalvar.Enabled = False
txtCodCliente.Text = [Ô][Ô]
txtdescricao.Text = [Ô][Ô]
txtvalordevenda.Text = [Ô][Ô]
txtqtde.Text = [Ô][Ô]
txttotal.Text = [Ô][Ô]

End Sub

Private Sub GravaDados()

Dim adCmdPaciente As New ADODB.Command
Dim CodCliente As Long

CodCliente = Val(txtcod.Text)

With adCmdPaciente

Set .ActiveConnection = cnSQL
.CommandType = adCmdText
.Prepared = True

If CodCliente > 0 Then

.CommandText = [Ô]UPDATE Os_Produto set Cod_Produto = ?, Numero_Os = ?, Produto = ?, Valor_Venda = ?, Qtde = ?, Valor_Total = ? Where CodCliente = [Ô] & CodCliente

.Parameters.Append .CreateParameter([Ô]Cod_Produto[Ô], adVarChar, adParamInput, 30)
.Parameters.Append .CreateParameter([Ô]Numero_Os[Ô], adVarChar, adParamInput, 30)
.Parameters.Append .CreateParameter([Ô]Produto[Ô], adVarChar, adParamInput, 80)
.Parameters.Append .CreateParameter([Ô]Valor_Venda[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Qtde[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Valor_Total[Ô], adVarChar, adParamInput, 10)

.Parameters([Ô]Cod_Produto[Ô]) = txtCodCliente.Text
.Parameters([Ô]Numero_Os[Ô]) = frmordemdeservico.txtcodos.Text
.Parameters([Ô]Produto[Ô]) = txtdescricao.Text
.Parameters([Ô]Valor_Venda[Ô]) = txtvalordevenda.Text
.Parameters([Ô]Qtde[Ô]) = txtqtde.Text
.Parameters([Ô]Valor_Total[Ô]) = txttotal.Text
.Execute

If Err.Number <> 0 Then
MostraErro
End If

Else

.CommandText = [Ô]INSERT INTO Os_Produto (Cod_Produto, Numero_Os, Produto, Valor_Venda, Qtde, Valor_Total) Values (?, ?, ?, ?, ?, ?)[Ô]


.Parameters.Append .CreateParameter([Ô]Cod_Produto[Ô], adVarChar, adParamInput, 30)
.Parameters.Append .CreateParameter([Ô]Numero_Os[Ô], adVarChar, adParamInput, 30)
.Parameters.Append .CreateParameter([Ô]Produto[Ô], adVarChar, adParamInput, 80)
.Parameters.Append .CreateParameter([Ô]Valor_Venda[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Qtde[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Valor_Total[Ô], adVarChar, adParamInput, 10)

.Parameters([Ô]Cod_Produto[Ô]) = txtCodCliente.Text
.Parameters([Ô]Numero_Os[Ô]) = frmordemdeservico.txtcodos.Text
.Parameters([Ô]Produto[Ô]) = txtdescricao.Text
.Parameters([Ô]Valor_Venda[Ô]) = txtvalordevenda.Text
.Parameters([Ô]Qtde[Ô]) = txtqtde.Text
.Parameters([Ô]Valor_Total[Ô]) = txttotal.Text

.Execute

If Err.Number <> 0 Then
MostraErro
End If
End If



End With
txtCodCliente.Text = [Ô][Ô]
txtdescricao.Text = [Ô][Ô]
txtvalordevenda.Text = [Ô][Ô]
txtqtde.Text = [Ô][Ô]
txttotal.Text = [Ô][Ô]
End Sub[/txt-color]

--- como vocês puderam ver eu gravo direto os dados no bd e depois chamos eles de volta para o msflexgrid, mais isso não acontece o comando msflexgrid.refresh não funciona, e se eu tentar carregar ele desse jeito de novo (função mostradadosos) ele repete um monte de registros.

ou alguem sabe um jeito de passar os dados do textbox para o msflexgrid? se souberem eu posso criar uma rotina pra ele grava depois.

socorro o que eu faço????
ASHKATCHUP 01/02/2010 14:05:59
#333327
Resposta escolhida
Vc está limpando o grid antes de carregá-lo?
RAPHAELLBA 01/02/2010 14:12:08
#333329
Olá ASHKATCHUP

[ô]grdpesquisa é o nome do meu msflexgrid

grdpesquisa.clear

ele apagou deixou as primeiras células em branco e continuou duplicando os registros
RAPHAELLBA 01/02/2010 14:28:24
#333332
Olá ASHKATCHUP

Consegui resolver, vou postar aqui por que se alguem tiver a mesma duvida pode usar

no form que eu adiciono os produtos, no botão incluir eu fiz isso

frmordemdeservico.grdpesquisa.Clear
frmordemdeservico.grdpesquisa.AddItem [Ô][Ô]
frmordemdeservico.grdpesquisa.Rows = 1
frmordemdeservico.MontarListaos

Valeu
Tópico encerrado , respostas não são mais permitidas