Ir para conteúdo



Consulta emBanco de Dados Visual Studio 2008


  • Por favor, faça o login para responder
4 respostas neste tópico

#1 FREITAS

FREITAS
  • Membros
  • 38 posts

Postado 01 November 2011 - 08:08 AM

Bom dia, pessoal,

Preciso da judade vocês mais uma vez.

O meu projeto está caminhando, agora preciso criar o seguinte:

Preciso fazer consulta no BD por Nome do produto e por Código do produto, poderiam postar um código de pesquisa por favor?

Visual Studio 2008
Banco de Dados Access
Nome da Tabela - tb_Estoque
Um radio group para selecionar entre Nome do Produto e Código produto

Desde já agradeço

FREITAS



#2 FREITAS

FREITAS
  • Membros
  • 38 posts

Postado 12 November 2011 - 12:46 PM

Boa tarde,
Coloquei no meu BD Access uma máscara para o Campo Cod_materias_produtos assim: 000.000.000
(mas tive que colocar como texto) no Acces porque se colocar como número na tabela do BD Access
ele não aceita a máscara. Acontece que quando o DBGrid mosta a coluna cod_materiais_produtos ele
vem sem máscara, mas se eu abro o Access na tabela ele está com máscara. Tem como fazer no DataGridView
aparecer essa coluna com a máscara. Porque quando estava sem máscra a compração que fiz em um código funcionava.
Agora com máscara no BD não funciona mais. O código diz:
SE O CÓDIGO DIGITADO FOR IGUAL AO JÁ CADASTRADO NO BD ACCESS DAR MENSAGEM CÓDIGO JÁ CADASTRADO, FUNCIONAVA SEM MÁSCARA
MAS COM MÁSCARA NÃO FUNCIONA MAIS.

Grato
Jose de Freitas

#3 FREITAS

FREITAS
  • Membros
  • 38 posts

Postado 14 November 2011 - 01:32 AM

Boa noite,

Pessoal ajuda por favor,

até hoje não consegui nehuma resposta pra que desse certo meu programa.

Vou tentar mais uma:

O erro que está dando é o seguinte: fica marcado de AMARELO a linha de código: DR = CMD.ExecuteReader (onde marquei de vermelho negrito no código aqui abaixo postado) e a Mensagem de erro: TIPO DE DADOS INCOMPATÍVEL NA EXPRESSÃO DE CRITÉRIO

Uso o Visual Studio 2008

É no Form de estoque atual onde clico no botão BUSCAR e quero busque no Banco de Dados Access a tela onde está cadastrado o Material referente ao código que digito no txtPesquisa.Text.
Os campos do Form que deverão ser preenchidos na Pesquisa (BUSCA) são:

cod_materiais_produtos
materiais_produtos
unidade
estoque_atual
estoque_mínimo

Onde pode estar errado no código abaixo:


Public Class Estoque_Atual

Dim acodigo(1) As String

Dim acod_materiais_produtos(1) As Integer

Dim amateriais_produtos(1) As String

Dim aunidade(1) As String

Dim aestoque_atual(1) As Integer

Dim aestoque_minimo(1) As Integer

Dim vmodo As String = "X"

Private Sub Estoque_atualLoad(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

carrega_Estoque_atual()

End Sub

Private Sub carrega_Estoque_atual()

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = " SELECT * FROM tb_estoque_atual ORDER BY materiais_produtos"

Dim vleitor As OleDb.OleDbDataReader

vleitor = selcom.ExecuteReader()

Dim c As Integer = 0

dgvestoque_atual.Rows.Clear()

Do While vleitor.Read

c = c + 1

ReDim Preserve acodigo©

ReDim Preserve acod_materiais_produtos©

ReDim Preserve amateriais_produtos©

ReDim Preserve aunidade©

ReDim Preserve aestoque_atual©

ReDim Preserve aestoque_minimo©

acodigo© = vleitor("codigo")

acod_materiais_produtos© = vleitor("cod_materiais_produtos")

amateriais_produtos© = vleitor("materiais_produtos")

aunidade© = vleitor("unidade")

aestoque_atual© = vleitor("estoque_atual")

aestoque_minimo© = vleitor("estoque_minimo")

If IsDBNull(vleitor("estoque_minimo")) Then

aestoque_minimo© = 0

Else

aestoque_minimo© = vleitor("estoque_minimo")

End If

If IsDBNull(vleitor("estoque_atual")) Then

aestoque_atual© = 0

Else

aestoque_atual© = vleitor("estoque_atual")

End If

dgvestoque_atual.Rows.Add(acodigo©, acod_materiais_produtos©, amateriais_produtos©, aunidade©, aestoque_atual©, aestoque_minimo©)

Loop

conect.Close()

End Sub

Private Sub carrega_campos()

Dim ind As Integer = dgvestoque_atual.CurrentRow.Index + 1

txtCodigo.Text = acodigo(ind)

txtcod_materiais_produtos.Text = acod_materiais_produtos(ind)

txtMateriais_produtos.Text = amateriais_produtos(ind)

txtUnidade.Text = aunidade(ind)

txtEstoque_atual.Text = aestoque_atual(ind)

txtEstoque_minimo.Text = aestoque_minimo(ind)

End Sub

Private Sub DgvEstoque_atualSelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgvestoque_atual.SelectionChanged

carrega_campos()

End Sub

Private Sub btnAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAlterar.Click

vmodo = "A"

hab_campos()

End Sub

Private Sub hab_campos()

btnIncluir.Enabled = False

btnAlterar.Enabled = False

btnExcluir.Enabled = False

btnCancelar.Enabled = True

btnConfirmar.Enabled = True

txtcod_materiais_produtos.Enabled = True

txtMateriais_produtos.Enabled = True

txtUnidade.Enabled = True

txtEstoque_atual.Enabled = False

txtEstoque_minimo.Enabled = True

End Sub

Private Sub desab_campos()

btnIncluir.Enabled = True

btnAlterar.Enabled = True

btnExcluir.Enabled = True

btnCancelar.Enabled = False

btnConfirmar.Enabled = False

txtcod_materiais_produtos.Enabled = False

txtMateriais_produtos.Enabled = False

txtUnidade.Enabled = False

txtEstoque_atual.Enabled = False

txtEstoque_minimo.Enabled = False


End Sub

Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click

desab_campos()

carrega_campos()

End Sub

Private Sub btnConfirmar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConfirmar.Click

If vmodo = "A" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "UPDATE tb_Estoque_atual SET cod_materiais_produtos=" & txtcod_materiais_produtos.Text _

& " , materiais_produtos='" & txtMateriais_produtos.Text & "', unidade='" & txtUnidade.Text _

& "', estoque_minimo='" & txtEstoque_minimo.Text & "' " _

& "WHERE cod_ordem = " & acodigo(dgvestoque_atual.CurrentRow.Index + 1)

selcom.ExecuteNonQuery()

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravao de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

desab_campos()

carrega_Estoque_atual()

End If

If vmodo = "I" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = "INSERT INTO tb_Estoque_atual ( cod_materiais_produtos, materiais_produtos, unidade, estoque_minimo)" & _

"VALUES (" & txtcod_materiais_produtos.Text & ", '" & (txtMateriais_produtos.Text & Space(120)).Substring(0, 120) & ", " & txtUnidade.Text & " ','" & txtEstoque_minimo.Text & " )"



If selcom.ExecuteNonQuery() Then

MsgBox("tem includo com sucesso")

Else

MsgBox("Erro tem no includo")

End If

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravao de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

desab_campos()

carrega_Estoque_atual()

End If

If vmodo = "E" Then

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

Try

conect.Open()

Dim selcom As New OleDb.OleDbCommand

selcom.Connection = conect

selcom.CommandText = " DELETE FROM tb_Estoque_atual WHERE cod_ordem = " & acodigo(dgvestoque_atual.CurrentRow.Index + 1)

If selcom.ExecuteNonQuery() Then

MsgBox("tem excludo com sucesso")

Else

MsgBox("Erro tem no excludo")

End If

conect.Close()

Catch ex As Exception

MessageBox.Show("Erro de gravao de dados" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Try

desab_campos()

carrega_Estoque_atual()

End If

End Sub

Private Sub btnIncluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluir.Click

hab_campos()

vmodo = "I"

txtcod_materiais_produtos.Text = ""

txtMateriais_produtos.Text = ""

txtUnidade.Text = ""

txtEstoque_atual.Text = ""

txtEstoque_minimo.Text = ""

txtcod_materiais_produtos.Focus()

End Sub

Private Sub txtMateriais_produtos_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMateriais_produtos.TextChanged

If txtMateriais_produtos.Text.Length > 120 Then

MessageBox.Show("Digite no mximo 120 caracteres", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End If

End Sub

Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click

MsgBox("Para excluir o Usurio, clique em confirmar")

hab_campos()

vmodo = "E"

End Sub

Sub buscar_cod_materiais_produtos()

Dim cs As String = My.Settings.EstoqueConnectionString

Dim conect As New OleDb.OleDbConnection

conect.ConnectionString = cs

conect.Open()

Dim CMD As New OleDb.OleDbCommand("select * from tb_estoque_atual where codigo = '" & txtPesquisa.Text & "'", conect)

Dim DR As OleDb.OleDbDataReader

DR = CMD.ExecuteReader

If DR.Read Then

txtcod_materiais_produtos.Text = DR(2)

txtMateriais_produtos.Text = DR(3)

txtUnidade.Text = DR(4)

txtEstoque_atual.Text = DR(5)

txtEstoque_minimo.Text = DR(6)

Else

MsgBox("ERRO")

End If

conect.Close()

End Sub

Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click

buscar_cod_materiais_produtos()

End Sub

End Class



Obrigadão

Freitas

#4 thyago_trajano

thyago_trajano
  • Membros
  • 22 posts

Postado 15 November 2011 - 02:45 AM

Você está fazendo uma consulta procurando por uma string aonde, provavelmente, no Banco de Dados o campo é numérico...


na linha

Dim CMD As New OleDb.OleDbCommand("select * from tb_estoque_atual where codigo = '" & txtPesquisa.Text & "'", conect)

o campo codigo no banco de dados é que tipo? se for numérico você terá que converter o txtPesquisa.Text com um CInt(txtPesquisa.Text) - é importante garantir que o campo será mesmo um número...

depois disso feito o código ficaria

Dim CMD As New OleDb.OleDbCommand("select * from tb_estoque_atual where codigo = " & txtPesquisa.Text & "", conect)

perceba que removi as aspas...

com CERTEZA funcionará
[]'s

Thyago Trajano

"se você viver todos os dias como se fosse o último, provavelmente um dia você acertará..."

#5 FREITAS

FREITAS
  • Membros
  • 38 posts

Postado 15 November 2011 - 09:59 AM

Thyago, valeu obrigado pela força.

Problema resolvido

E já que você se prontificou nessa ajuda e resolveu, poderia me ajudar no outro tópico que acabo de postar?
É sobre uma busca por nome e código.
O post tem o título de Pesquisa por nome do Produto com %
Se puder me ajudar, desde já meu muito obrigado.

Um abraço

Freitas




1 usuário(s) está(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)