CRONOMETRO EM VB NO BANCO DE DADOS
Fala aê galerinha!
Eu tô desenvolvendo um programa no Visual Studio 2010, que vai marcar o tempo no cronômetro no VB, mas preciso fazer com que, quando um botão seja pressionado, o sistema envie o tempo do cronômetro até o access, onde se encontra o banco de dados. Pois bem, segue o código que usei pra fazer o cronômetro:
Dim startTime As DateTime
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Dim span As TimeSpan = DateTime.Now.Subtract(startTime)
LblCronometro.Text = span.Minutes.ToString & [Ô]:[Ô] & _
span.Seconds.ToString & [Ô].[Ô] & span.Milliseconds
End Sub
Private Sub LblCronometro_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles LblCronometro.Click
If (Timer1.Enabled) Then
Me.Text = [Ô]Clique para resetar[Ô]
Timer1.Stop()
Else
startTime = DateTime.Now()
Me.Text = [Ô]Clique para parar[Ô]
Timer1.Start()
End If
O cronômetro se encontra em um LABEL, e começa a contar, seguindo a estrutura: 00:00.0
O código que estou tentando utilizar pra fazer a consulta do login no banco de dados, e enviar o tempo final para o mesmo é o seguinte:
Dim vtrsa As OleDb.OleDbConnection
Dim dados As OleDb.OleDbCommand
Dim lista As OleDb.OleDbDataReader
Dim sql As String
vtrsa = New OleDb.OleDbConnection([Ô]Provider=Microsoft.ACE.OleDB.12.0; Data Source=vtrsa.accdb[Ô])
vtrsa.Open()
dados = New OleDb.OleDbCommand([Ô]select * from dados where login = [ô][Ô] & TxtLogin.Text & [Ô][ô][Ô], vtrsa)
lista = dados.ExecuteReader()
If lista.Read() Then
sql = [Ô]insert into dados (tempo) values [ô][Ô] & LblCronometro.Text & [Ô][ô][Ô]
MsgBox([Ô]Tempo cadastrado[Ô])
Else
MsgBox([Ô]Usuário não encontrado[Ô], , [Ô]Atenção[Ô])
End If
lista.Close()
vtrsa.Close()
Não dá erro nenhum, e a mensagem é exibida com sucesso, caso o login esteja correto, ou, se estiver certo, a caixa de mensagem avisa que o tempo foi adicionado no banco de dados. Entretanto, quando abro o arquivo, ele não exibe absolutamente nada na linha TEMPO.
Alguém sabe onde estou errando? Já usei hora/data, numero e até texto pra definir o tipo de dados no access, porém não obtive sucesso.
Aguardo respostas!
Abraços.
Eu tô desenvolvendo um programa no Visual Studio 2010, que vai marcar o tempo no cronômetro no VB, mas preciso fazer com que, quando um botão seja pressionado, o sistema envie o tempo do cronômetro até o access, onde se encontra o banco de dados. Pois bem, segue o código que usei pra fazer o cronômetro:
Dim startTime As DateTime
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Dim span As TimeSpan = DateTime.Now.Subtract(startTime)
LblCronometro.Text = span.Minutes.ToString & [Ô]:[Ô] & _
span.Seconds.ToString & [Ô].[Ô] & span.Milliseconds
End Sub
Private Sub LblCronometro_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles LblCronometro.Click
If (Timer1.Enabled) Then
Me.Text = [Ô]Clique para resetar[Ô]
Timer1.Stop()
Else
startTime = DateTime.Now()
Me.Text = [Ô]Clique para parar[Ô]
Timer1.Start()
End If
O cronômetro se encontra em um LABEL, e começa a contar, seguindo a estrutura: 00:00.0
O código que estou tentando utilizar pra fazer a consulta do login no banco de dados, e enviar o tempo final para o mesmo é o seguinte:
Dim vtrsa As OleDb.OleDbConnection
Dim dados As OleDb.OleDbCommand
Dim lista As OleDb.OleDbDataReader
Dim sql As String
vtrsa = New OleDb.OleDbConnection([Ô]Provider=Microsoft.ACE.OleDB.12.0; Data Source=vtrsa.accdb[Ô])
vtrsa.Open()
dados = New OleDb.OleDbCommand([Ô]select * from dados where login = [ô][Ô] & TxtLogin.Text & [Ô][ô][Ô], vtrsa)
lista = dados.ExecuteReader()
If lista.Read() Then
sql = [Ô]insert into dados (tempo) values [ô][Ô] & LblCronometro.Text & [Ô][ô][Ô]
MsgBox([Ô]Tempo cadastrado[Ô])
Else
MsgBox([Ô]Usuário não encontrado[Ô], , [Ô]Atenção[Ô])
End If
lista.Close()
vtrsa.Close()
Não dá erro nenhum, e a mensagem é exibida com sucesso, caso o login esteja correto, ou, se estiver certo, a caixa de mensagem avisa que o tempo foi adicionado no banco de dados. Entretanto, quando abro o arquivo, ele não exibe absolutamente nada na linha TEMPO.
Alguém sabe onde estou errando? Já usei hora/data, numero e até texto pra definir o tipo de dados no access, porém não obtive sucesso.
Aguardo respostas!
Abraços.
If lista.Read() Then
sql = [Ô]insert into dados (tempo) values [ô][Ô] & LblCronometro.Text & [Ô][ô][Ô]
[txt-color=#e80000] dados = New OleDb.OleDbCommand(sql, vtrsa)
dados.ExecuteNonQuery()[/txt-color]
MsgBox([Ô]Tempo cadastrado[Ô])
Else
MsgBox([Ô]Usuário não encontrado[Ô], , [Ô]Atenção[Ô])
End If
lista.Close()
vtrsa.Close()
insere essas linhas em vermelho
sql = [Ô]insert into dados (tempo) values [ô][Ô] & LblCronometro.Text & [Ô][ô][Ô]
[txt-color=#e80000] dados = New OleDb.OleDbCommand(sql, vtrsa)
dados.ExecuteNonQuery()[/txt-color]
MsgBox([Ô]Tempo cadastrado[Ô])
Else
MsgBox([Ô]Usuário não encontrado[Ô], , [Ô]Atenção[Ô])
End If
lista.Close()
vtrsa.Close()
insere essas linhas em vermelho
Tentei usar, mas agora tá dando erro no ExecuteNonQuery, dizendo que tem um erro de sintaxe na instrução INSERT INTO.
Poste a mensagem do erro
sql = [Ô]insert into dados (tempo) values( [ô][Ô] & LblCronometro.Text & [Ô][ô])[Ô]
Tenta assim,se não der posta a msg do erro
Tenta assim,se não der posta a msg do erro
OleDbException was unhandled
Erro de sintaxe na instrução INSERT INTO.
Erro de sintaxe na instrução INSERT INTO.
Agora diz que:
Tipo de dados incompatÃvel na expressão de critério.
Tipo de dados incompatÃvel na expressão de critério.
qual o valor do lblcronometro.text ?
Qual é o tipo do campo no banco de dados, integer,varchar ,...?
Qual é o tipo do campo no banco de dados, integer,varchar ,...?
Como eu tô usando o access, coloquei ele como data/hora, depois como Número, mas nenhum dos dois tá indo.
O form tá assim: http://imgur.com/zIrC3
O Label do cronômetro,como eu disse, tá na estrutura: 00:00.0
O form tá assim: http://imgur.com/zIrC3
O Label do cronômetro,como eu disse, tá na estrutura: 00:00.0
Faz um teste.Coloca o campo como texto
E posta o resultado
E posta o resultado
O erro continua no ExecuteNonQuery:
Ãndice ou chave primária não pode conter um valor Null.
Ãndice ou chave primária não pode conter um valor Null.
Tópico encerrado , respostas não são mais permitidas