Partage
  • Partager sur Facebook
  • Partager sur Twitter

Base de donnée accès

demande d'aide

16 février 2012 à 21:16:04

Bonjour a tous, tout d'abord un grand merci pour ce magnifique site d'aide.
Voilà,je suis un sous débutant en VB.Net 2010, avec quelques connaissances en base de données Access.
J'ai commencé un programme (avec une base accès en (accdb) avec login et mot de passe et code d'accès pour chaque utilisateur, permettant de pouvoir accéder ou non a certaine application et cela fonctionnant à merveille.

Voilà mon problème, quand je fais appel a changer le mot de passe de l'utilisateur, son login et mot de passe s'affichant bien avec le ID de la table mais dès que je veux changer le mot de passe, il me le change, mais,pas sur le bon utilisateur logué.

La base access étant bien chargé, mais, il m'enregistre le changement du mot de passe, sur la première ligne de la base.
Comment faire pour que l'enregistrement s’enregistre bien sur la ligne de l'utilisateur logué ????
Je joins le code que j'utilise.



Imports System
Imports System.Data
Imports System.Data.OleDb



Public Class Modpass
Dim con As New OleDb.OleDbConnection
Dim Place_Enregistrement As Integer
Dim ds As New DataSet
Dim Val_ID_Table As Integer
Dim Max_Enregistrements As Integer
Private Sub quitter_Click(sender As System.Object, e As System.EventArgs) Handles quitter.Click
Me.Close()
End Sub


Private Sub Modpass_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'TODO: cette ligne de code charge les données dans la table 'DbDataSet.TableObjet'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
Me.TableObjetTableAdapter.Fill(Me.DbDataSet.TableObjet)
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=db.accdb;"
Connexion()
Me.TxtLog.Text = user
End Sub

Private Sub Connexion()


Dim cmd As OleDb.OleDbCommand

Dim sql_tout_afficher As String
sql_tout_afficher = "SELECT * FROM TableObjet"


cmd = New OleDb.OleDbCommand(sql_tout_afficher, con)


cmd.Connection.Open()



Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter

da.SelectCommand = cmd

da.Fill(ds, "Liste_TableObjet")


cmd.Connection.Close()


Max_Enregistrements = ds.Tables("Liste_TableObjet").Rows.Count


If Max_Enregistrements = 0 Then
Modifier.Enabled = False


TxtPA.Text = ""

Else


Place_Enregistrement = 0

Navigation()
End If

End Sub
Private Sub Navigation()


Val_ID_Table = ds.Tables("Liste_TableObjet").Rows(Place_Enregistrement).Item(0)

'TxtLog.Text = ds.Tables("Liste_TableObjet").Rows(Place_Enregistrement).Item(1)
TxtPA.Text = ds.Tables("Liste_TableObjet").Rows(Place_Enregistrement).Item(3)

End Sub

Private Sub Modifier_Click(sender As System.Object, e As System.EventArgs) Handles Modifier.Click

Dim cmd As OleDb.OleDbCommand

Dim sql_modifier As String


sql_modifier = "UPDATE TableObjet SET MPasse=Val_modifier_MPasse where ID_Table=" & Val_ID_Table & ""


cmd = New OleDb.OleDbCommand(sql_modifier, con)


cmd.Parameters.AddWithValue("Val_modifier_MPasse", TxtPA.Text)


cmd.Connection.Open()

cmd.ExecuteReader()

cmd.Connection.Close()


MsgBox("Votre mot de passe a bien été modifié.")


ds.Clear()


Connexion()
End Sub



End Class

Je remercie d'avance ceux qui si intéresserons.
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 8:42:23

Salut
Je pense que c'est la variable Val_ID_Table qui est mal initialisée
En effet, tu fais ça :
Val_ID_Table = ds.Tables("Liste_TableObjet").Rows(Place_Enregistrement).Item(0)


Je suppose que l'item 0 est le premier d'ou le fait que tu modifies toujours la première ligne de la table.
Il faudrait que tu récupères l'id de la personne loguée soit en la mettant dans un formulaire en non visible soit en la stockant lors de la connexion (Pour la connexion, tu dois bien avoir une requête qui vérifie la cohérence login/mot de passe et donc tu peux en profiter pour récupérer l'id qui va avec)


PS: tu remarqueras que j'ai utilisé le zcode qui permet de colorer mon code et qu'y le rend plus lisible. Ca serait bien que tu fasse de même
Pour cela, il suffit sélectionner ton code, de cliquer sur l'image Image utilisateur et de choisir VB .Net
Merci
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 10:25:21

Le message qui suit est une réponse automatique.
Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


Merci d'utiliser les balises de code


Bonjour,

Les forums du Site du Zéro disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

De plus, veille à ce que ton code soit correctement indenté.

Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

Voici un exemple de code non coloré (mauvais exemple) :
int main(int argc, char *argv[])
{
long choixOperation;

printf("Choisissez l'operation a effectuer");
/* etc. */
}

Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
int main(int argc, char *argv[])
{
    long choixOperation;

    printf("Choisissez l'operation a effectuer");
    /* etc. */
}


C'est plus clair n'est-ce pas ? ;)

Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

Merci de ta compréhension. :)
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 11:28:20

Salut :) et merci d'avoir pris le temps de t'intéresser a mon problème.
Je n'ai pas encore essayé t'as proposition mais,je voulais surtout te remercier.

Et je voulais m'excuser d'avoir mis deux fois le même sujet, je croyais que je m'étais trompé, pas encore l'habitude du forum étant inscrit depuis seulement un jour.
Bonne journée :)
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 11:29:56

Et pour les balises de code... ?
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 13:21:27

:D Merci Super Mario de ton aide, effectivement en récupérant mon ID de la table dans une combobox cela va mieux.

Dans mon prog le code étant coloré o_O

J'espère qu'il y aura un super tuto sur les bases de données en relation avec les bases access.

J'ai réalisé le même prog sous accès avec une simplicité :euh: , sous VB.net cela étant un peu plus complexe de travailler avec une base access.accdb.

Superbe site qui aide bien les débutants en VB.net comme moi. :p
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2012 à 15:07:05

Donc tu ne veux définitivement pas éditer ton message pour y mettre les balises de code ? Très bien, je ferme. C'est vraiment con.
  • Partager sur Facebook
  • Partager sur Twitter