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 : 29 808 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 (73)
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