Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LES BASES POUR SE CONNECTER UNE BASE DE DONNÉES ACCESS AVEC VB.NET


Information sur le tutorial

Catégorie :Base de Donnees Tutorial .NET ( DotNet ) Date de création : 04/11/2005 23:09:32 Vu : 33 463 fois

Note :
9,1 / 10 - par 10 personnes
9,10 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (77)
Ajouter un commentaire et/ou une note

Description

Ce tutoriels explique les syntaxes pour se connecter à une BD Access
ajouter , modifier et supprimer des données...
C'est une version simplifiée de ma source(faites grâce à un trés bon tuto)qui ,suite aux mises à jours ,est devenue moins compréhensible pour les débutants , à qui elle était adressée au départ...

Tutorial

Bonjour, 

Ce tutoriels explique les syntaxes pour se connecter à une BD Access
ajouter , modifier et supprimer des données...
C'est une version simplifiée de ma source(faites grâce à un trés bon tuto)qui ,suite aux mises à jours ,est devenue moins compréhensible pour les débutants , à qui elle était adressée au départ...

1) il faut importer les biblio qui vont permettre d'utiliser ado.net : ( à mettre tout en haut )

       Imports System
      ImportsSystem.Data
      ImportsSystem.Data.OleDb
      
Imports Microsoft.VisualBasic

 2) il faut déclarer les variables :( au dessus de form_load)

      'Déclaration de la variable pour la connection
      PrivatecnxAs OleDbConnection

       'Déclaration de la variable pour la commande 
      PrivatecmdAs OleDbCommand

      'Déclaration de la variable pour le dataadapter

      Privatedta As OleDbDataAdapter

      'Déclaration de la variable pour le dataset
      PrivatedtsAs NewDataset

      'Déclaration de la variable pour la requête
      
Private sql AsString

      'Déclaration de la variable pour la datatable
      
Private dtt AsDataTable

      'Déclaration de la variable pour le datarow
      
Private dtr As DataRow

      'Déclaration de la variable pour le Nº de l'enregistrement 
      
Private rownum As Integer   

      'Déclaration de la variable pour la connectionstring
      
Private cnxstr AsString

      'Déclaration de la variable pour le commandbuilder
      
Private cmdb As OleDbCommandBuilder

Command (cmd) : permet par le biais d'une requête de récupérer tout ou partie des données de la table.

Dataadapter (dta) : reçoit les données de la commande (cmd) et les envoies au dataset (dts)

Datatable (dtt) : le dataset renvoie les données dans la datatable , qui va permettre de récupérer le nº d'enregistrement sur lequel on est placé grace au Nº de ligne (rownum)

Commandbuilder (cmdb) : il va récupérer les données modifiées et les renvoyer au dataadapter pour recréer le dataset avec les nouvelles données

3) dans form_load on va créer la connection , la commande , le dataadapter , le dataset et la datatable afin de pouvoir ajouter , modifier , supprimer des données dans la table.
Afin de ne pas devoir déplacer la base de données on la place dans le répertoire bin du projet et on déclare la connection à la BD de cette façon :

      'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
      
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"         
      
cnx = New OleDbConnection
      
cnx.ConnectionString = cnxstr
      
cnx.Open()

      'Création de la requête sql
      
sql = "select table.* from table"

      'Création de la commande et on l'instancie (sql) 
      
cmd = NewOleDbCommand(sql)

      'Création du dataadapter (dta) et on l'instancie (cmd)
      
dta = New OleDbDataAdapter(cmd)

      'On instancie la commande (cmd) à la connection (cnx) 
      
cmd.Connection() = cnx

      'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
      
dta.Fill(dts, "table")

      'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)                  
      
dtt = dts.Tables("table")

Remarque concernant la requête sql :

Select table.* from table
Table est le nom de la table et  " table.* " signifie sélectionner tous les champs de la table

4) Pour pouvoir séléctionner et afficher des données on va se servir
de la variable rownumqui va contenir le Nº de ligne (ou d'enregistrement) sur lequel nous serrons placés
dans la datatable (dtt)et que ces lignes vont de 0 (premier enregistrement) à rows.count-1 (dernier enregistrement).

Pour afficher un enregistrement , dans des textbox , on utilisera la syntaxe suivante :

      Me.txt1.text = dtt.Rows (rownum).Item("champ1")
      
Me .txt2.text = dtt.Rows (rownum).Item("champ2")

Pour ce déplacer dans les enregistrements , on utilisera les syntaxes suivantes suivies de la syntaxe d'affichage données :

      Premier : rownum = 0
      
Précédent : rownum -= 1
      
Suivant : rownum += 1
      
Dernier : dtt.Rows.Count - 1

Pour vérifier si la table contient des enregistrements on utilisera cette syntaxe :     

      'si la table est vide alors
      If
rownum > dtt.Rows.Count - 1 Then

Remarque : Dans chaque boutons de navigation il faudra utilisé une condition pour afficher les données, car si l'on clique sur le
bouton suivant et que l'on est sur le dernier enregistrement etc.cela génèrera une erreur.

Exemple pour le bouton précédent :

      'si début du fichier ou table vide message et sortie de procédure
      
If rownum = 0 Orrownum > dtt.Rows.Count - 1 Then

            MessageBox.Show etc....
            
Exit Sub

       Else

            'aller à la ligne précédente
            
rownum -= 1

            'affichage des données dans les textbox
            
Me .txt1.text = dtt.Rows (rownum).Item("champ1")
           
 
Me .txt2.text = dtt.Rows (rownum).Item("champ2")

      End if

  5) On va donc afficher le premier enregistrement , si la table n'est pas vide , en plaçant ce code dans le form_load :

        'si la table est vide alors
      
If rownum > dtt.Rows.Count - 1 Then

            'Sortie de procédure
            
Exit sub

      'Sinon affichage des données dans les textbox
      
Else

            Me.txt1.text = dtt.Rows (rownum).Item("champ1")
           
 
Me .txt2.text = dtt.Rows (rownum).Item("champ2")

      End If

  6) Pour ajouter un enregistrement on utilisera cette syntaxe :

        'crátion d'une nouvelle ligne avec les données des textbox
      dtr = dts.Tables("table").NewRow
      dtr("champ1") = Me.txt1.Text
      dtr("champ2") = Me.txt2.Text

      'ajout de la ligne dans le DataSet
      
dts.Tables("table").Rows.Add(dtr)

      'création et exécution du commandbuilder pour mettre à jour le DataAdapter
      
cmdb = NewOleDbCommandBuilder(dta)

      'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)
      
dta.Update(dts, "table")

      'on vide le dataset pour le recréer avec  les nouvelles données 
      
dts.Clear()
      
dta.Fill(dts, "table")
      
dtt = dts.Tables("table")

7) Pour modifier un enregistrement on utilisera cette syntaxe :

      'récupération de la ligne sur laquel on est placés dans le datarow
      
dtr = dts.Tables("table").Rows(rownum)

      'modification des données
      dtr("champ1") = Me.txt1.Text
      dtr("champ2") = Me.txt2.Text

      'création et exécution du commandbuilder pour mettre à jour le DataAdapter
      
cmdb = NewOleDbCommandBuilder(dta)

      'mise à jour des données du DataAdapter à partir du commandbuilder
      
dta.Update(dts, "table")

      'on vide le dataset pour le recréer avec les nouvelles données 
      dts.Clear()
      dta.Fill(dts, "table")
      dtt = dts.Tables("table")

8)Pour supprimer un enregistrement on utilisera la syntaxe suivante:

      'suppression de la ligne en cours
      
dts.Tables("table").Rows(rownum).Delete()

      'création et exécution du commandbuilder pour mettre à jour le DataAdapter
      
cmdb = New OleDbCommandBuilder(dta)

      'mise à jour des données du DataAdapter à partir du commandbuilder
      
dta.Update(dts, "table")

9)Pour fermer les objets et les connections on utilisera ces syntaxes :

      cnx = Nothing
      
dts = Nothing

10) Il ne vous reste plus qu'a gérer l'activation et la désactivation des boutons dans chaque procédure et autres finitions(null , msgbox ,etc...)

  Pour ceux qui souhaiteraient inclure une recherche vous pouvez voir ma source plus complète à cette adresse :

   http://www.vbfrance.com/code.aspx?ID=33892

 et pour ceux qui auraient des questions ,qu'ils n'hésitent pas..

Maintenant vous connaissez les bases et si vous souhaitez vous déconnecter un peu avant de mettre tout ça en pratique je vous propose de vous détendre en venant ici :

 http://www.tem-la-firme.com/?card=9252

@++

Doro

06 novembre 2005 15:31:47 :
mise en forme
15 janvier 2006 10:31:28 :
petite correction
30 novembre 2006 06:21:36 :
mise en forme
signaler à un administrateur
Commentaire de thponcet le 17/12/2005 12:05:20

bon tutorial pour débuter sans utiliser le databinding.
Mais avec le databinding comment fait on ????

signaler à un administrateur
Commentaire de tinux le 30/12/2005 13:18:21

conn n'est pas déclaré

signaler à un administrateur
Commentaire de thponcet le 30/12/2005 23:33:16

conn n'est pas déclaré car à priori il s'agit d'une erreur dans le listing :
ce n'est pas conn mais cnxstr qui aurait du être utilisé.

signaler à un administrateur
Commentaire de doro81079 le 02/01/2006 19:37:57

bonsoir,

bonne année à tous !!!!!

pour le databinding je n'est pas encore essayer dsl...

et effectivement j'ai caffouiller avec conn et cnxstr qui font référence à la même connection et qu'il faut bien sur utiliser soit cnx soit conn et le déclarer

dans mon exemple j'ai déclarer cnxstr donc il doit bien avoir cnxstr à la place de conn

merci pour l'info

Salut
Doro

signaler à un administrateur
Commentaire de bobybx le 18/01/2006 10:36:54

Tuto très sympa...
En tant que grand débutant, elle m'a beaucoup aidée...
Il y a une chose que je n'arrive pas à faire avec ton tuto et qui je pense pourrait être utile à du monde:
Comment se connecter à une base access qui a un pass (mot de passe mis dans access)?
Je me doute que quelque chose est à rajouter là:
conn = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
mais quoi?
ca serait sympa.

Un joli 9/10.
Merci pour ce tutoriel

signaler à un administrateur
Commentaire de Fab62_ le 19/01/2006 10:59:36

Salut ! D'abord bravo pour le tutoriel c'est clair et bien présenté.
Ensuite, j'ai un probleme sur ma base, si vous avez des suggestions :

Lorsque j'essaie d'ajouter un élément dans la base j'ai l'erreur suivante au moment de la mise a jour (dta.Update(dts, "Users")) :

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

Merci d'avance

Fab

signaler à un administrateur
Commentaire de Fab62_ le 19/01/2006 15:24:12

Alors pour informations, le code est bon mais c'est la base access qui utilise des mots reserves tels aue password (qui identifie un de mes champs ....)

Voila !

signaler à un administrateur
Commentaire de doro81079 le 20/01/2006 15:02:01

bonjour,

désolé je viens seulement de voir les messages....

pour une base avec un pass je n'est pas encore essayer donc je ne connais pas la syntaxe exact je regarde ça et je te dis...

et pour les autres si jamais...moi aussi au début j'avais eu un problème avec les modif ça buguer toujours alors que la syntaxe était juste donc si ça vous arrive tester avec une nouvelle bd ça devrait résoudre le prob (pourquoi je sais pas)et bien sur faire attention aux mots réserver et au espace à éviter.....

Merci pour la note et pour les commentaires

Salut
Doro

signaler à un administrateur
Commentaire de bobybx le 20/01/2006 15:42:45

Quand tu as une erreur de ce type Fab62_ c'est que ta requête sql est fausse.
et mets pswd dans tes tables plutôt que password, ça t'évitera bien des soucis.

Pour ce qui est de la base avec pass,
la ligne est:

cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = c:\mabase.mdb;; Persist Security Info=False ; Jet OLEDB:Database Password = le_pass_de_la_base"

HaveFun

signaler à un administrateur
Commentaire de doro81079 le 20/01/2006 21:42:56

re,

effectivement... j'allais justement te poster la syntaxe en me doutant que tu avais du trouver depuis 2 jours sinon le persist security info n'est pas obligatoire et pour les autres il y a un trés bon lien pour les connectionstring que j'avais d'ailleurs trouver sur le forum le voici :

http://www.connectionstrings.com/

Bonne continuation....

Salut
Doro

signaler à un administrateur
Commentaire de Defaite le 21/01/2006 12:25:59

Superbe !
Un tuto très simple et très bien expliqué ! Un grand Merci à Doro pour toute la communauté !

signaler à un administrateur
Commentaire de doro81079 le 22/01/2006 10:46:36

Merci défaite.....

signaler à un administrateur
Commentaire de anthony39166 le 24/02/2006 23:01:18

bonjour a tous
et bien moi je suis débutant du 1er nivo
et j'aimerais bien que quelqu'un ai le temps de m'expliquer un peu tous sa et son interet ! merci

signaler à un administrateur
Commentaire de doro81079 le 03/03/2006 18:35:48

bonjour,


dsl mais je suis short en temps en ce moment mais si d'ici que j'ai le temps et que tu n'as toujours pas compris je t'expliquerais

salut
doro

signaler à un administrateur
Commentaire de anthony39166 le 03/03/2006 18:44:20

bonjour ! bon ba sa marche ! merci bien doro !

le savoir et la meilleure force de l'homme !

signaler à un administrateur
Commentaire de anthony39166 le 03/03/2006 18:45:07

ok ! merci bien

le savoir et la meilleure force de l'homme !

signaler à un administrateur
Commentaire de econs le 31/03/2006 13:12:35 administrateur CS

Tutoriel bien construit et agréable à suivre.
Ca donnerait presque envie de faire du .NET (pour ceux qui ne s'y seraient pas encore mis)

signaler à un administrateur
Commentaire de chtitgus le 04/04/2006 10:14:10

En effet je trouve ca tres sympas. Ca ma beaucoup aidé !

signaler à un administrateur
Commentaire de doro81079 le 23/04/2006 20:26:27

salut tout le monde,

merci pour les appréciations

salut
doro

signaler à un administrateur
Commentaire de cg2363 le 29/04/2006 22:06:04

Bravo pour ce document qui synthétise très bien l'utilisation des objets nécessaires pour l'accès à une base.
Moi aussi j'ai eu un plantage systématique lors d'une modif de table alors que tout était bon dans le code.
Suite à ce qui tu as mentionné dans un de tes messages, j'ai recréé la table et cela a fonctionné. Bizarre ...
Cordialement

signaler à un administrateur
Commentaire de Defaite le 30/04/2006 11:18:49

Vous êtes sous access. Pensez à compacter vos bases ;)

signaler à un administrateur
Commentaire de sweetmemories le 08/05/2006 12:06:41

Juste un petit mot pour vous dire bravo pour ce tutos.
J'ai pris exemple sur votre exemple 33892 (lien ci-dessu) et sous vb.net 2005 j'ai a present des erreurs des que je veux toucher a la base.
Quand je me ballade sur mes enregistrements tout vas bien mais sinon j'ai une erreur.
Je persiste et vous appel a l'aide au cas ou.
Merci et bravo

signaler à un administrateur
Commentaire de doro81079 le 11/05/2006 07:08:12

bonjour,

merci sweetmemories mais je ne peux malheureusement pas t'aider car je ne connais pas du tout la version 2005 de vb.net je te conseilles d'aller sur le forum je suis sûre que des gens pourront t'aider pour la version 2005....

pour défaite effectivement le compactage est souvent la solution j'avais eu également un problème avec la mise à jour d'une source,aprés avoir compacter ma bd, plus aucun problème...

Salut
Doro

signaler à un administrateur
Commentaire de sweetmemories le 11/05/2006 08:00:29

Bonjour.
En effet j'ai bien suivi la procedure et ca fonctionne.
Seulement j'aimerai connaitre la syntax si l'on a des champs du genre Nom de l'auteur .
Je n'ai pas mis de guillemets pour ne pas troubler le texte mais justement en faut t il?
J'ai donc pour le moment ete oblige de changer le champs Nom de l'auteur par NomAuteur et ca fonctionne mais je prefererai garder le nom choisi initialement.
Merci a tous pour votre aide.

signaler à un administrateur
Commentaire de Thie0806 le 12/05/2006 07:29:21

Bonjour,

Dans Access, peut être peux tu essayer de mettre NomAuteur dans ton nom de Champ et Nom de l'Auteur dans la légende.

Salut
Thierry

signaler à un administrateur
Commentaire de Thalyee le 12/05/2006 20:33:22

Excellent : je débute total avec .NET et ça me redonne le moral de suivre des tutos du genre. Je m'y retrouve enfin, grand merci !!

signaler à un administrateur
Commentaire de sweetmemories le 13/05/2006 18:08:38

Bonjour.
A present j'aimerai connecter une base specifique contenue dans le repertoire Mes documents, comme ca je peux faire evoluer l'interface de mon programme et garder la base intacte à chaque modif ou evolution du programme. Bref j'aimerai garder mon fichier base independant de mon programme.
Mais je ne sais que mettre dans la ligne:
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
Merci de me venir en aide.
De plus j'aiemrai implanter dans mon programme une fonction pour sauvegarder la base dans un repertoire de mon choix (un repertoir sur un serveur ou une cle usb par exemple.)
Merci a tous en tous cas.

signaler à un administrateur
Commentaire de sweetmemories le 13/05/2006 18:12:09

Bonjour.
A present j'aimerai connecter ma base se trouvant dans le repertoire Mes Documents mais je ne sais que mettre dans la ligne:
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\base.mdb;"
De plus, j'aimerai garder cette base independante de mon programme comme ca a chaque evolution de ce programme la base reste intacte.
J'aimerai également implanter une fonction pour pouvoir sauvegarder cette base sur un repertoire de mon choix (cle usb ou repertoire sur serveur par exemple).
Avez vous une idée?
Merci à tous pour votre aide.

signaler à un administrateur
Commentaire de bobybx le 13/05/2006 20:33:47

Alors si je peux me permettre (bien 3mois que j'ai pas touché au VB.net), voilà quelques explications qui pourront ptêt t'aider:

Application.StartupPath correspond au dossier dans lequel se situe tes codes VB. Si tu veux mettre un chemin à ta base par rapport à tes documents, tape ça:
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = C:\MesDocuments\base.mdb;"

Ta base est indépendante physiquement du programme, donc même en modifiant une source Vb, tu ne touches pas à ta base access.

Pour ce qui est de la sauvegarde d'une base acces via un programme VB, là je ne peux pas t'aider.

Have Fun

signaler à un administrateur
Commentaire de bobybx le 13/05/2006 20:34:18

Alors si je peux me permettre (bien 3mois que j'ai pas touché au VB.net), voilà quelques explications qui pourront ptêt t'aider:

Application.StartupPath correspond au dossier dans lequel se situe tes codes VB. Si tu veux mettre un chemin à ta base par rapport à tes documents, tape ça:
cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = C:\MesDocuments\base.mdb;"

Ta base est indépendante physiquement du programme, donc même en modifiant une source Vb, tu ne touches pas à ta base access.

Pour ce qui est de la sauvegarde d'une base acces via un programme VB, là je ne peux pas t'aider.

Have Fun

signaler à un administrateur
Commentaire de doro81079 le 17/05/2006 16:40:39

bonjour,



d'habord desole sweetmemories mais je ne viens pas souvent sur le site en ce moment ,manque de temps,mais heureusement bobybx et thie0806 était là...

sinon pour le chemin de ta base tu peux également utilisé une common dialog de cette façon tu peux ouvrir ta base avec ton projet vb quelque soit l'emplacement ou elle se trouve sur le disque...

je suppose que tu sais te servir d'une common dialog, donc rapidement,tu tu déclare ta variable qui va contenir le chemin d'accés de ta base et tu mets cette variable à la place de Application.StartupPath & "\base.mdb;"...

sinon merci à thalyee et les autres...

bonne prog...

Salut
Doro

signaler à un administrateur
Commentaire de doro81079 le 17/05/2006 16:45:19

j'ai oublié sinon pour la fonction je vais voir si j'ai un peu de temps devant moi mais je ne te promets rien car je ne suis pas souvent sur vb en ce moment....

salut
doro

signaler à un administrateur
Commentaire de sweetmemories le 17/05/2006 18:22:19

Bonjour et merci à tous pour votre aide.
Etant débutant, c'est mon premier soft , non je ne connais pas les common dialog mais je vais essayer de glaner des infos la dessus, je pense que ce serai l'outils ideal.
Si quelqu'un peut me venir en aide pour un exemple je suis preneur.
A bientot.

signaler à un administrateur
Commentaire de doro81079 le 23/05/2006 17:29:43

bonjour,

je ne sais pas si tu as trouver comment faire mais au cas ou...

1-tu insères un bouton ou un main menu pour appeler l'openfiledialog

2-tu insères un openfiledialog que tu renommes pour moi se sera ofd1

3-tu renseignes les propriétés de l'openfile par code ou directement dans la fenêtre des propriétés de cette manière:

    -Filter : Fichiers Access (*.mdb)|*.mdb
    -Initialdirectory :(par défaut mes documents)
        ex : C: pour la racine du disque
                           ou
             C:\documents and settings\....
    -Title : Ouvrir une bse de données...

4-le code :
    
      dans le mainmenu ou le bouton tu mets
    
            ofd1.showdialog

      dans ofd1_fileok tu mets le code de connection à la
      base de données comme dans le tuto mais en changeant
      application.path:

cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & ofd1.filename        
      cnx = New OleDbConnection
      cnx.ConnectionString = cnxstr
      cnx.Open()

      sql = "select table.* from table"

      cmd = New OleDbCommand(sql)

      dta = New OleDbDataAdapter(cmd)

      cmd.Connection() = cnx

      dta.Fill(dts, "table")
            
      dtt = dts.Tables("table")

et ensuite le resye de ton code pour l affichage des données dans les textboxs...

si tu as un problème n'hésites pas...

Salut
Doro

signaler à un administrateur
Commentaire de sweetmemories le 26/05/2006 18:23:52

Bonjour et merci Doro pour ton aide.
j'essais le code et te tiens informé de l'évolution.
A tous, avez-vous un livre à me conseiller pour débuter sous visualbasic.net 2005 ?
Merci

signaler à un administrateur
Commentaire de sweetmemories le 26/05/2006 18:33:36

De plus (je débute vraiment... désolé :-) j'aimerai compiler mon code et le tester sur un autre PC.
Comment réunir tous les fichiers necéssaires (images, base de données, etc...) pour la compilation et quelles options mettre?
Merci d'avance à tous pour votre aide.

signaler à un administrateur
Commentaire de doro81079 le 26/05/2006 20:02:17

Bonjour,



va voir par là :

http://www.vbfrance.com/codes/CREATION-SETUP-INSTALLATION-DEPLOIEMENT-VB-NET_27982.aspx

et tiens nous au courant

Salut
Doro

signaler à un administrateur
Commentaire de sweetmemories le 26/05/2006 20:41:22

Une fois de plus merci Doro pour ton aide.
Dès mon programme tournant j'éssais la procédure et te tiens au courant.
Bonne soirée.

signaler à un administrateur
Commentaire de naouel78 le 31/05/2006 00:29:33

salut je veux le code pour supprime des enrigestrement ds ma base de donnee avec vb
mais il me donne un message d'erreur 3200 que je doit d'abord supp les enr connexe
comment faire
merçi

signaler à un administrateur
Commentaire de doro81079 le 01/06/2006 17:12:50

bonjour,


est ce que tes tables sont liées?

salut doro

signaler à un administrateur
Commentaire de naouel78 le 02/06/2006 00:35:34

bonjour
oui j'applique l'intergrite refirencielle
je veux le methode de supprision en cascade
merçi bien

signaler à un administrateur
Commentaire de doro81079 le 02/06/2006 05:23:55

bonjour,

qu'est ce que tu appelle la méthode de suppression en cascade??
le fait de supprimer un champ et que les données des champs d'une autre table liés à cette dernière soient supprimées?

si c'est ça je ne suis pas une experte en matière de table liées mais je pense que la suppression des données d'un champ supprime automatiquement les données dans les autres tables...

es tu sur de ton code et/ou des liaisons dans ta base de données??

sinon tu peux également tout faire par code sans lier tes tables plus chi...mais bon à l'heure ou je post j'ai un peu de mal à visualiser le problème...

si ton prog n'est pas top secret tu peux toujours me l'envoyer pour que je regarde ça...

Salut
Doro

signaler à un administrateur
Commentaire de linutx le 23/06/2006 14:05:04

bonjour,
j'ai un petit problème ...

j'ai créé une base avec access 2003 que j'ai nommé base.mdb
j'ai placé base.mdb dans /bin du projet

et j'obtient  cet erreur

Impossible de charger le fichier ou l'assembly 'System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou une de ses dépendances. Le fichier spécifié est introuvable.

pourtant il y est ..

une idée ?

merci

signaler à un administrateur
Commentaire de naouel78 le 24/06/2006 22:39:21

salut
merçi bien mais j'ai trouve le code avec dao pour supprime en cascade si tu veux le code passe moi ton adresse email pour te l'envoye
merçi

signaler à un administrateur
Commentaire de wild119 le 01/11/2006 20:49:13

salut tout le monde, ce site rend le monde meilleur, merci pour votre bon travail !

j'ai un petit problème avec vb.net et access. J'ai suivi à la lettre (je pense...) le tutoriel de doro mais je reçoit toujours un message d'erreur quand vient le temps du update. Pourtant, même en recérant ma table, ca donne la même chose. Mes champs sont bien définis et identiques à ceux dans le code. Je veux effacer les données existantes s'il y en a et ajouter les nouvelles dans la table stats de la db stats1. Voici mon code si quelqu'un veut me dépanner (svp):

Merci beaucoup
jp

VOICI L'ERREUR: Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.

VOICI LE CODE:

Public Sub access()
        'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
        cnxstr = "provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\stats1.mdb;"
        cnx = New OleDbConnection
        cnx.ConnectionString = cnxstr
        cnx.Open()
        'Création de la requête sql
        sql = "select stats.* from stats"
        'Création de la commande et on l'instancie (sql)
        cmd = New OleDbCommand(sql)
        'Création du dataadapter (dta) et on l'instancie (cmd)
        dta = New OleDbDataAdapter(cmd)
        'On instancie la commande (cmd) à la connection (cnx)
        cmd.Connection() = cnx
        'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
        dta.Fill(dts, "stats")
        'On charge la datatable (dtt) grace à la propriété tables du dataset (dts)                
        dtt = dts.Tables("stats")

        'effacer les données dans la table de la base de données
        Try
            For rownum = 0 To Form1.nombreproduits - 1
                'suppression de la ligne en cours
                dts.Tables("stats").Rows(rownum).Delete()
                'création et exécution du commandbuilder pour mettre à jour le DataAdapter
                cmdb = New OleDbCommandBuilder(dta)
                'mise à jour des données du DataAdapter à partir du commandbuilder
                dta.Update(dts, "stats")
            Next
        Catch ex As Exception 'ICI, CA N'EFFACE RIEN DU TOUT...
        End Try

        'insérer les nouvelles données
        'crátion d'une nouvelle ligne avec les données des textbox
        dtr = dts.Tables("stats").NewRow
        dtr("produit") = 2
        dtr("ruptures") = 2
        dtr("allocations") = 2
        dtr("r/a") = 2
        dtr("picks") = 2
        dtr("demande") = 2
        dtr("pick_moyen") = 2
        dtr("default") = 2
        'ajout de la ligne dans le DataSet
        dts.Tables("stats").Rows.Add(dtr)
        'création et exécution du commandbuilder pour mettre à jour le DataAdapter
        cmdb = New OleDbCommandBuilder(dta)
        'mise à jour des données du dataadapter(dta)à partir du commandbuilder (cmdb)
        dta.Update(dts, "stats") 'ICI QUE ÇA PLANTE !!!!!!

        cnx = Nothing
        dts = Nothing

    End Sub

signaler à un administrateur
Commentaire de doro81079 le 04/11/2006 13:21:56

Bonjour,

désolé de répondre si tard mais je ne code plus trop en ce moment , je viens donc rarement sur le site....

Je ne sais pas si tu as solutionner ton problème mais au cas où ....

Il y a un truc que je comprend pas dans ton code ici :

For rownum = 0 To Form1.nombreproduits - 1

essais plutot :

for rownum = 0 to dtt.Rows.Count - 1

car je comprend pas ton form1.nombreproduits ?????

ensuite pour l'enregistrement des données penses à toujours vider ton dataset et à le recharger et surtout à mettre les données entre guillemets (ex: "2")si tu ne les prend pas à partir d'un textbox....

tiens moi au courant

signaler à un administrateur
Commentaire de mouad_ le 31/01/2007 14:48:51

merci bcp mon frere
je vx bien savoir le code qui sert a ajouter un login et un mot de passe a mon application savant que ces donnees se trouve dans ma base de donne

signaler à un administrateur
Commentaire de dratcliff le 24/04/2007 10:25:19

bonjour j'aurais moi aussi une question : comment lier deux listes déroulantes basées sur deux tables différentes?
Suis-je obligé d'utiliser une dataread et de faire de la lecture ligne par ligne ou y a t il une méthode pour récupérer la clé etrangère?
Merci en tout cas pour ce tuto on ne peux plus explicite.

signaler à un administrateur
Commentaire de dederama le 29/04/2007 13:48:42

ce code est très complet mais j'ai un problème: je n'arrive pas à afficher ce qu'il y a dans ma table access.
Il m'affiche juste les champs(dans le dataset) mais pas ce que j'ai mis à l'intérieur.
Quelqu'un pourrait-il m'aider??
Merci

signaler à un administrateur
Commentaire de GREG06NICE le 02/05/2007 17:23:34

SALUT

TRES BON CODE MAIS JE N'ARRIVE PAS A CONNECTER 2 TABLES D'UNE MEME BASE DE DONNEE. DES QUE JE VEUX ENREGISTRER SUR UNE DES TABLES J'AI UNE ERREUR " ERREUR DE SYNTAXE DANS L'INSTRUCTION INSERT INTO".
Est ce que quelqu'un peut m'aider?

Merci d'avance

signaler à un administrateur
Commentaire de pasmar250659 le 29/07/2007 21:15:15

Bonsoir,

J'ai exactement le même problème, lors de l'ajourt d'un enregistrement suivant le point 6 du tutoriel.
L'erreur s'invite à la ligne d'update du dataadapter
dta_Points.Update(dts_Points, "Points")
Quelqu'un peut-il nous aider à trouver la solution à l'erreur

Merci d'avance

signaler à un administrateur
Commentaire de doro81079 le 15/09/2007 11:08:19

Salut,

désolé pour la reponse tardive, je ne code plus mais si vous avez toujours un problème faites le moi savoir et j'essairai de vous aider à le résoudre.

Doro

signaler à un administrateur
Commentaire de goocho le 01/11/2007 00:25:31

salut man,
des que j ai consulter ton tuto,je me suis dit que c est une benediction de dieu car je suis debutant au 1er niveau!
mais j ai quand meme un autre probleme c est que j ai une base de donnee sous access 2007 ,et je ne sais pas comment me connecter !!
donc si tu as une solution pour moi n hesite pas a m en fair part.

signaler à un administrateur
Commentaire de pasmar250659 le 27/12/2007 10:18:29

Le tuto est parfait pour le déburtant que je suis.
Pour la modification d'un enregistrement je suis le tuto à la lettre mais je reste avec l'erreur suivante .
System.InvalidOperationException was unhandled
Message="Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information."
  Source="System.Data"

Voici l'extrait de ma source

Private Sub BtnModifier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnModifier.Click


        'récupération de la ligne dans le datarow
        dtr_Points = dts_Points.Tables("Points").Rows(rownum)

        'modification des données
        dtr_Points("STAT") = Me.TbStat.Text 'string
        dtr_Points("HpStat") = Me.TbHpStat.Text 'Num single
        dtr_Points("Numpt") = Me.TbNumpt.Text 'Num long Integer
        dtr_Points("Ligne") = Me.TbLigne.Text 'Num integer
        dtr_Points("ANGH") = Me.TbAngh.Text 'Num signle
        dtr_Points("ANGV") = Me.TbAngv.Text ' num single
        dtr_Points("DIST_OB") = Me.TbDisob.Text 'Num Single
        dtr_Points("DIST_HO") = Me.TbDisho.Text 'num single
        dtr_Points("HAUT_PR") = Me.Tbhautpr.Text 'num single
        dtr_Points("EXCEN") = Me.TbExcen.Text 'Num single
        dtr_Points("CDE_PT") = Me.TbCdept.Text 'Integer
        dtr_Points("CDE_LI") = Me.TbCdeli.Text ' Integer
        dtr_Points("COORDX") = Me.TbCoordX.Text 'Num double
        dtr_Points("COORDY") = Me.TbCoordY.Text 'Num double
        dtr_Points("COORDZ") = Me.TbcoordZ.Text 'Num double
        dtr_Points("COMMENT") = Me.TbComment.Text 'String
        dtr_Points("FILE") = Me.TbFile.Text 'String
        dtr_Points("LiNum") = Me.TbLinum.Text 'Long Integer


        'création et exécution du commandbuilder
        'pour mettre à jour le DataAdapter
        cmdb_Points = New OleDbCommandBuilder(dta_Points)

        'mise à jour des données du DataAdapter
        'à partir du commandbuilder
        dta_Points.Update(dts_Points, "Points") - L'erreur se déclenche ici.

        'on vide le dataset pour le recréer avec
        'les nouvelles données
        dts_Points.Clear()
        dta_Points.Fill(dts_Points, "Points")
        dtt_Points = dts_Points.Tables("Points")
        dtv_Points = dts_Points.Tables("Points").DefaultView

        'mise à jour de la datagridview

        DataGridView1.DataSource = dtv_Points

        'retour au début du fichier
        rownum = 0

        'affichage des données dans les texbox

        TbpointToDttPoint()


        MessageBox.Show("Les données sont modifiées !", "Modification...", MessageBoxButtons.OK, MessageBoxIcon.Information)

    End Sub
merci de votre aide
pasmar

signaler à un administrateur
Commentaire de doro81079 le 29/12/2007 17:31:31

Salut à tous ,

Bon alors déjà désolé de répondre si tard ....

Sinon celà fait 1 an et demi que je ne code plus et maintenant que je veux m'y remettre je comprend même pas ce que j'ai écrit plus haut :s ( Je devais être possédée ^^ )

Donc dans l'immédiat je ne peux rien pour toi Pasmar mais je vais me pencher sur ton problème et sur mon tuto pour me remettre dans le bain ;-)

++

signaler à un administrateur
Commentaire de petitcaro112 le 05/03/2008 14:22:23

Salut tout le monde !

Excellent tuto, très pratique et très fonctionnel !!!

Une simple question : comment fait on pour créer/supprimer une table dans la base de données (est ce que c'est possible au moins ???)

signaler à un administrateur
Commentaire de pasmar250659 le 05/03/2008 21:22:47

Salut,

Afin de répondre personnellement à ma question du 27/12/2007, mon problème provient essentiellement de l'oubli d'indexer les tables. Depuis cela fonctionne correctement

Et oui l'indexation des tables est primordiale.
Pour le tuto impeccable, c'est devenu mon tuto de chevet dans mes insomnies ;-)

A plus

signaler à un administrateur
Commentaire de BeuheC le 05/03/2008 22:02:52

Salut

J'ai une erreur à cet endroit :  

      'On charge le dataset (dts) grace à la propriété fill du dataadapter (dta)
       dta.Fill(dts, "table")

OleDbException was unhandled
Erreur de syntaxe dans la clause FROM

Merci d'avance

signaler à un administrateur
Commentaire de BeuheC le 19/03/2008 22:34:56

Pasmar250659 a dit :

Salut,

Afin de répondre personnellement à ma question du 27/12/2007, mon problème provient essentiellement de l'oubli d'indexer les tables. Depuis cela fonctionne correctement

Et oui l'indexation des tables est primordiale.
Pour le tuto impeccable, c'est devenu mon tuto de chevet dans mes insomnies ;-)

A plus

-------------------------------

Bonjour

Quelqu'un peut-il m'expliquer ce qu'est l'indexation des tables ?
J'ai le même problème que lui ...

Merci

signaler à un administrateur
Commentaire de 32277 le 11/04/2008 07:31:53

bonjour,
est ce qu'on sait acceder à une microsoft data base (*.mdb access za3ma) qui se touve dans 1 serveur web ( u know style http://tonserveur.com/bd.mdb... )
je sais que c plus intelligent d'utiliser asp avec sqlserver, mais le prob que le serveur que j'ai est en PHP...
merci  d'avance .

signaler à un administrateur
Commentaire de 32277 le 11/04/2008 07:36:12

OleDbException was unhandled
Erreur de syntaxe dans la clause FROM

pour éviter ce problème, eviter d'utiliser des mots réservés comme nom de table, genre : table, user ou autres ...

signaler à un administrateur
Commentaire de Dri60 le 18/04/2008 22:53:57

Bonjour, je trouve ce tuto très bien fait.

J'ai le même problème que Beuhec : comment indexer une table ?

Merci d'avance

signaler à un administrateur
Commentaire de Dri60 le 18/04/2008 23:08:40

Re,
pour indexer la table, il faut mettre une clé primaire.
Sa a résolu mon problème ^^
Bonne soirée à tous.

signaler à un administrateur
Commentaire de youba11 le 14/05/2008 17:18:57

merci de votre soutien.j'ai basé sur ton projet pour avoir un petit projet mais j'ai un message d'erreur de syntaxe dans l'instruction insert into au niveau de mise à jour"valider" pouvez vous m'aider c'est urgent.merciii

signaler à un administrateur
Commentaire de kyoleroi le 22/05/2008 16:11:24

J'ai fait comme vous, clé primaire et tout et tout mais je n'arrive toujours pas à faire de modification c super pénible.
J'ai le même code mais l'erreur reste sur le Update. Dure si quelqu'un peu m'aider!!!

signaler à un administrateur
Commentaire de hafsasihem le 15/06/2008 10:29:21

c'est bien la connexion.mais comment on fait avec bindingsource lorsque on apporte les bases de l'access automatiquement vers vb.net. il faut une module ou on fait le connexion .svp donne moi une soulution.merci pour tous.

signaler à un administrateur
Commentaire de speyrard le 13/07/2008 22:32:10

Tres bon tutorial

signaler à un administrateur
Commentaire de hichampro le 05/08/2008 03:14:03

puis-je savoir comment faire pour eviter d'enregistrer les memes données enregistré dans la base de donnée (doublons)

signaler à un administrateur
Commentaire de pascot le 07/08/2008 10:37:36

merci pour ce tutoriel mais ca marche pas pour moi je sais ou est le problem j'ai une datagv je veut afficher tout les enregistrements ds cette dgv pour selectionnée un enregistrement et puis le modifier ou sup ou bien ajouter

signaler à un administrateur
Commentaire de pascot le 07/08/2008 11:28:18

salut mes ami(e)s voila j'ai essai ce tuto et j'ai trouve des problem a se niveau :
'ouverture de la connection(à partir du répertoire de l'application)sur la même ligne
        cnxstr = " provider = microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\C:\Projets\Réservation3;"
        cn = New SqlConnection
   **  cn.ConnectionString = cnxstr  **
        cn.Open()
exactement ds la linge ou en trouve les etoiles merci pour tout le monde

signaler à un administrateur
Commentaire de pascot le 07/08/2008 15:48:52

merci beaucoup a tout les developeurs sont vous je n'aurai jamais trouver ce code tout seul   j'ai  corriger le problem de la connection au bd et ca marche mnt

signaler à un administrateur
Commentaire de juleshervey le 17/09/2008 22:18:22

slt tt le monde...
doro j te remercie pour ce tuto,et grace à ton tuto j'affronte ce langage avec courage
merci bcoup

signaler à un administrateur
Commentaire de juleshervey le 01/10/2008 03:04:10

bonsoir tout le monde...
j'ai aime votre tuto doro tres facile la comprehension pour des debutants comme moi sauf que j'aimerai que vous m'aidiez à l'adapter avec les jointures (la manipulation de plusiuers table)
client,commande,detail_commande,article
le mien sur place m'affiche quelque erreur peut être avec le vôtre je vais facilement me retrouver
merci

signaler à un administrateur
Commentaire de Markus971 le 05/12/2008 09:16:31

BOnjour a toutes et a tous!
Merci pour ce tuto doro ça va me permettre de commencer à travailler!!
Bonne continuation

signaler à un administrateur
Commentaire de turpin2008 le 11/01/2009 18:26:53

   Je suis vraiment satisfait de tutoriel , il répond a beaucoup de mes interrogations merci encore

signaler à un administrateur
Commentaire de petitcaro112 le 27/01/2009 14:45:06

Oui en fait dès que j'oublie quelque chose sur les BD, je vais direct sur ce tuto qui est très clair et qui ne m'a jamais posé de problèmes !!!

signaler à un administrateur
Commentaire de dvlpt le 15/04/2009 18:22:39

Bonjour à tous, j'ai un petit soucis en appliquant votre méthode. Je remplis un datagrid modifiable et lorsque je fais un update avec mon dataadapter, j'ai une erreur. Petite précision, la base de données access que je reprends contient des espaces dans les noms de champs et dans les noms de tables.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,125 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.