Débutant en programmation et essayant d'apprendre vb 2010 (express).
J'ai suivi quelques cours présent sur internet et ai regardé le module sur comment modifier, ajouter,... les bases de données sur ce site, mais j'ai un problème à chaque fois.
Voici le code:
(j'ai créé une base de donnée access "temps.mdb" ayant un champ "temps écoulé" ainsi que "date" que j'ai lié)
Imports System.Data
Imports System.Data.OleDb
Public Class Form1
' Notre objet connexion
Public con As New OleDb.OleDbConnection
' Notre dataset
Public ds As New DataSet
Public Temps
Public TempsDebut
Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'connection à la base de donnée
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & My.Application.Info.DirectoryPath & "\Temps.mdb"
TempsDebut = Now
Timer1.Interval = 100
Timer1.Start()
End Sub
Private Sub Connection()
' Déclaration de la variable cmd
' OleDbCommand représentera ici une instruction SQL à exécuter par rapport à une source de données
Dim cmd As OleDb.OleDbCommand
' Déclaration de sql, qui contiendra la requête SQL permettant d'ajouter un enregistrement
Dim reqsql As String
reqsql = "SELECT * FROM Temps"
' Initialisation de la requête
cmd = New OleDb.OleDbCommand(reqsql, con)
' Ouverture de la connexion
cmd.Connection.Open()
' Récupération du résultat de la requête dans un dataset
' Déclaration de notre data adapter
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
' On sélectionne les enregistrements de la requête
da.SelectCommand = cmd
' et on injecte les enregistrements dans le dataset
da.Fill(ds, "Temps")
' Fermeture de la connexion
cmd.Connection.Close()
End Sub
Private Sub Form1_Leave(sender As Object, e As System.EventArgs) Handles Me.Leave
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
Dim TempsFin = Now
Dim Seconde = DateDiff(DateInterval.Second, TempsDebut, TempsFin)
Dim Minute = DateDiff(DateInterval.Minute, TempsDebut, TempsFin)
Dim Heure = DateDiff(DateInterval.Hour, TempsDebut, TempsFin)
Temps = Format(Heure, "00") & " : " & Format(Minute, "00") & " : " & Format(Seconde, "00")
Label1.Text = Temps
End Sub
Private Sub HistoriqueButton_Click(sender As System.Object, e As System.EventArgs) Handles HistoriqueButton.Click
Dialog1.Show()
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
' Déclaration de la variable cmd
' OleDbCommand représentera ici une instruction SQL à exécuter par rapport à une source de données
Dim cmd As OleDb.OleDbCommand
' Déclaration de sql_ajouter, qui contiendra la requête SQL permettant d'ajouter un enregistrement
Dim sql_ajouter As String
' On écrit notre requête et on l'assigne à la variable sql_ajouter
sql_ajouter = "INSERT INTO Temps (Temps écoulé,Date) VALUES(Val_Temps_écoulé, Val_Date)"
' Initialisation de la requête
cmd = New OleDb.OleDbCommand(sql_ajouter, con)
' On définit les paramètres utilisés pour le bon déroulement de la requête
' On assigne à Val_Prenom" le texte contenu dans le textbox txt_ajouter_prenom
cmd.Parameters.AddWithValue("Val_Temps_écoulé", "temps")
' On assigne à Val_Nom" le texte contenu dans le textbox txt_ajouter_nom
cmd.Parameters.AddWithValue("Val_Date", "date")
' Ouverture de la connexion
cmd.Connection.Open()
' Exécution de la requête SQL
cmd.ExecuteReader()
' Fermeture de la connexion
cmd.Connection.Close()
End Sub
End Class
J'ai simplement mis du texte dans les enregistrements pour tester en premier temps.
Mais le problème c que lorsque je compile, il me met une erreur à la ligne cmd.ExecuteReader()
avec ceci: Erreur de syntaxe dans l'instruction INSERT INTO.
En fait il n'y a pas de texte box.
Je voudrais simplement mettre le contenu de la variable "temps" dans la champs "temps écoulé" et la date d'aujourd'hui dans le champ "date" (désolé si je m'exprime mal, je ne connais pas encore le vocabulaire programmation)
Comment dois-je faire alors pour modifier le nom des champs (et le type de donnée)?
En passant par access ou directement en utilisant vb 2010?
J'ai essayé par access mais la base de données ne se met jamais à jour même si je clique sur actualiser.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Merci à tous.
J'ai finalement trouvé la cause (en plus j'avais déjà entendu parler de ce problème).
Il ne faut tout simplement pas utiliser Date comme champ dans access car c'est un nom réservé.
Par contre si quelqu'un a une idée et puisse m'expliquer comment changer une base de donnée que l'on a importer dans notre projet, ce serait le bienvenue (car je n'ai encore rien trouvé)