Se connecter / S'enregistrer
Votre question

Soucis sous visual basic 2008

Tags :
  • Visual basic
  • Programmation
Dernière réponse : dans Programmation
31 Janvier 2010 09:48:31


Aujourd'hui 09h 22mn 04s

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 commentaires 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=;"

'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"') " //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


pouvez vous m'aider à résoudre mes problèmes sous visual basic 2008? seul, le code pour le bouton "fermer" marche

Autres pages sur : soucis visual basic 2008

11 Février 2010 11:18:50

Salut,

ton message n'est pas très clair, peux tu préciser où sont tes problèmes ?
Tu n'arrives pas à te connecter à ta BDD access c'est bien cela ?
Voila comment créer une connexion et remplir une datatable avec ta requête SQL :

Dim sql_str As String
Dim conn_string As String
Dim DTT As New DataTable

conn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & name_database
sql_str= "SELECT NoFoyer FROM Foyer "

Using conn As New OleDb.OleDbConnection(conn_string)
Dim cmd As New OleDb.OleDbCommand(sql_str, conn)

conn.Open()

Dim d_reader As OleDb.OleDbDataReader
d_reader = cmd.ExecuteReader
DTT.Load(d_reader)

d_reader.Close()
conn.Close()


Avec ce code tu ne fais que remplir une datatable, tu ne renvoies tes données dans rien du tout ( pas de datagridview ou quoi que ce soit). Donnes nous plus de détails sur ce que te chagrines..^^
SliverPopop
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS