[VB.Net]_@@Identity aléatoire ?

Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011 - 5 nov. 2006 à 10:31
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011 - 21 nov. 2006 à 18:17
Bonjour,


J'ai parcouru le forum, l'aide VS, mais je ne trouve pas de réponses à mon problème.

J'attaque une Access, j'ai un DataSet et autant de DataAdapter que de Tables.... Mon DataSet est bien chargé.

Je cherche donc à récupérer le ID du dernier insère.


J'ai trouvé ce morceau de code dans l'aide VS.


stDernierID est une variable public, ou j'indique le champ ID.
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
Public Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)

Dim newID As Integer = 0
Dim idCMD As OleDbCommand = New OleDbCommand( _
"SELECT @@IDENTITY", objConnexion)

If args.StatementType = StatementType.Insert Then
' Retrieve the identity value and store it in the CategoryID column.
newID = CInt(idCMD.ExecuteScalar())
args.Row(strDernierID) = newID
End If

End Sub

<!-- END TEMPLATE: bbcode_code -->

Mon code:

Ajout du chauffeur
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

Private Sub AjoChauffeur()

'try

'Ouvrir la connexion
objConnexion.Open()

' Création de la nouvelle ligne
objDataRowChauffeur = objDataSet.Tables("TblChauffeur").NewRow()

' Remplir les champs
objDataRowChauffeur("NPermis") = Me.txtNPermis.Text If (Me.txtIDRepertoireChauffeur.Text "") Then : objDataRowChauffeur("ID_TblRepertoire") DBNull.Value : Else : objDataRowChauffeur("ID_TblRepertoire") = Me.txtIDRepertoireChauffeur.Text : End If
objDataRowChauffeur("DateObtention") = Me.dtmpDateObtentionChauffeur.Text

' Ajout de la ligne à la table
objDataSet.Tables("TblChauffeur").Rows.Add(objDataRowChauffeur)

'Pour modifier les valeurs changées dans le DataAdapter
objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapterChauffeur)

' Récupérer l'ID de l'ajout
strDernierID = "ID_Chauffeur"
AddHandler objDataAdapterChauffeur.RowUpdated, _
New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

' Mise à jour
objDataAdapterChauffeur.Update(objDataSet, "TblChauffeur")

'Catch ex As Exception
'Message d'erreur
' MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

'Finally
'Fermer la connexion
objConnexion.Close()

'End Try

End Sub

<!-- END TEMPLATE: bbcode_code -->
Ajout de l'agence
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

Private Sub AjoAgence()

'try

'Ouvrir la connexion
objConnexion.Open()

' Création de la nouvelle ligne
objDataRowAgence = objDataSet.Tables("TblAgence").NewRow()

' Remplir les champs If (Me.txtIDRepertoireAgence.Text "") Then : objDataRowAgence("ID_TblRepertoire") DBNull.Value : Else : objDataRowAgence("ID_TblRepertoire") = Me.txtIDRepertoireAgence.Text : End If

' Ajout de la ligne à la table
objDataSet.Tables("TblAgence").Rows.Add(objDataRowAgence)

'Pour modifier les valeurs changées dans le DataAdapter
objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapterAgence)

' Récupérer l'ID de l'ajout
strDernierID = "ID_Agence"
AddHandler objDataAdapterAgence.RowUpdated, _
New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

' Mise à jour
objDataAdapterAgence.Update(objDataSet, "TblAgence")

'Catch ex As Exception
'Message d'erreur
' MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

'Finally
'Fermer la connexion
objConnexion.Close()

'End Try

End Sub

<!-- END TEMPLATE: bbcode_code -->

Il y a un 3ème Private AjoAssurance, qui ressemble au deux premier.

Je lance dans cette ordre: AjoChauffeur, AjoAssurance, AjoAgence.


Mon objconnexion reste bien ouvert tout du long d'une procédure.

En debug pas à pas, le code parcourt bien entièrement OnRowUpdated.

OnRowUpdated fonctionne bien pour AjoAgence, mais me renvois 0 pour les autres.


D'ou vient le problème ?


Merci d'avance.


Gwendal

10 réponses

TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
5 nov. 2006 à 13:18
Salut,
Il faudrait que tu publies ton projet en entier pour qu'on puisse vraiment comprendre.
Sinon, comme ca à première vue :
- Essaye plutôt de travailler en mode déconnecté et d'updater en fin de saisie
- Crée une classe métier ou mieux un interface, indépendante de la manière de modifier les donnéesce qui aérera ton code et te permettra de tester différentes implémentation de cette interface sans rien changer autour...
- Créer des fonctions génériques de traitement des tables (tu passes le nom de la table en paramètre)
- Tu peux te passer de l'uilisation des ID si tu gère le contrôle des données saisies au niveau des évenements de l'interface.

Mais, bon je vais regarder quand même ton code plus en détail pour voir si je peux voir ou ca bloque.

A+
Jcbé[^]
0
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
5 nov. 2006 à 13:54
Bonjour,

    Merci pour le coup d'oeil. Je débute en VB.Net. Je me débrouillais bien en VBA sous Access, mais VB est quand même plus complexe. Faut juste prendre le coup.

Sinon, comme ca à première vue :
- Essaye plutôt de travailler en mode déconnecté et d'updater en fin de saisie
Je pensais travailler en mode déconnecté .
A l'ouverture du formulaire je charge dans un DataSet les tables dont j'ai besoin en filtrant les requêtes avec WHERE CampID = -1
A la fin de la saisie je mets à jour les tables.

-
Crée une classe métier ou mieux un interface, indépendante de la
manière de modifier les donnéesce qui aérera ton code et te permettra
de tester différentes implémentation de cette interface sans rien
changer autour...
Arf... Je débute... J'ai bien fait une fonction qui me permet de charger le DataSet, mais pour une classe ....
- Créer des fonctions génériques de traitement des tables (tu passes le nom de la table en paramètre)
- Tu peux te passer de l'uilisation des ID si tu gère le contrôle des données saisies au niveau des évenements de l'interface.

Pour ce qui du reste du code.
Les Variables déclarées:
<hr size="2" width="100%" />#Region " Déclaration des variables"

#Region " Variables de connexions "

    '  Déclaration Objet Connexion
    Private objConnexion As OleDbConnection
    ' Paramètres de connexion à la base
    Private strConnexion As String
    ' Déclaration Objet Commande
    Private objCommand As OleDbCommand
    ' Pour recompiler les données modifiées avant de les remettre dans le "DataAdapter"
    Private objCommandBuilder As OleDbCommandBuilder
    ' Déclaration Objet DataSet
    Private objDataSet As New DataSet()

#End Region

#Region " Variables Véhicule "

    ' String contenant la 'Requête SQL'
    Private strFiltreVehicule As String
    '  Déclaration Objet DataAdapter
    Private objDataAdapterVehicule As OleDbDataAdapter
    ' Déclaration Objet DataTable
    Private objDataTableVehicule As DataTable
    ' Déclaration Objet DataRow (ligne)
    Private objDataRowVehicule As DataRow
    'Numéro de la ligne en cours
    Private RowNumberVehicule As Integer

#End Region

#Region " Variables Chauffeur "

    ' String contenant la 'Requête SQL'
    Private strFiltreChauffeur As String
    '  Déclaration Objet DataAdapter
    Private objDataAdapterChauffeur As OleDbDataAdapter
    ' Déclaration Objet DataTable
    Private objDataTableChauffeur As DataTable
    ' Déclaration Objet DataRow (ligne)
    Private objDataRowChauffeur As DataRow
    'Numéro de la ligne en cours
    Private RowNumberChauffeur As Integer

#End Region

#Region " Variables Assurance "

    ' String contenant la 'Requête SQL'
    Private strFiltreAssurance As String
    '  Déclaration Objet DataAdapter
    Private objDataAdapterAssurance As OleDbDataAdapter
    ' Déclaration Objet DataTable
    Private objDataTableAssurance As DataTable
    ' Déclaration Objet DataRow (ligne)
    Private objDataRowAssurance As DataRow
    'Numéro de la ligne en cours
    Private RowNumberAssurance As Integer

#End Region

#Region " Variables Agence "

    ' String contenant la 'Requête SQL'
    Private strFiltreAgence As String
    '  Déclaration Objet DataAdapter
    Private objDataAdapterAgence As OleDbDataAdapter
    ' Déclaration Objet DataTable
    Private objDataTableAgence As DataTable
    ' Déclaration Objet DataRow (ligne)
    Private objDataRowAgence As DataRow
    'Numéro de la ligne en cours
    Private RowNumberAgence As Integer

#End Region
<hr size="2" width="100%" />
Les fonctions
<hr size="2" width="100%" />Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)

        Dim newID As Integer = 0
        Dim idCMD As OleDbCommand = New OleDbCommand( _
          "SELECT @@IDENTITY", objConnexion)

        If args.StatementType = StatementType.Insert Then
            ' Retrieve the identity value and store it in the CategoryID column.
            newID = CInt(idCMD.ExecuteScalar())
            args.Row(strDernierID) = newID
        End If

    End Sub
<hr size="2" width="100%" />Public Sub RemplirDataSet(ByVal strSqlFiltre As String, ByRef PassDataAdapter As OleDbDataAdapter, _
                              ByVal PassDataSet As DataSet, ByRef PassDataTable As DataTable, _
                              ByVal PassNomtable As String)

        Try

            'Initialisation de la chaîne de paramètres pour la connexion
            strConnexion = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source =" & Application.StartupPath & "\Source\Parc Vehicule.mdb;"

            'Instanciation d'un objet Connexion
            objConnexion = New OleDbConnection()
            'Donner à la propriété ConnectionString les paramètres de connexion
            objConnexion.ConnectionString = strConnexion

            'Ouvrir la connexion
            objConnexion.Open()

            'Instancier un objet Commande
            objCommand = New OleDbCommand(strSqlFiltre)
            'Instancier un objet Adapter
            PassDataAdapter = New OleDbDataAdapter(objCommand)
            'Initialiser l'objet Command
            objCommand.Connection() = objConnexion
            'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
            PassDataAdapter.Fill(PassDataSet, PassNomtable)
            'Mettre dans un objet DataTable une table du DataSet
            PassDataTable = PassDataSet.Tables(PassNomtable)

        Catch ex As Exception
            'Message d'erreur
            MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Finally
            ' Fermer la connexion
            objConnexion.Close()

        End Try

    End Sub
<hr size="2" width="100%" />    Private Sub AjoAssurance()
        'Sub permettant d'enregsitrer (ou de modifier) un enregsitrement

        'Try

        'Ouvrir la connexion
        objConnexion.Open()

        ' Création de la nouvelle ligne
        objDataRowAssurance = objDataSet.Tables("TblAssurance").NewRow()

        ' Remplir les champs
        objDataRowAssurance("NContrat") = Me.txtNContratAssurance.Text
        objDataRowAssurance("ValableDu") = Me.dtmpValableDuAssurance.Text
        objDataRowAssurance("ValableAu") = Me.dtmpValableAuAssurance.Text        If (Me.txtIDRepertoireAssurance.Text "") Then : objDataRowAssurance("ID_TblRepertoire") DBNull.Value : Else : objDataRowAssurance("ID_TblRepertoire") = Me.txtIDRepertoireAssurance.Text : End If

        ' Ajout de la ligne à la table
        objDataSet.Tables("TblAssurance").Rows.Add(objDataRowAssurance)

        'Pour modifier les valeurs changées dans le DataAdapter
        objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapterAssurance)

        ' Récupérer l'ID de l'ajout
        strDernierID = "ID_Assurance"
        AddHandler objDataAdapterAssurance.RowUpdated, _
          New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

        ' Mise à jour
        objDataAdapterAssurance.Update(objDataSet, "TblAssurance")

        'Catch ex As Exception
        'Message d'erreur
        '    MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        'Finally
        'Fermer la connexion
        objConnexion.Close()

        'End Try

    End Sub
<hr size="2" width="100%" />
    Private Sub AjoChauffeur()
        'Sub permettant d'enregsitrer (ou de modifier) un enregsitrement

        'try

        'Ouvrir la connexion
        objConnexion.Open()

        ' Création de la nouvelle ligne
        objDataRowChauffeur = objDataSet.Tables("TblChauffeur").NewRow()

        ' Remplir les champs
        objDataRowChauffeur("NPermis") = Me.txtNPermis.Text        If (Me.txtIDRepertoireChauffeur.Text "") Then : objDataRowChauffeur("ID_TblRepertoire") DBNull.Value : Else : objDataRowChauffeur("ID_TblRepertoire") = Me.txtIDRepertoireChauffeur.Text : End If
        objDataRowChauffeur("DateObtention") = Me.dtmpDateObtentionChauffeur.Text

        ' Ajout de la ligne à la table
        objDataSet.Tables("TblChauffeur").Rows.Add(objDataRowChauffeur)

        'Pour modifier les valeurs changées dans le DataAdapter
        objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapterChauffeur)

        ' Récupérer l'ID de l'ajout
        strDernierID = "ID_Chauffeur"
        AddHandler objDataAdapterChauffeur.RowUpdated, _
          New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

        ' Mise à jour
        objDataAdapterChauffeur.Update(objDataSet, "TblChauffeur")

        'Catch ex As Exception
        'Message d'erreur
        '    MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        'Finally
        'Fermer la connexion
        objConnexion.Close()

        'End Try

    End Sub
<hr size="2" width="100%" />    Private Sub AjoAgence()
        'Sub permettant d'enregsitrer (ou de modifier) un enregsitrement

        'try

        'Ouvrir la connexion
        objConnexion.Open()

        ' Création de la nouvelle ligne
        objDataRowAgence = objDataSet.Tables("TblAgence").NewRow()

        ' Remplir les champs        If (Me.txtIDRepertoireAgence.Text "") Then : objDataRowAgence("ID_TblRepertoire") DBNull.Value : Else : objDataRowAgence("ID_TblRepertoire") = Me.txtIDRepertoireAgence.Text : End If

        ' Ajout de la ligne à la table
        objDataSet.Tables("TblAgence").Rows.Add(objDataRowAgence)

        'Pour modifier les valeurs changées dans le DataAdapter
        objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapterAgence)

        ' Récupérer l'ID de l'ajout
        strDernierID = "ID_Agence"
        AddHandler objDataAdapterAgence.RowUpdated, _
          New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

        ' Mise à jour
        objDataAdapterAgence.Update(objDataSet, "TblAgence")

        'Catch ex As Exception
        'Message d'erreur
        '    MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        'Finally
        'Fermer la connexion
        objConnexion.Close()

        'End Try

    End Sub
<hr size="2" width="100%" />
Au chargement du formulaire, je charge dans le dataSet les tables
<hr size="2" width="100%" />                'Remplir le DataSet
                '   Table Véhicule                strFiltreVehicule "SELECT * FROM Tbl_Vehicule WHERE ID_Vehicule " & intIDTblVehicule
                RemplirDataSet(strFiltreVehicule, objDataAdapterVehicule, objDataSet, objDataTableVehicule, "TblVehicule")
                '   Table Assurance                strFiltreAssurance "SELECT * FROM Tbl_Assurance WHERE ID_Assurance -1"
                RemplirDataSet(strFiltreAssurance, objDataAdapterAssurance, objDataSet, objDataTableAssurance, "TblAssurance")
                '   Table Chauffeur                strFiltreChauffeur "SELECT * FROM Tbl_Chauffeur WHERE ID_Chauffeur -1"
                RemplirDataSet(strFiltreChauffeur, objDataAdapterChauffeur, objDataSet, objDataTableChauffeur, "TblChauffeur")
                '   Table Agence                strFiltreAgence "SELECT * FROM Tbl_Agence WHERE ID_Agence -1"
                RemplirDataSet(strFiltreAgence, objDataAdapterAgence, objDataSet, objDataTableAgence, "TblAgence")
<hr size="2" width="100%" />
Sur le bouton ajouter:
<hr size="2" width="100%" />                ' Ajouter le Chauffeur
                AjoChauffeur()
                ' Ajouter l'Agence
                AjoAgence()
                ' Ajouter l'Assurance
                AjoAssurance()
                ' Ajouter le Véhicule
                AjoVehicule()
<hr size="2" width="100%" />
Voilà.... Je suis preneur de tous conseils.... (Classes, chargement de données, ... )

Merci

Gwendal
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
11 nov. 2006 à 18:51
Salut,
Malgré mes efforts sincères, je n'arrive toujours pas à comprendre pourquoi tu n'as pas rendu plus "générique" tes classes
- En créant une seule classe que tu instanciera autant de fois qu'il faut (pour le chauffeur, pour l'assurance....)
- En créant une seule form avec sa datagrid que tu instanciera autant de fois etc...
En remplacant tes AjoChauffeur, AjoAssurance .... par une fonction Ajout dans ta classe.

...Sinon, dis moi pourquoi tu as besoin du dernier ID inséré, je te dirais comment t'en passer !

..D'ailleurs, y a un truc byzare aussi dans tes "SELECT ....WHERE ID_Agence = -1"
Ca veux dire que tu crée des enregistrements dont les clé étrangères sont à -1 par défaut. L'idée pour ce genre de chôse c'est d'habitude d'interdire de valider un enregistrement si les clés étrangères ne sont pas valides !

Et si tes ID (dont tu veux trouver le dernier) sont des numéros auto, il suffit de récuperer l'id avec une bonne requète sql :
du genre :
"SELECT TOP 1 ID  as dernierID from Chauffeur order by ID DESC;"
et la requête te renvoie une seule ligne qui contient le précieux ID.

N'hésite pas à me reposer des questions.

Bon courage !

Jcbé[^]
0
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
12 nov. 2006 à 12:22
Salut,

Je débute et je voudrais prendre les bons automatismes dès le début. J'ai bien lu 2 bookins mais le problème s'est qu'ils expliquent juste les fonctions et comment s'en servir .....

Malgré mes efforts sincères, je n'arrive toujours pas à comprendre pourquoi tu n'as pas rendu plus "générique" tes classes
- En créant une seule classe que tu instanciera autant de fois qu'il faut (pour le chauffeur, pour l'assurance....)
- En créant une seule form avec sa datagrid que tu instanciera autant de fois etc...
En remplacant tes AjoChauffeur, AjoAssurance .... par une fonction Ajout dans ta classe.
En fait il faudrait que je créé une classe (connexion, chargement dataset, ajout, modif, suppression,...) comme cele-ci ?
441 http://www.c2i.fr/code.aspx?IDCode=441
Que je fasse les ajout, modif, suppression par requête et puis créé un obket command executesql ?

...Sinon, dis moi pourquoi tu as besoin du dernier ID inséré, je te dirais comment t'en passer !
Voici l'architecture de la base:
Tbl_Vehicule
         ID_Vehicule                    NuméroAuto
         Divers champs ...
         ID_TblAgence                 Numérique
         ID_TblAssurance           Numérique
         ID_TblChauffeur           Numérique
Tbl_Agence
         ID_Agence                    NuméroAuto
         Divers champs ...

Tbl_Assurance
         ID_Assurance                 NuméroAuto
         Divers champs ...

Tbl_Chauffeur
         ID_Chauffeur                  NuméroAuto
         Divers champs ...

Les tables Assurance, Chauffeur, Agence ont une liaison 1 à Inf. avec la table Tbl_Vehicule.

Dans mon projet, j'ai créé un formulaire ou l'utilisateur entra
les informations sur le véhicule
les informations sur l'assurance du véhicule
....

Donc en récupérant les derniers ID des tables Assurance, Chauffeur, Agence je peux renseigner les champs ID_TblAgence, ID_TblAssurance, ID_TblChauffeur de la table Tbl_Vehicule et mettre à jour la base.

..D'ailleurs, y a un truc byzare aussi dans tes "SELECT ....WHERE ID_Agence = -1"
Ca
veux dire que tu crée des enregistrements dont les clé étrangères sont
à -1 par défaut. L'idée pour ce genre de chôse c'est d'habitude
d'interdire de valider un enregistrement si les clés étrangères ne sont
pas valides !
Pour ajouter un enregistrement, je suis parti du principe qu'importer tous les enregistrements dans le DataSet pouvait être lourd, et donc en utilisant WHERE ID = -1 j'importais dans le DataSet des tables sans enregistrement.

Et si tes ID (dont tu veux trouver le dernier) sont des numéros auto, il suffit de récuperer l'id avec une bonne requète sql :
du genre :
"SELECT TOP 1 ID  as dernierID from Chauffeur order by ID DESC;"
et la requête te renvoie une seule ligne qui contient le précieux ID.
Je connaissais le principe pour l'avoir utiliser dans Access .

Une nouvelle fois grand merci pour les infos.

Gwendal
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
12 nov. 2006 à 12:34
Bonjour,
- Oui pour l'utilisation de type de classe du lien c2i.fr
- Ne t'occupes pas (dans un premier temps)  du volume de données mises en mémoire, ca ne fait que compliquer le problème.
- les tables qui sont du côté "plusieurs" dans une relation "de  1 à plusieurs" doivent toujours être renseignées AVANT.
Autrement dit, si un chauffeur n'éxistait pas avant la création de ton véhicule, il ne peut pas être disponnible au moment de la saisie d'un nouveau véhicule. La création d'un nouveau chauffeur "à la volée" est possible, mais tu ne dois pas t'en préoccuper au stade ou tu en es.
- Tu dois au maximum simplifier les règles de 'l'univers" dans lequel tu travailles, quitte à les compliquer une fois que tu as réglés tous les problèmes à ce stade.
- Tu en sais assez pour faire ton appli, mais tu part d'une structure trop complexe.

- Essaye de travailler en "mode déconnecté" ca te permettra de mettre la mise  à jour des tables dans une étape distincte du reste.


 


A+
Jcbé[^]
0
nzambi Messages postés 10 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 28 décembre 2006
21 nov. 2006 à 13:02
je suis un débutant  sur VB .Net, mais à l'aide des cours télécharger sur le net, je m'ensort maintenant un peu bien, mais n'empêche qu'il y ai encore de p'tits pb. Je suis sur un p'tit programme qui gère les emplois du temps d'une école par rapport au nombre de salles dispo. Dans ma BDD (access) j'ai une tabale Matière (TblMatiere), je veux charger des données de cette table dans un combobox, mais je n'arrive pas. Voici mon code







Private


Cmd
As


New


OleDbCommand




Private
Conn
As
New



OleDbConnection







Private
data
As
New



OleDbDataAdapter







Private
datat
As
New



DataTable







Private
dataSet
As
New



dataSet







Private
StrSql
As




String









Dim

Cmd AsNew

OleDbCommand



'Initilisation de la chaîne de paramètres pour la connexion




OuvrirConnexion()




'Initialisation objet Connexion





Cmd.Connection =

New
OleDbConnection(Cn)




Cmd.CommandType = CommandType.Text



Cmd.CommandText = " SELECT * FROM TblMatiere"



Conn.Open()




'Initialiser l'objet Command




Cmd.Connection = Conn



data.SelectCommand = Cmd




data.Fill(dataSet, "TblMatiere")


' Avec l'aide de la propiréte Fill du DataAdapter charger le DataSet






' Mettre dans un objet DataTable une table du DataSet




datat = dataSet.Tables("TblMatiere")




'Indiquer au combobox d'afficher la table " TblMatière" (indiquer la source)




CmbMati.DataSource = dataSet.Tables("TblMatiere")




'Indiquer quelle colonne afficher




CmbMati.DataSource = datas.Tables("TblMatiere")



CmbMati.DisplayMember = "Libelle_Mat"



CmbMati.ValueMember = "Code_Mat"



CmbMati.Refresh()



Conn.Close()

mais quand j'exécute on m'affiche un message d'erreur: " La Propriété ConnectionString n'a pas été initialisée. "
0
nzambi Messages postés 10 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 28 décembre 2006
21 nov. 2006 à 13:02
je suis un débutant  sur VB .Net, mais à l'aide des cours télécharger sur le net, je m'ensort maintenant un peu bien, mais n'empêche qu'il y ai encore de p'tits pb. Je suis sur un p'tit programme qui gère les emplois du temps d'une école par rapport au nombre de salles dispo. Dans ma BDD (access) j'ai une tabale Matière (TblMatiere), je veux charger des données de cette table dans un combobox, mais je n'arrive pas. Voici mon code







Private


Cmd
As


New


OleDbCommand




Private
Conn
As
New



OleDbConnection







Private
data
As
New



OleDbDataAdapter







Private
datat
As
New



DataTable







Private
dataSet
As
New



dataSet







Private
StrSql
As




String









Dim

Cmd AsNew

OleDbCommand



'Initilisation de la chaîne de paramètres pour la connexion




OuvrirConnexion()




'Initialisation objet Connexion





Cmd.Connection =

New
OleDbConnection(Cn)




Cmd.CommandType = CommandType.Text



Cmd.CommandText = " SELECT * FROM TblMatiere"



Conn.Open()




'Initialiser l'objet Command




Cmd.Connection = Conn



data.SelectCommand = Cmd




data.Fill(dataSet, "TblMatiere")


' Avec l'aide de la propiréte Fill du DataAdapter charger le DataSet






' Mettre dans un objet DataTable une table du DataSet




datat = dataSet.Tables("TblMatiere")




'Indiquer au combobox d'afficher la table " TblMatière" (indiquer la source)




CmbMati.DataSource = dataSet.Tables("TblMatiere")




'Indiquer quelle colonne afficher




CmbMati.DataSource = datas.Tables("TblMatiere")



CmbMati.DisplayMember = "Libelle_Mat"



CmbMati.ValueMember = "Code_Mat"



CmbMati.Refresh()



Conn.Close()

mais quand j'exécute on m'affiche un message d'erreur: " La Propriété ConnectionString n'a pas été initialisée. "
0
nzambi Messages postés 10 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 28 décembre 2006
21 nov. 2006 à 13:03
je suis un débutant  sur VB .Net, mais à l'aide des cours télécharger sur le net, je m'ensort maintenant un peu bien, mais n'empêche qu'il y ai encore de p'tits pb. Je suis sur un p'tit programme qui gère les emplois du temps d'une école par rapport au nombre de salles dispo. Dans ma BDD (access) j'ai une tabale Matière (TblMatiere), je veux charger des données de cette table dans un combobox, mais je n'arrive pas. Voici mon code







Private


Cmd
As


New


OleDbCommand




Private
Conn
As
New



OleDbConnection







Private
data
As
New



OleDbDataAdapter







Private
datat
As
New



DataTable







Private
dataSet
As
New



dataSet







Private
StrSql
As




String









Dim

Cmd AsNew

OleDbCommand



'Initilisation de la chaîne de paramètres pour la connexion




OuvrirConnexion()




'Initialisation objet Connexion





Cmd.Connection =

New
OleDbConnection(Cn)




Cmd.CommandType = CommandType.Text



Cmd.CommandText = " SELECT * FROM TblMatiere"



Conn.Open()




'Initialiser l'objet Command




Cmd.Connection = Conn



data.SelectCommand = Cmd




data.Fill(dataSet, "TblMatiere")


' Avec l'aide de la propiréte Fill du DataAdapter charger le DataSet






' Mettre dans un objet DataTable une table du DataSet




datat = dataSet.Tables("TblMatiere")




'Indiquer au combobox d'afficher la table " TblMatière" (indiquer la source)




CmbMati.DataSource = dataSet.Tables("TblMatiere")




'Indiquer quelle colonne afficher




CmbMati.DataSource = datas.Tables("TblMatiere")



CmbMati.DisplayMember = "Libelle_Mat"



CmbMati.ValueMember = "Code_Mat"



CmbMati.Refresh()



Conn.Close()

mais quand j'exécute on m'affiche un message d'erreur: " La Propriété ConnectionString n'a pas été initialisée. "
0
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
21 nov. 2006 à 13:28
- A quel moment as tu initialisé ta chaine de connection  ? l'objet Conn est -il visible par la procédure ?


- Le code de de "Dim...." à "Conn.close()" est dans quel type de procédure ?
- As-tu essayé de connecter ta table à une datagrid pour vérifier ta chaine de connection ?

Jcbé[^]
0
Gwendal3 Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 15 août 2011
21 nov. 2006 à 18:17
Bonjour,

       J'avais mis cette source sur le site je pense que tu t'en inspirer. elle est loins d'être parfaite mais fonctionne.
http://www.vbfrance.com/codes/ENREGISTRER-NOUVELLE-SAISIE-DANS-COMBOBOX_39290.aspx

Voilà

Gwendal
0
Rejoignez-nous