Jump to content
SLIFE

Verificar Registo

Recommended Posts

SLIFE

Boas Pessoal

Estava aqui a desenvolver uma app, quando me deparei com um problema.

É o seguinte, eu tenho um form no qual tenho diversos textbox que ao precionar vai gravar os dados na BD.

E agora lembrei-me do seguinte, como tenho o campo numero de serie, achei que deveria verificar antes de deixar gravar na bd.

Isto é o utilizador escrevia o numero de serie no respectivo textbox para esse efeito, mas ao perder o focus dessa textbox, ele verificava se existia ja bd algum registo, se existisse preenchia automaticamente a textbox a baixo que é a descrição.

Tenho este codigo:

Try
            Dim conexao As New OleDbConnection
            conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\BD.mdb"
            Dim Comando As New OleDbCommand

            Comando.Connection = conexao

            Comando.CommandText = "SELECT * FROM TBMaquinas WHERE NumSerieMaquina = '" & TxtNumeroSerie.Text & "'"
            conexao.Open()
            Dim resultadoConsulta As Integer = Comando.ExecuteNonQuery()
            conexao.Close()

         
        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        End Try

Alguem me pode dar uma dica sobre como fazer isso?

Cpts

SJC


Sandro Coelho

Share this post


Link to post
Share on other sites
Andrepereira9

boas

Para detectar quando o Utilizador sai do textbox, podes utilizar o evento .Leave

Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
      MsgBox("Saiu do TextBox")
End Sub

Depois para procurares na BD, utilizas um Background Worker para não correres o risco de a App ficar bloqueada, durante a pesquisa

A pesquisa já deves de saber como se faz, ou não ? ;)


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
SLIFE

boas

Para detectar quando o Utilizador sai do textbox, podes utilizar o evento .Leave

Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
      MsgBox("Saiu do TextBox")
End Sub

Depois para procurares na BD, utilizas um Background Worker para não correres o risco de a App ficar bloqueada, durante a pesquisa

A pesquisa já deves de saber como se faz, ou não ? ;)

A pesquisa esta feita como coloquei no post anterior!

Apenas nao sei como atribuir o resultado da pesquisa as respectivas textboxs.


Sandro Coelho

Share this post


Link to post
Share on other sites
bioshock

Ou utilizas a função Read() para ler a informação ou um Dataset que faz a mesma coisa.

Edit: Procura por ExecuteReader() para a função Read() ou, para os Datasets, vê este artigo.

Para apanhares o dado em concreto, em vez de:

Me.DataGridView1.DataSource = MyData.Tables("Clientes") 

Terás:

Dim info As String
info = MyData.Tables("Clientes").Rows(0).Item(0).ToString()

Edit (2): A função Read(), é o que o @Andrepereira9 colocou. ;)

Share this post


Link to post
Share on other sites
Andrepereira9

boas

Eu costumo fazer assim.

Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrador\Ambiente de Trabalho\BD.accdb;Persist Security Info=False;"
Dim Sql As String = "SELECT * FROM TBMaquinas WHERE NumSerieMaquina = @NSerie;"

Dim conecção As New OleDbConnection(ligação)

Dim comando As New OleDbCommand(Sql, conecção)

comando.Parameters.Add("@NSerie", OleDbType.VarChar).Value = TextBox1.Text.ToString

conecção.Open()

Dim leitor As OleDbDataReader = comando.ExecuteReader

If leitor.HasRows Then

   While leitor.Read
     TextBox2.Text = leitor.Item("Descrição").ToString ' Onde está descrição, é só colocar o nome do campo da Base de Dados
   End While

Else
   MsgBox("O Numero de Serie Introduzido ainda não está registado!!")

End If

End Sub


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
SLIFE

boas

Eu costumo fazer assim.

Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
Dim ligação As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Administrador\Ambiente de Trabalho\BD.accdb;Persist Security Info=False;"
Dim Sql As String = "SELECT * FROM TBMaquinas WHERE NumSerieMaquina = @NSerie;"

Dim conecção As New OleDbConnection(ligação)

Dim comando As New OleDbCommand(Sql, conecção)

comando.Parameters.Add("@NSerie", OleDbType.VarChar).Value = TextBox1.Text.ToString

conecção.Open()

Dim leitor As OleDbDataReader = comando.ExecuteReader

If leitor.HasRows Then

   While leitor.Read
     TextBox2.Text = leitor.Item("Descrição").ToString ' Onde está descrição, é só colocar o nome do campo da Base de Dados
   End While

Else
   MsgBox("O Numero de Serie Introduzido ainda não está registado!!")

End If

End Sub

Boas

Vou experimentar aplicar o teu codigo ao meu, a ver se funciona.

Mas desde já o meu obrigado pela ajuda prestada.

Depois digo se funcionou ou nao!

Cpts

SJC


Sandro Coelho

Share this post


Link to post
Share on other sites
SLIFE

Boas

Ontem a noite tive oportunidade de testar o exemplo que me deram e realmente funciona.

Desde já o meu muito obrigado.

O unico problema, e que caso o utilizador queira sair, assim que o txtbox faz o leave, dispara sempre a mensagem.

Mas vou tentar dar a volta a questao.

Obrigado pela ajuda (Andrepereira9 e bioshock)

Cpts

SJC


Sandro Coelho

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.