Connection a une base ODBC avec VB 2005

neurone84 Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 12 octobre 2009 - 30 nov. 2006 à 15:15
neurone84 Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 12 octobre 2009 - 1 déc. 2006 à 10:04
Bonjour,

J aimerais me connecter a une base ODBC pour pouvoir y lire des donnes que je veux afficher dans des textbox.
J ai bien compris que pour me connecter il me fallais utiliser ADO, j ai donc creer un bouttons dans mon document et lui est ajouter le code des READER.
Il ne me reste plus (je l espere) qu a me connecter a cette base a l aide du login et du mot de passe que l utilisateur aurra entrer ... et c est la que je ne sais absolument pas faire (je commence en VB pour depanner ma carriere (le patron en a besoin, et moi j ai besoin de sous pour manger :( )).
QQ peux t il me donner un tuyau ?

Merci d avance

3 réponses

sadok_sa Messages postés 21 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 7 mai 2009
30 nov. 2006 à 16:17
slt<!--[endif]-->

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

      Imports System
      Imports
System.Data
      Imports
System.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
      Private
cnx As OleDbConnection

       'Déclaration
de la variable pour la commande 
      Private cmd As OleDbCommand

      'Déclaration
de la variable pour le dataadapter

      Private dta As OleDbDataAdapter
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

      'Déclaration
de la variable pour le dataset

      PrivatedtsAs NewDataset

      'Déclaration
de la variable pour la requête

      Private sql As String

      'Déclaration de la variable pour la datatable

      Private dtt
As DataTable

      '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 As String

      'Déclaration de la variable pour le commandbuilder
      Private cmdbAs
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 = 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,
"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 rownum qui 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 Or rownum > 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 = New OleDbCommandBuilder(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 = New OleDbCommandBuilder(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…..)

[:D]
0
neurone84 Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 12 octobre 2009
30 nov. 2006 à 17:31
Super, ca c est de la reponse :)
Merci bcp, je test ca des demain matin (ca va me prendre du temps) ... En tout les cas merci bcp du temps que vous avez pris et de votre pedagogie :)
0
neurone84 Messages postés 3 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 12 octobre 2009
1 déc. 2006 à 10:04
Apres quelques essait, voici une autre question qui se pose a moi :

Le but est de ce connecter a une base DB2 se trouvant dans ODBC, ici il faut indiquer le chemin de la base en dur (j aurrais aimer une possibilite de pouvoir entrer un mot de passe et un login de meme) ...

Pouvez vous (SVP) m aider de nouveau, je penses que pour afficher dans une textbox, votre code est tout a fait bon.

voici peut etre une meilleur explication en image de se que je veux faire :
L utilisateur se connecte avec son login et password, selon les parametre qu il a entrer dans la part "your contract" il  va voir les informations apparaitre dans les autres champs :

De noiuveau : Merci bcp
0
Rejoignez-nous