Bonjour,
il y a deux ans j’avais créer une application en VB6, il y avait une connection à une base de données ACCESS. (j’utilise ACCESS 2007)
Aujourd’hui, je suis en train de réecrire(recréer) cette application en visual basic 2008 mais j’ai quelques soucis au niveau du chargement d’un formulaire qui permet d’enregistrer des informations sur une personne.
Sous ACCESS ma base s’appelle : TDNF
Voici le code que j’avais créé sous VB6 pour ce formulaire :
'**************************************************************************************
’ FORMULAIRE DE CREATION DE PERSONNE
'**************************************************************************************
’
’ CHARGEMENT DU FORMULAIRE
'*************************
’ INITIALISE LA VARIABLE GLOBALE CONTENANT LE NOM DU DSN DE LA BASE DE DONNEES
’ ATTENTION: UNIQUEMENT LES VARIABLES GLOBALES VALORISEES PAR CE FORMULAIRE
’ On va chercher dans la table " foyer " de la base le numéro du foyer (foyer.N° foyer)
’
Private Sub Form_Load()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim RequeteSQL As String
'Connection a la base
Set conn = New ADODB.Connection
'Définition de la chaîne de connexion
conn.ConnectionString = "DSN=" & MYDSN & ";UID=;PWD=;"
'Ouverture de la base de données
conn.Open
'Ouverture du recordset
Set rs = New ADODB.Recordset
' Construction de la requete SQL
RequeteSQL = "SELECT NoFoyer FROM Foyer"
'Ouverture du recorset et execution de la requete sql
'valorisation de TbxFoyer avec la valeur lue dans la table
rs.Open RequeteSQL, conn, adOpenForwardOnly
TbxFoyer.Text = rs!NoFoyer
'fermeture base
conn.Close
CentrerForm Me
End Sub
’
’ BOUTON QUITTER
'***************
’ 1) DEMANDE CONFIRMATION
’ SI OUI ALORS DECHARGEMENT DU FORMULAIRE
’
Private Sub BtnQuitter_Click()
'Arrêt du programme
If MsgBox("Voulez-vous abandonner votre saisie? ", vbOKCancel, “FIN DE SAISIE”) = vbOK Then
Unload Me
End If
End Sub
’
’ BOUTON VALIDER
'***************
’ 1) CONTROLES DES CHAMPS DE SAISIE OBLIGATOIRE
’ 2) OUVERTURE DE LA CONNEXION A LA BASE DE DONNEES
’ 3) INSERTION D’UN ENREGISTREMENT DANS LA TABLE PERSONNE
’
Private Sub btnValider_Click()
Dim MYDSN As String
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim RequeteSQL As String
Dim erreur As Boolean
erreur = False
If TBxNomPers.Text = “” Then
MsgBox “Nom personne obligatoire”, vbOKOnly, “Contrôle de saisie”
erreur = True
Else
If TBxPrenomPers.Text = “” Then
MsgBox “Prénom personne obligatoire”, vbOKOnly, “Contrôle de saisie”
erreur = True
Else
If TBxDatenaiss.Text = “” Then
MsgBox “Date naissance obligatoire”, vbOKOnly, “Contrôle de saisie”
erreur = True
Else
If Len(TBxDatenaiss.Text) <> LONGDATE Then
MsgBox “Date sur " & LONGDATE & " positions S.V.P !”, vbOKOnly, “Contrôle de saisie”
erreur = True
Else
If Controledate(TBxDatenaiss.Text) Then
MsgBox "DATE INVALIDE!! ", vbOKOnly, “Contrôle de saisie”
erreur = True
Else
MYDSN = “DNF”
'Connection a la base
Set conn = New ADODB.Connection
'Définition de la chaîne de connexion
conn.ConnectionString = "DSN=" & MYDSN & ";UID=;PWD=;"
'Ouverture de la base de données
conn.Open
'Ouverture du recordset
Set rs = New ADODB.Recordset
Dim sSexe As String
If obSexe(0).Value Then
sSexe = "F"
Else: sSexe = "M"
End If
Dim sPos As String
If obPosFoy(0).Value Then
sPos = "PARENT"
Else: sPos = "ENFANT"
End If
' Construction de la requete SQL
RequeteSQL = "INSERT INTO personne (NomPers,PrenomPers,DateNaissPers,ProfPers,SexePers,NoFoyer,PosFoyer) VALUES (" & _
"'" & TBxNomPers.Text & "','" & TBxPrenomPers.Text & "'" & _
",#" & Format(TBxDatenaiss.Text, "dd/mm/yyyy") & "#" & _
",'" & TBxProfActivite.Text & "','" & sSexe & "'" & _
",'" & TbxFoyer.Text & "'" & _
",'" & sPos & "')"
'Ouverture du recorset et execution de la requete sql
rs.Open RequeteSQL, conn
RequeteSQL = "SELECT max(N°) as NoPers FROM Personne;"
rs.Open RequeteSQL, conn
NUMPERS = rs!NoPers
'fermeture base
conn.Close
MsgBox "Enregistrement effectué", vbOKOnly, "Saisie Personne"
End If
End If
End If
End If
End If
If Not erreur Then
SaisieDocument.Show vbModal
End If
End Sub
’
’ CHANGEMENT DE LA DATE DE NAISSANCE
'***********************************
’ 1) CONTROLE DU FORMAT DE LA DATE SI DATE SAISIE (DATE OBLIGATOIRE)
’
Private Sub TBxDatenaiss_Change()
If Len(TBxDatenaiss.Text) > LONGDATE Then
MsgBox “Date sur " & LONGDATE & " positions S.V.P !”, vbOKOnly, “Contrôle de saisie”
Else
If Controledate(TBxDatenaiss.Text) Then
MsgBox "DATE INVALIDE!! ", vbOKOnly, “Contrôle de saisie”
End If
End If
End Sub
’
’ VALIDATION DE LA DATE DE NAISSANCE
'***********************************
’ 1) CONTROLE DU FORMAT DE LA DATE SI DATE SAISIE (DATE OBLIGATOIRE)
’
Private Sub TBxDatenaiss_Validate(Cancel As Boolean)
If Len(TBxDatenaiss.Text) <> LONGDATE Then
MsgBox “Date sur " & LONGDATE & " positions S.V.P !”, vbOKOnly, “Contrôle de saisie”
Else
If Controledate(TBxDatenaiss.Text) Then
MsgBox "DATE INVALIDE!! ", vbOKOnly, “Contrôle de saisie”
End If
End If
End Sub
Private Sub TBxNomPers_Change()
saisiealpha (TBxNomPers.Text)
End Sub
Private Sub TBxPrenomPers_Change()
saisiealpha (TBxPrenomPers.Text)
End Sub
Private Sub TBxProfActivite_Change()
If Not IsNull(TBxProfActivite.Text) Then
saisiealphanum (TBxProfActivite.Text)
End If
End Sub
Et voici maintenant le code que je suis en train de faire sous visual basic:
j’ai mis des smiley la ou Visual basic 2008 me dit qu’il y a un problème
Public Class DNF_saisiepersonne
'On initialise la variable globale contenant le nom du DSN de la base de données
'On va chercher dans la table Foyer de la base le numéro de foyer (foyer.N° foyer)
Private Sub DNF_saisiepersonne_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CenterToScreen()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim RequeteSQL As String
'Connection à la base
conn = New ADODB.Connection
'Définition de la chaîne de connexion
Dim MYDSN As String = "DNF"
conn.ConnectionString = "DSN=" & MYDSN & ";UID=;PWD=;":paf:
'ouverture de la base de données
conn.Open()
'ouverture du recordset
rs = New ADODB.Recordset
'construction de la requête SQL
RequeteSQL = "SELECT NoFoyer FROM Foyer"
'Ouverture du recordset et execution de la requête sql
'valorisation de TbxFoyer avec la valeur dans la table
rs.Open(RequeteSQL, conn, ADODB.CursorTypeEnum.adOpenForwardOnly)
TBxFoyer.Text = RequeteSQL
'fermeture de la base
conn.Close()
End Sub
Private Sub BtnValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnValider.Click
Dim MYSDN As String
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim RequeteSQL As String
If TBxNomPers.Text = "" Then
MsgBox("Le nom de la personne est obligatoire !", vbOKOnly, "Contrôle de saisie")
Else
If
TBxPrenomPers.Text="" Then
MsgBox("Le prénom de la personne est obligatoire !", vbOKOnly, "Contrôle de saisie")
Else
If
TBxDateNaiss.Text="" then
MsgBox("La date de naissance est obligatoire !", vbOKOnly, "Contrôle de saisie")
Else
MYSDN = "DNF"
'connection à la base'
conn = New ADODB.Connection
'Définition de la chaine de connexion
conn.ConnectionString = "DSN=" & MYSDN & ";UID=;PWD=;"
'Ouverture de la base de données
conn.Open()
'Ouverture du recordset
rs = New ADODB.Recordset
Dim sSexe As String
If RDBtnSexeFeminin.Checked = True Then
sSexe = "F"
Else
sSexe = "M"
End If
Dim sPos As String
If RDBtnFoyerEnfant.Checked = True Then
sPos = "ENFANT"
Else
sPos = "ENFANT"
End If
'Construction de la requête SQL
RequeteSQL = "INSERT INTO personne(NomPers,PrenomPers,DateNaissPers,ProfPers,SexePers,NoFoyer,PosFoyer)Values ( "& _
"'"& TBxNomPers"','"var2"') ":paf: //j'ai arrêté de coder ici, parce que Môsieur Visual Basic 2008 n'aime pas la strusture de ma requête.
End If
End Sub
Private Sub BtnFermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFermer.Click
'Si on répond OK au message alors
If MsgBox("Voulez vous abandonner votre saisie?", vbOKCancel, "FIN DE SAISIE") = vbOK Then
'On ferme le formulaire de saisie
Me.Close()
End If
End Sub
Private Sub TBxNomPers_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBxNomPers.TextChanged
End Sub
Private Sub TBxPrenomPers_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBxPrenomPers.TextChanged
End Sub
Private Sub TBxDateNaiss_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBxDateNaiss.TextChanged
End Sub
Private Sub TBxProfActivite_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBxProfActivite.TextChanged
End Sub
End Class