LER TEXT BOX E ESCREVER NO SQL
Boa Tarde
Pessoal, estou criando uma aplicação que faz a leitura de uma porta COM. Nessa porta com está conectada uma leitora de cartão de acesso. Ao aproximar um cartão da leitora 2 linhas são escritas na textbox. Sempre que um cartão é apresentado à uma leitora, são acrescidos na texbox 2 linhas, uma linha indicando que o acesso foi permitido ao usuário e outra linha indicando que o acesso a porta foi permitido.
2012/07/25 15:13 System Area Access granted on door User Code 4
2012/07/25 15:13 System Area Access granted on door Door 2
Já criei a conexão com a base de dados que contem 5 colunas, eu fiz alguns testes de conexão, com um botão para inserir os dados, apenas para testar a conexão, que está OK. No teste que eu fiz, ao clicar no botão todas as informações que existem na texbox é inserida no banco de dados, eu gostaria de colocar no evento TEXT CHANGE, mas apenas as ultimas 2 linhas deveriam ser inseridas, e não todas presentes na TEXBOX.
Data Hora Descricao Usuario Porta
2012/07/25 15:13 Access granted on door User Code 4 Door 2
Se possÃvel, a partir das 2 linhas apresentadas acima, eu gostaria de escrever os dados das 2 linhas conforme as 5 colunas acima, sempre que um cartão for apresentado a leitoras, 2 linhas serão acrescidas na leitura da COM, o código precisa ler as 2 linhas e escrever os dados conforme apresentado acima em 5 colunas. Mandei um print da aplicação.
Desde já agradeço a colaboração. Um forte abraço.
Pessoal, estou criando uma aplicação que faz a leitura de uma porta COM. Nessa porta com está conectada uma leitora de cartão de acesso. Ao aproximar um cartão da leitora 2 linhas são escritas na textbox. Sempre que um cartão é apresentado à uma leitora, são acrescidos na texbox 2 linhas, uma linha indicando que o acesso foi permitido ao usuário e outra linha indicando que o acesso a porta foi permitido.
2012/07/25 15:13 System Area Access granted on door User Code 4
2012/07/25 15:13 System Area Access granted on door Door 2
Já criei a conexão com a base de dados que contem 5 colunas, eu fiz alguns testes de conexão, com um botão para inserir os dados, apenas para testar a conexão, que está OK. No teste que eu fiz, ao clicar no botão todas as informações que existem na texbox é inserida no banco de dados, eu gostaria de colocar no evento TEXT CHANGE, mas apenas as ultimas 2 linhas deveriam ser inseridas, e não todas presentes na TEXBOX.
Data Hora Descricao Usuario Porta
2012/07/25 15:13 Access granted on door User Code 4 Door 2
Se possÃvel, a partir das 2 linhas apresentadas acima, eu gostaria de escrever os dados das 2 linhas conforme as 5 colunas acima, sempre que um cartão for apresentado a leitoras, 2 linhas serão acrescidas na leitura da COM, o código precisa ler as 2 linhas e escrever os dados conforme apresentado acima em 5 colunas. Mandei um print da aplicação.
Desde já agradeço a colaboração. Um forte abraço.
Abaixo o código que fiz os testes de insersão no banco de dados, mas inclui tudo que estiver na TEXTBOX em apenas uma coluna. Coloque no evento Click apenas para testar.
Private Sub btnSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSQL.Click
[ô]CRIA CONEXÃO COM O BANCO DE DADOS
Dim Sqlconn As New SqlConnection
Sqlconn.ConnectionString = [Ô]Server = serverbd; Database = GSNDATA; integrated security = true[Ô]
Try
Sqlconn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Falha na conexão SQL[Ô])
End Try
If Sqlconn.State = 1 Then
Me.Text = [Ô]Sistema Conectado ao DB GSNDATA[Ô]
Me.BackColor = Color.CadetBlue()
End If
[ô]DECLARANDO STRING PARA INSERIR OS DADOS
Dim sql As String = [Ô]INSERT INTO _Ponto_GSN(Data) VALUES (@data)[Ô]
Dim cmd As New SqlCommand(sql, sqlconn)
cmd.Parameters.Add(New SqlParameter([Ô]@data[Ô], rtbReceived.Text))
Try
cmd.ExecuteNonQuery() [ô]Executa o Insert
MessageBox.Show([Ô]Nome inserido como sucesso ![Ô]) [ô] Inseriu como sucesso !
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]erro[Ô])
[ô]Se de algum erro será exibida uma mensagem
Finally
Sqlconn.Close() [ô]Fechando a Conexão com o banco de dados
End Try
End Sub
Private Sub btnSQL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSQL.Click
[ô]CRIA CONEXÃO COM O BANCO DE DADOS
Dim Sqlconn As New SqlConnection
Sqlconn.ConnectionString = [Ô]Server = serverbd; Database = GSNDATA; integrated security = true[Ô]
Try
Sqlconn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]Falha na conexão SQL[Ô])
End Try
If Sqlconn.State = 1 Then
Me.Text = [Ô]Sistema Conectado ao DB GSNDATA[Ô]
Me.BackColor = Color.CadetBlue()
End If
[ô]DECLARANDO STRING PARA INSERIR OS DADOS
Dim sql As String = [Ô]INSERT INTO _Ponto_GSN(Data) VALUES (@data)[Ô]
Dim cmd As New SqlCommand(sql, sqlconn)
cmd.Parameters.Add(New SqlParameter([Ô]@data[Ô], rtbReceived.Text))
Try
cmd.ExecuteNonQuery() [ô]Executa o Insert
MessageBox.Show([Ô]Nome inserido como sucesso ![Ô]) [ô] Inseriu como sucesso !
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]erro[Ô])
[ô]Se de algum erro será exibida uma mensagem
Finally
Sqlconn.Close() [ô]Fechando a Conexão com o banco de dados
End Try
End Sub
Quando os dados vêm da leitora, os campos estão separados por <tab>?
EU não saberia lhe informar se é um TAB ou um simples espaço. A leitora na verdade é parte integrante de um sistema de controle de acesso, eu criei uma placa eletrônica, que conectado na controladora de acesso me libera na serial os dados que vão para o software de controle de acesso, os dados simplesmente vem pela serial, eu não conseguiria confirmar
De qualquer forma, se você tiver uma solução para o caso de estarem separados por TAB, me mande que eu testo. Muito obrigado.
De qualquer forma, se você tiver uma solução para o caso de estarem separados por TAB, me mande que eu testo. Muito obrigado.
Bem, pelo que entendi, [Ô]2012/07/25 15:13 System Area Access granted on door User Code 4 [Ô] é o que a placa envia para a aplicação, correto?
Pensei em fazer um SPLIT por espaço, mas não sei como inserir esses resultados em um GRID.
O Split, era justamente o que tinha em mente, mas ele funciona melhor quando existe um caracter que separa os [Ô]campos[Ô], no caso, o TAB... mas pelo que estou vendo, o que você recebe, é texto com espaçamento fixo então o melhor é usar substrings.
E se o espaçamento for fixo em um espaço? Estou pesquisando na net um exemplo de split com espaço. Olhe abaixo o código que eu estava pesquisando. De qualquer forma eu sou amador, e sinceramente não entendo muito de string o que vc me disser ser a melhor solução acatarei de imediato.
Private Sub btnAplicarSplit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAplicarSplit.Click
[ô] Vamos separar esta string
Dim str As String = txtStringEntrada.Text
[ô] Separa string baseado em spaços
Dim palavras As String() = str.Split(New Char() {[Ô] [Ô]c})
[ô] Percorremos as palavras da strings separadas exibindo-as no ListBox
Dim palavra As String
For Each palavra In palavras
lstResultado.Items.Add(palavra)
Next
End Sub
Private Sub btnAplicarSplit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAplicarSplit.Click
[ô] Vamos separar esta string
Dim str As String = txtStringEntrada.Text
[ô] Separa string baseado em spaços
Dim palavras As String() = str.Split(New Char() {[Ô] [Ô]c})
[ô] Percorremos as palavras da strings separadas exibindo-as no ListBox
Dim palavra As String
For Each palavra In palavras
lstResultado.Items.Add(palavra)
Next
End Sub
é ficou meio zuado, pois existe mais de uma espaço em uma das sentenças, e ainda a descrição há palavras que são separadas por espaço. Coloquei os resultados em uma list box para testar.
Não teria problema para mim se eu conseguisse pegar as informações do PRINT e jogar dentro do GRID da seguinte forma:
Data Hora Descricao Usuario Porta
2012/07/25 15:13 Granted 4 2
Não teria problema para mim se eu conseguisse pegar as informações do PRINT e jogar dentro do GRID da seguinte forma:
Data Hora Descricao Usuario Porta
2012/07/25 15:13 Granted 4 2
Uma coisa que você poderia fazer, é verificar todas as respostas da placa, se o número de espaços é o mesmo entre os campos.
Sim no geral a resposta vai ser sempre essa:
2012/07/25 15:13 System Area Access granted on door User Code 4
2012/07/25 15:13 System Area Access granted on door Door 2
Será que da pra fazer o Split pelo Length, a unida coisa que mudará ó o final, tipo Door 5 ou User Code 15
2012/07/25 15:13 System Area Access granted on door User Code 4
2012/07/25 15:13 System Area Access granted on door Door 2
Será que da pra fazer o Split pelo Length, a unida coisa que mudará ó o final, tipo Door 5 ou User Code 15
Tópico encerrado , respostas não são mais permitidas