Ir para conteúdo

POWERED BY:

Arquivado

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

nossila

Enche Lista

Recommended Posts

Pessoal,

Criei essa tabela postgres 8.1 chamada "mov_compra" .Veja o comando:

CREATE TABLE mov_compra

(

n_item int4 NOT NULL DEFAULT nextval('mov_compra_n_item_seq'::regclass),

n_empenho char(14),

cod_produto int4,

elemento_despesa varchar(8),

item varchar(2),

valor_unitario numeric(10,2),

quantidade numeric(10,2),

valor_total numeric(10,2),

CONSTRAINT mov_compra_pkey PRIMARY KEY (n_item),

CONSTRAINT mov_compra_cod_produto_fkey FOREIGN KEY (cod_produto)

REFERENCES produto (cod_produto) MATCH SIMPLE

ON UPDATE NO ACTION ON DELETE NO ACTION,

CONSTRAINT mov_compra_n_empenho_fkey FOREIGN KEY (n_empenho)

REFERENCES empenho (n_empenho) MATCH SIMPLE

ON UPDATE NO ACTION ON DELETE NO ACTION

)

 

E, em seguida Habilitei no Vb06 em component "Microsoft Windows Common Controls 6.0" - ListView para criar o comando abaixo:

 

Private Sub enche_lista()

 

On Error GoTo enche_lista ' Erro ao encher a lista

 

Set lst = lvprod.FindItem(txtcodigo.Text, , , lvwPartial)

If lst Is Nothing Then

Set lst = lvprod.ListItems.Add(, , txtcodigo.Text, , 0)

With lst

.SubItems(1) = getquantity

.SubItems(2) = txtnome.Text

.SubItems(3) = txtunidade.Text

.SubItems(4) = elemento_despesa.Text

.SubItems(5) = item.Text

.SubItems(6) = Str(txtpreco.Text)

.SubItems(7) = Str(txtquantidade.Text)

.SubItems(8) = Format((txtquantidade.Text * txtpreco.Text), "###,##0.00")

txttotal.Text = (Format((ComputeAmount), "###,##0.00"))

end With

Else

With lst

txttotal.Text = (Format((ComputeAmount), "###,##0.00"))

end wit

End If

enche_lista_exit:

Exit Sub

enche_lista:

MsgBox Err.Description, vbInformation, "Erro ao [enche_lista]"

End Sub

 

Mas quando chamo a função "enche_lista" indica um erro na linha em negrito:

Set lst = lvprod.FindItem(txtcodigo.Text, , , lvwPartial)

If lst Is Nothing Then

Set lst = lvprod.ListItems.Add(, , txtcodigo.Text, , 0)

ERRO " Run-Time erro '13':

Type mismatch

Alguem pode me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse erro ocorre quando o parâmetro informado não é do tipo pedido pela função. Nesse caso o txtcodigo.text não pode conter o valor Null/Nothing.Ps.: eu testei aqui e deu certo, o problema realmente deve ser o valor que você está passando na textbox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Luiz, não entendiVeja o código completo:1 - Busca produtoPrivate Sub busca_produto_Change()On Error GoTo busca_produto ' Erro ao buscar o registroIf Orders.State = 1 Then Set Orders = northingsql = "SELECT * from produto where cod_produto like '" & Trim(busca_produto) & "%'"Orders.Open sql, gconexao, adOpenKeyset, adLockOptimistic With Orders If Not .EOF Then txtcodigo.Text = .Fields(0)txtnome.Text = .Fields(3)txtunidade.Text = .Fields(4) ElseMsgBox "Produto não localizado", vbInformation, "Não Localizado"Limpa_TextoEnd IfEnd Withbusca_produto_exit:Exit Subbusca_produto:MsgBox Err.Description, vbInformation, "Erro ao [busca_produto]"End Sub2- Chama a função enche_listaPrivate Sub txtquantidade_LostFocus()Dim adoOrders As New ADODB.RecordsetIf txtquantidade.Text = Empty ThenMsgBox "Digite a quantidade do produto ?", vbInformation, "Camapo Obrigatório"txtquantidade.SetFocusExit SubElse ans = MsgBox("Confirma este pedido?", vbQuestion + vbYesNo, "Pedido?") If ans = vbYes Then txttotal.Text = Format(txtpreco.Text * txtquantidade.Text, "#,###,##0.00;")Call enche_listaCall Limpa_TextoElseExit SubEnd IfEnd If busca_produto.SetFocusEnd Sub3- A função enche_listaPrivate Sub enche_lista()On Error GoTo enche_lista ' Erro ao encher a listaSet lst = lvprod.FindItem(txtcodigo.Text, , , lvwPartial)If lst Is northing ThenSet lst = lvprod.ListItems.Add(, , txtcodigo.Text, , 0)With lst.SubItems(1) = getquantity.SubItems(2) = txtnome.Text.SubItems(3) = txtunidade.Text.SubItems(4) = elemento_despesa.Text.SubItems(5) = item.Text.SubItems(6) = Str(txtpreco.Text).SubItems(7) = Str(txtquantidade.Text).SubItems(8) = Format((txtquantidade.Text * txtpreco.Text), "###,##0.00")txttotal.Text = (Format((ComputeAmount), "###,##0.00")) End WithElse With lst txttotal.Text = (Format((ComputeAmount), "###,##0.00")) End WithEnd Ifenche_lista_exit:Exit Subenche_lista:MsgBox Err.Description, vbInformation, "Erro ao [enche_lista]"End Sub4 - Conexão PostgresqlPrivate Sub conectar_Click()If TxtHost.Text = Empty ThenMsgBox "Informe o local do Banco de Dados.", vbExclamation, "Campo Obrigatório"TxtHost.SetFocusExit SubEnd IfIf TxtNomeUsuario.Text = Empty ThenMsgBox "Informe o Nome do Usuário do Banco de Dados.", vbExclamation, "Campo Obrigatório"TxtNomeUsuario.SetFocusExit SubEnd IfIf TxtPassword.Text = Empty ThenMsgBox "Informe a Senha do Usuário.", vbExclamation, "Campo Obrigatório"TxtPassword.SetFocusExit SubEnd IfOn Error GoTo Trata_erroIf Trim$(cmbBancoDados) = "" ThenMsgBox "Você precisa selecionar um banco de dados.", vbCritical, "Informação Inválida"cmbBancoDados.SetFocusExit SubEnd IfMe.MousePointer = vbHourglassSet gconexao = New ADODB.Connectiongconexao.ConnectionTimeout = 60gconexao.CommandTimeout = 400gconexao.CursorLocation = adUseClientgconexao.Open "PROVIDER=MSDASQL;dsn=PostgreSQL;" & "uid=" & TxtNomeUsuario & ";pwd=" & TxtPassword & ";database=" & cmbBancoDados & ";server=" & TxtHost & ";option=" & (1 + 2 + 8 + 32 + 2048 + 16384)Me.MousePointer = vbNormalIf gconexao.State = 1 ThenSaveSetting App.Title, "Settings", "txtHost", TxtHostSaveSetting App.Title, "Settings", "txtNomeUsuario", TxtNomeUsuarioSaveSetting App.Title, "Settings", "cmbBancoDados", cmbBancoDadosMDIForm_Principal.Showform_imagem.Showform_login.Visible = FalseElseMsgBox "Não foi possível establer a conexão. Verifque as configurações e tente novamente.", vbCritical, "erro durate a conexão..."End IfExit SubTrata_erro:MsgBox Err.Number & " " & Err.Description, vbInformation, "Erro durante a conexão..."TxtPassword.Text = ""TxtNomeUsuario.SetFocusEnd SubLuiz, não entendi a sua resposta, pois o campo txtcodigo é serial. Portanto nunca pode ser nulo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim é serial?O erro ocorre assim:Tem uma função que possui um paramêtro que é do tipo control (controle) e você passa para ela um parâmentro do tipo string (texto).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim é serial?O erro ocorre assim:Tem uma função que possui um paramêtro que é do tipo control (controle) e você passa para ela um parâmentro do tipo string (texto).

Luiz,Serial em postgres é igual auto_increment em mysql ou autonumeração em access. Então como faço para o vb06 reconhecer o numero em uma string(texto).

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.