IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Probleme d'execution d'une requête sur Access


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut Probleme d'execution d'une requête sur Access
    Bonjour
    Je fais un programme permettant de louer un livre dans une bibliothèque.
    En fait, lorsque je clique sur le bouton:
    _si le livre n'est pas déjà loué: on insère le numéro de l'adhérent et aussi la date de l'emprunt.
    _si le livre est déjà loué: on enlève les champs du numéro de l'adhérent et de la date d'emprunt.

    Simple non ?
    et ba non ...
    J'ai un problème quand j'exécute ma requête: lorsque je compile sa marche, et si je réexécute le programme une 2nd fois, les modification dans la base de données faites lors de la 1ere exécution ne sont plus présente, je me retrouve avec la même base de données qu'au départ.
    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub EmpRet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmpRet.Click
    If Exemplaire.Text.Length > 0 Then
    Dim cmd As OleDbCommand = MyConnexion.CreateCommand
    Dim trans As OleDbTransaction
    trans = MyConnexion.BeginTransaction
    cmd.Transaction = trans
    If Emprunter.Checked Then
    cmd.CommandText = "UPDATE EXEMPLAIRE SET NumEmprunteur =" & TxtAd.Text & ", DatePret = DATE() WHERE NumBD=" & NumBD.Text & " AND NumEx=" & Exemplaire.Text & ";"
    cmd.ExecuteReader()
    trans.Commit()
    ElseIf Rendre.Checked Then
    cmd.CommandText = "UPDATE EXEMPLAIRE SET NumEmprunteur =NULL, DatePret =NULL WHERE NumBD=" & NumBD.Text & " AND NumEx=" & Exemplaire.Text & ";"
    cmd.ExecuteReader()
    trans.Commit()
    End If
    Else : MsgBox("Veuillez selectionner une bande déssinée à louer ou à rendre")
    End If
    End Sub
    Normalement il n'y a pas de problème au niveau des requêtes, je pense que c'est juste au niveau de l'utilisation des oleDB de VB.

    Merci a vous tous

    EDIT: Je tiens à préciser que lorsque je fait une des deux commandes dans access, sa marche impeccable, même pas la peine de faire de commit etc... donc je ne vois pas ce qu'il faut faire de plus ( ou de moins ^^ ) merci

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Je pense que lorsque tu as ajouter ta DB dans le projet, tu as du par mégarde demander à faire un copie locale (dans le /BIN) de la base (c'est une "erreur" classique).
    Donc tu fais bien les updates mais dans une DB qui se trouve dans le /BIN du projet.

    Faut juste que tu modifies l'option "Copier dans le répertoire" qui doit trainer au niveau de tes datasets.

    Cdt.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    ok mais je vois pas ou c'est pour faire cette modif, tu peux me dire ou c'est ?
    merci

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Re.

    Sous VS2005, dans l'explorateur de solution, tu dois avoir ton dataset. Tu te mets dessus et c'est la propriété noté "Copier dans le répertoire de sortie".

    Cdt.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    je n'utilise pas de dataset( ou plutôt, plus maintenant, j'en avait un dans mon projet mais je l'ai supprimer car j'en avait plus besoin)

  6. #6
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Citation Envoyé par Noodles95 Voir le message
    je n'utilise pas de dataset( ou plutôt, plus maintenant, j'en avait un dans mon projet mais je l'ai supprimer car j'en avait plus besoin)
    Mais est-ce que la base est copiée dans le /BIN ou non ? Tu me mets un doute sur la source du probléme...

    Donc si je comprends maintenant tu passes par un connexion que tu déclares par code "à la main" ?

    Cdt.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Oui, la base est copiée dans le /BIN et la connexion c'est moi qui la déclare comme sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim MyConnexion As OleDbConnection
    Dim strcon As String
    MyConnexion = New OleDbConnection
    strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & "bdtheque.mdb"
    MyConnexion.ConnectionString = strcon
    MyConnexion.Open()
    En tout cas, merci de m'aider comme tu le fais
    EDIT: Logiquement, il n'y a pas de dataset, sauf si quand j'importe la base de données dans mon projet je me trompe car Visual studio me propose d'en créer un. Je tiens aussi a préciser, que lorsque j'exécute mon programme via visual studio (F5), il se passe ce que je décrit, mais par contre lorsque j'exécute directement le fichier .exe qui se trouve dans /BIN, cela fonctionne et les modifications de la base de données sont bien prises en compte ... je n'y comprend plus rien ^^

    Merci encore

  8. #8
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & "bdtheque.mdb"
    Il n'y a pas de répertoire précisé dans le chemin de ta base, par défaut ça doit utiliser la base qui est dans le même répertoire.
    Donc si tu exécutes le .exe qui est dans le bin, tu utilises la base mise dans le bin.

    Dés lors que tu lances via VS, il redéclenche une copie de la base dans le bin.

    Regarde dans l'explorateur de solution au niveau de ta base, tu dois avoir l'option "Copier dans le répertoire de sortie".

    Nom : OptionBDD.jpg
Affichages : 220
Taille : 25,4 Ko

    PS : D'ailleurs par curiosité, pourquoi avoir importé la base si tu te connectes "à la main" dans le code et que tu n'utilises pas de dataset typé ?

    Cdt.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    PS : D'ailleurs par curiosité, pourquoi avoir importé la base si tu te connectes "à la main" dans le code et que tu n'utilises pas de dataset typé ?
    Ba parce que j'ai un peu de mal avec les base de données en vb, mais dans mon cours, il était indiqué que le Dataset été utilisé pour une connexion en mode déconnecte et que la, comme je veux directement modifier sur la base de données je pouvais directement agir dedans sans passer par un dataset.

    De plus, où est-ce que je met le fichier .mdb si il ne faut pas le mettre dans le /bin ?

    Merci encore, je sent que sa va marché ^^

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Bon sa a marché, j'ai juste mis mon fichier .mdb dans le dossier resources , j'ai modifier le chemin et c'est bon je ne sais pas si c'est la peine de laisser mon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim trans As OleDbTransaction
    trans = MyConnexion.BeginTransaction
    cmd.Transaction = trans
    {...code...}
    trans.Commit()
    Car j'avais rajouter cela car je croyais que ma requête n'était pas validée ( comme a chaque fois que je relancer le programme, les modifications avaient été supprimée)

    En tout cas merci c'est sympa d'avoir pris de ton temps pour m'aider

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    J'ai une dernière chose a demander car je bloque a ce niveau là aussi (je ne sais pas si il faut créer un nouveau post ou pas, mais c'est toujours dans le même genre).

    J'ai, dans ma base de données, une table avec une liste d'adhérents où sont fournis leur coordonnées, leur numéro d'adhérents etc...

    et j'aimerais que dans ma form, il y est un datagridview où là table s'affiche entièrement avec toutes les données.
    J'ai trouver un site qui explique exactement ce que je veut faire mais au moment de la sauvegarde, même problème, rien n'est sauvegarder :

    http://plasserre.developpez.com/v6-6.htm ( dans la rubrique "C - Remplir un DataGrid avec une base de données sans une ligne de code (VB 2005)" ) quel titre alléchant nan ? :p

    Enfin voilà, alors peut être existe t-il une méthode plus simple sans dataset, mais je trouve sa méthode assez simple et carrément adéquate.

    Merci encore :

  12. #12
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Re.

    Oui, un nouveau post sera le bienvenu aprés avoir mis celui-ci en .

    PS : A mon avis, si ça ne sauvegarde pas, c'est que tu as oublié de définir le commandbuilder.

    Cdt.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Voici l'adresse du nouveau post :

    http://www.developpez.net/forums/sho...d.php?t=555842

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/01/2011, 11h59
  2. Probleme avec critere dans une requete sur access..
    Par emirov dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/04/2008, 23h11
  3. [Access] Fonction TOP dans une requête sur deux tables
    Par pc75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/07/2007, 09h31
  4. Aide pour une requête sur Access
    Par psgkiki dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/05/2007, 11h34
  5. Aide pour une requête sur Access
    Par psgkiki dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/05/2007, 11h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo