Mortalmdsl Posted September 26, 2013 at 09:42 PM Report #526198 Posted September 26, 2013 at 09:42 PM (edited) Boas, sou novo neste forum j+a visitei algumas veses e gostei das respostas propostas por isso istou aqui a relatar o meu erro. Quando faço debug no visual basic 10 (express) apaece-me o seguinte err: "Data type mismatch in criteria expression.", se me podessem corrigir aradecia. Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Database3.accdb") Dim query As String = "INSERT INTO Registos([Nome], [Apelido], , [Password], [DataNascimento], [DataRegisto]) VALUES (@Nome, @Apelido, @Email, @Password, @DataNascimento, @DataRegisto)" Dim command As New OleDbCommand(query, ConnectionString) command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextBox.Text command.Parameters.Add("@Apelido", OleDbType.VarChar).Value = ApelidoTextBox.Text If RadioBtnMasculino.Checked = True Then command.Parameters.Add("@Masculino", OleDbType.VarChar).Value = "Masculino" Else command.Parameters.Add("@Feminino", OleDbType.VarChar).Value = "Feminino" End If command.Parameters.Add("@Email", OleDbType.VarChar).Value = EmailTextBox.Text command.Parameters.Add("@Password", OleDbType.VarChar).Value = PasswordTextBox.Text command.Parameters.Add("@DataNascimento", OleDbType.VarChar).Value = DataNascimento.SelectionRange.Start.Date.ToShortDateString() command.Parameters.Add("@DataRegisto", OleDbType.VarChar).Value = Date.Today ConnectionString.Open() Dim x As Integer = command.ExecuteNonQuery() ->ERRO If x < 1 Then MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error) Else MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information) End If ConnectionString.Close() command = Nothing Edited September 26, 2013 at 09:57 PM by Mortalmdsl
nelsonr Posted September 26, 2013 at 11:04 PM Report #526210 Posted September 26, 2013 at 11:04 PM Boas, não será ai mistura no tipo de dados, nomeadamente o campo data de nascimento que tens como varchar ou o dataregisto que tens como varchar e estas a passar uma data
Mortalmdsl Posted September 27, 2013 at 03:29 PM Author Report #526336 Posted September 27, 2013 at 03:29 PM Muito obrigado consegui resolver o erro. Logo depois surgiu outro mas consegui-o corregir, nao tinha implementado o masculino e feminino.. Neste momento consigo gravar a base de dados, mas se esperar uns 10 minutos ela volta para o ID=1... Este e agora o meu button de "Registo"(adiiona dados a base de dados), Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\Database3.accdb") Dim query As String = "INSERT INTO Registos([Nome], [Apelido], [sexo], , [Password], [DataNascimento], [DataRegisto]) VALUES (@Nome, @Apelido, @Sexo, @Email, @Password, @DataNascimento, @DataRegisto)" Dim command As New OleDbCommand(query, ConnectionString) command.Parameters.Add("@Nome", OleDbType.VarChar).Value = NomeTextBox.Text command.Parameters.Add("@Apelido", OleDbType.VarChar).Value = ApelidoTextBox.Text If RadioBtnMasculino.Checked = True Then command.Parameters.Add("@Sexo", OleDbType.VarChar).Value = "Masculino" Else command.Parameters.Add("@Sexo", OleDbType.VarChar).Value = "Feminino" End If command.Parameters.Add("@Email", OleDbType.VarChar).Value = EmailTextBox.Text command.Parameters.Add("@Password", OleDbType.VarChar).Value = PasswordTextBox.Text command.Parameters.Add("@DataNascimento", OleDbType.Date).Value = txtDataNascimento.Text command.Parameters.Add("@DataRegisto", OleDbType.Date).Value = Date.Now ConnectionString.Open() Dim x As Integer = command.ExecuteNonQuery() If x < 1 Then MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error) Else MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information) End If ConnectionString.Close() command = Nothing
nelsonr Posted September 27, 2013 at 03:41 PM Report #526339 Posted September 27, 2013 at 03:41 PM Qual ID?
Mortalmdsl Posted September 27, 2013 at 04:12 PM Author Report #526345 Posted September 27, 2013 at 04:12 PM ID no access, esta defenido como numeraçao automatico.
nelsonr Posted September 27, 2013 at 04:20 PM Report #526346 Posted September 27, 2013 at 04:20 PM Ou seja, inseres uma data de registos, vais ao Access e estão lá. Passados 10 minutos, vais ao Access novamente e despareceram?
Mortalmdsl Posted September 27, 2013 at 04:39 PM Author Report #526358 Posted September 27, 2013 at 04:39 PM Passando 10 minutos executo o programa e os registos no access desaparecem.
nelsonr Posted September 27, 2013 at 04:41 PM Report #526359 Posted September 27, 2013 at 04:41 PM Se o ID volta a um, duvido que seja do teu programa (se removesse registos, o ID continuava). Que sistema operativo estás a usar? Não estás a repor a base de dados? Algo semelhante acontecia com o Shadow Copy do Windows.
Mortalmdsl Posted September 27, 2013 at 04:46 PM Author Report #526362 Posted September 27, 2013 at 04:46 PM Estou a usar o windows7, se criar registos diretamente no access e remover os registos e voltar a criar registos o ID nao recomeça.
nelsonr Posted September 27, 2013 at 05:04 PM Report #526366 Posted September 27, 2013 at 05:04 PM Tenta fazer isto: - adiciona registos pela tua aplicação - entras com o access e fazes alterações (se possivel em alguma tabela que a tua aplicação nao mexa) - esperas 10 minutos - entras na aplicação e inseres registos - verifica se os registos iniciais desapareceram e se a alteração que fizeste directamente no access tambem desapareceu
Mortalmdsl Posted September 27, 2013 at 05:19 PM Author Report #526371 Posted September 27, 2013 at 05:19 PM Já exprimentei varias vezes e já não me remove os registos, será que foi de editar um registo diretamente na base dados?
nelsonr Posted September 27, 2013 at 05:28 PM Report #526374 Posted September 27, 2013 at 05:28 PM Então agora já não desaparecem os registos? O utilizador que está ligado é administrador do windows? A base de dados foi criada pelo utilizador em utilização?
Mortalmdsl Posted September 27, 2013 at 05:39 PM Author Report #526377 Posted September 27, 2013 at 05:39 PM Apos mudificaçao do codigo e execuçao do programa o access apaga os registos. Eu criei a base de dados na escola, neste momento estou noutro PC
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now