Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1130 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Manipulation de BD Access avec Visual Basic [edit : + onglets]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Manipulation de BD Access avec Visual Basic [edit : + onglets]

n°127780
Jerome
Posté le 18-04-2002 à 12:32:17  profilanswer
 

Salut,
 
je suis actuellement en stage et j'ai besoin d'utiliser Visual Basic pour manipuler des bases de données Access. Pour moi l'idéal serait de pouvoir faire avec visual basic des requetes avec la syntaxe SQL sur les BD Access. Donc j'aimerai savoir si c possible, et si oui quelle méthode utiliser... j'aimerais éviter d'utiliser ODBC etc... juste charger les fichiers Access et faire des requete dessus...
 
donc si vous pouviez m'éclairer, me dire si c possible, me mettre sur des pistes ca serait cool :)
 
merci d'avance ! :)

 

[jfdsdjhfuetppo]--Message édité par Jerome le 21-04-2002 à 14:03:32--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 18-04-2002 à 12:32:17  profilanswer
 

n°127781
mareek
Et de 3 \o/
Posté le 18-04-2002 à 12:34:17  profilanswer
 

C'est possible.
 
j'ai pas le temps de t'expliquer maintenant, mais dès que j'ai le temps (apres avoir bouffé), je te donnerai un peu plus d'infos (en gros, il faut utiliser les ADO).

 

[jfdsdjhfuetppo]--Message édité par mareek--[/jfdsdjhfuetppo]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°127783
Jerome
Posté le 18-04-2002 à 12:37:13  profilanswer
 

ok, merci, ca serait pas mal que tu m'expliques en 2 mots le principe :)
 
c lourd a mettre en oeuvre ou pas ?

n°127982
Jerome
Posté le 18-04-2002 à 16:07:13  profilanswer
 

hop ;)

n°128005
mareek
Et de 3 \o/
Posté le 18-04-2002 à 16:31:35  profilanswer
 

Première chose, dans les références de ton projet, ajoute les 2 bibliothèques suivantes:
-Microsoft ActiveX Data Objects 2.x Libray
-Microsoft ActiveX Data Objects Recorset 2.x Libray
 
ensuite:
 

  • pour se connecter :


dim m_AdoCnn As adodb.Connection
Set m_AdoCnn = New adodb.Connection
m_AdoCnn.Provider = "Microsoft.Jet.OLEDB.4.0"
m_AdoCnn.ConnectionString = dbName
m_AdoCnn.CursorLocation = adUseNone
m_AdoCnn.Open

 
 
dbname est le chemin du fichier mdb (ex: "c:\temp\base.mdb" )
 

  • pour faire un select:


Dim qry as string
Dim rs As New adodb.Recordset
   
qry = "select * from table"
rs.Open qry, m_AdoCnn, adOpenDynamic, m_ADOLockType, adCmdText
   
While Not rs.EOF
  ....
  nom=rs(Nom)
  'lecture du recordset
  ...
  rs.MoveNext
Wend
rs.Close

 
pour la signification des attributs de la fonction rs.open, reporte toi à l'aide de VB
 

  • pour faire une requète de type action(ici un delete):


m_AdoCnn.Execute "delete from table where nom='marcel'"
 
 
si c'est pas tres clair, n'hésite pas à me poser des questions et à regarder dans l'aide de VB.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°128066
Jerome
Posté le 18-04-2002 à 17:52:58  profilanswer
 

ah ben merci bcp ! :) c exactement ce que je voulais :)
 
mais je v en profiter pour te poser qques questions :)
dans les librairies dispos, j'en ai plusieurs du type :
Microsoft ActiveX Data Objects 2.x Libray  
je prends laquelle, la Microsoft ActiveX Data Objects 2.7 Libray  ? ou alors ca ne change rien ?
 
sinon, comment puis-je récupérer dynamiquement la liste des tables d'une base Access puis la liste des champs d'une table ?
 
et pour finir, est-il possibile de faire des applications utilisant des onglets avec Visual Basic, j'imagine que oui mais je ne sais pas quel composant il faut charger ni comment l'utiliser ;)
 
en tout cas merci, c vraiment sympa de ta part de m'aider :)

n°128081
mareek
Et de 3 \o/
Posté le 18-04-2002 à 18:26:48  profilanswer
 

Jerome a écrit a écrit :

ah ben merci bcp ! :) c exactement ce que je voulais :)
 
mais je v en profiter pour te poser qques questions :)
dans les librairies dispos, j'en ai plusieurs du type :
Microsoft ActiveX Data Objects 2.x Libray  
je prends laquelle, la Microsoft ActiveX Data Objects 2.7 Libray  ? ou alors ca ne change rien ?



 
oui, prends la dernière, si j'ai écris 2.x c'est que ça peut varier selon ta version de windows.
 

Citation :


sinon, comment puis-je récupérer dynamiquement la liste des tables d'une base Access puis la liste des champs d'une table ?


 
désolé, je sais pas faire. d'ailleurs, je suis pas sur que ça soit possible.
 

Citation :

et pour finir, est-il possibile de faire des applications utilisant des onglets avec Visual Basic, j'imagine que oui mais je ne sais pas quel composant il faut charger ni comment l'utiliser ;)


 
Pour les onglets, utilise les SStab (ils sont mieux que les tabstrip), c'est le composant "Microsoft Tabbed Dialog Control 6.0 (SP5)".
 
Voila, c'est tout pour aujourd'hui, bonne soirée  :hello:

 

[jfdsdjhfuetppo]--Message édité par mareek--[/jfdsdjhfuetppo]


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°128084
lamasu
Posté le 18-04-2002 à 18:40:10  profilanswer
 

C cool tout ca,
Dans le meme genre est-ce que quelqu'un sait comment recuperer dans une chaine la ligne numero i d'une table de access,  
parce que je galere un peu avec l'aide VB qui dit de passer par un recordset, y doit y avoir plus simple

n°128109
Jerome
Posté le 18-04-2002 à 19:50:08  profilanswer
 

encore merci mareek, pour les tables et les champs c pas trop grave si je trouve pas, il me fallait surtt une réponse pour les onglets, donc c parfait !
 
bonne soirée a toi ! :)

n°128903
Luluberlu
Posté le 20-04-2002 à 19:31:23  profilanswer
 

:pt1cable:  
Petit melange qui pourra peut-être t'aider.
'Référence
Microsoft AtiveX Data Objects 2.5 Library (msado15.dll)
Microsoft ADO Ext. 2.5 For DLL and Security (msadoX.dll)
 
' Ouverture de la base de donnée  
Private conAccess As New ADODB.Connection
Private sConnectionString As String
 
With conAccess
           
    ' Positionnement du moteur de curseur côté client
    .CursorLocation = adUseClient
             
    ' Le provider est MSDataShape, afin de bénéficier de la puissance des
    ' Data Shape (cf.ADO)
    ' Le fournisseur de données est précisé par la propriété "Data Provider"
    .Provider = "MSDataShape.1"
             
    ' Ouverture de la connexion
    sConnectionString = "Data Provider = Microsoft.Jet.OLEDB.4.0 ;" & _
                        "Data Source = " & sFileName
    .Open sConnectionString
 
End with
' Lecture de la liste des tables de la base
Dim TablesList As New ADODB.RecordSet
Set TablesList = conAccess.OpenSchema(adSchemaTables)
 
'Création d'une requête
Dim sQuery as String
Dim rs As ADODB.Recordset 'Recordset
 
' Création de la requête
sQuery = "SELECT * FROM TableName" 'Par exemple
 
' Création du Recorset
Set rs = New ADODB.Recordset
 
'Exécution de la requête (Voir l'aide en ligne pour les paramètres)
rs.Open sQuery, conAccess, adOpenKeyset, adLockReadOnly, adCmdText
 
'Le résultat se trouve dans le recordset 'rs'
 
'Lecture du RecordSet
Dim sChamp As String
 
With rs
    If .RecordCount <> 0 Then
        'Positionnement sur le premier enregistrement
        .MoveFirst
        Do
            'Lecture du champ désiré
            ' Il est possible de rechercher une valeur dans un champ à
            'l'aide de la méthode Find (rs.find)
            sChamp = rs.Field("Nom du champ" ).Value
            'Positionnement sur l'enregistrement suivant
            .MoveNext
            'Sortie sur le dernier enregistrement
        Loop Until .Eof
        'Fermeture du RecorSet
        .Close
    End If
End with
 
Good luck

mood
Publicité
Posté le 20-04-2002 à 19:31:23  profilanswer
 

n°128972
Jerome
Posté le 21-04-2002 à 01:01:33  profilanswer
 

c tjrs bon a prendre ! merci également :)

n°129020
Jerome
Posté le 21-04-2002 à 13:25:07  profilanswer
 

encore une question ;)
 
mareek> pkoi les onglets avec SStab sont mieux que les tabstrip ?

n°129173
mareek
Et de 3 \o/
Posté le 22-04-2002 à 10:46:15  profilanswer
 

Jerome a écrit a écrit :

encore une question ;)
 
mareek> pkoi les onglets avec SStab sont mieux que les tabstrip ?  




 
Je crois que les sstab sont plus souples d'utilisation que les tabstrip et ont plus de fonction (comme les onglets sur 2 lignes par exemple) En fait, comme je n'utilise plus les tabstrip, je me rappelle plus exactement pourquoi ils ont moins bien :D .
 
bonne chance pour la suite.  :hello:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°129203
Jerome
Posté le 22-04-2002 à 12:27:54  profilanswer
 

ok, je viens d'essayer les 2, avec les ssTab ca roule tout seul, avec les tabStrip je dois pas tout comprendre ;) donc va pour les ssTab ! ;)
 
maintenant niveau interface j'ai tout ce qu'il faut, je v pouvoir m'attaquer a la BD et appliquer t conseils :)
 
merci !
a+

n°129334
Jerome
Posté le 22-04-2002 à 15:05:51  profilanswer
 

ca commence... ;)
 
j'essai de me connecter mais j'ai un message d'erreur qui m'indique : "Run-time error '3706' ADO n'a pas pu trouver le fournisseur spécifié"
 
voici mon code

Citation :


    Sdl$ = Chr$(13) + Chr$(10)
    Dim m_AdoCnn As ADODB.Connection
    Set m_AdoCnn = New ADODB.Connection
    m_AdoCnn.Provider = "Microsoft.Jet.OLEDB.4.0"
    m_AdoCnn.ConnectionString = "C:\jerome\tests\bd1\films.mdb"
    m_AdoCnn.CursorLocation = adUseNone
    m_AdoCnn.Open
 
    Dim qry As String
    Dim rs As New ADODB.Recordset
     
    qry = "select * from films"
    rs.Open qry, m_AdoCnn, adOpenDynamic, m_ADOLockType, adCmdText
     
    While Not rs.EOF
        txtRes.Text = txtRes.Text & Sdl & rs(Nom)
        'lecture du recordset
        rs.MoveNext
    Wend
    rs.Close


 
d'après le debugger ca pose prbl au niveau du "m_AdoCnn.Open"
 
une idée ? ;)

 

[jfdsdjhfuetppo]--Message édité par Jerome le 22-04-2002 à 15:07:41--[/jfdsdjhfuetppo]

n°129347
mareek
Et de 3 \o/
Posté le 22-04-2002 à 15:30:59  profilanswer
 

Le fichier films.mdb existe-t-il ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°129349
Jerome
Posté le 22-04-2002 à 15:34:14  profilanswer
 

oui oui, il existe

n°129498
Jerome
Posté le 22-04-2002 à 20:57:26  profilanswer
 

ca y est ! ca marche :)
2 choses, j'ai refais tout ca chez moi et j'avais plus l'erreur que j'avais tout à l'heure avec la version du boulot, demain je v y mettre la mienne ca réglera pas mal de prbl ;)
 
Je sais pas si ca peut être source de prbl mais au boulot j'ai Microsoft ActiveX Data Objects 2.0 Libray alors qu'ici j'ai la 2.7...
 
Sinon j'ai eu d'autres prbl après, j'ai du remplacer "rs.Open qry, m_AdoCnn, adOpenDynamic, m_ADOLockType, adCmdText" par "rs.Open qry, m_AdoCnn" sinon il me faisait des caprices ;)

n°129604
mareek
Et de 3 \o/
Posté le 23-04-2002 à 09:54:02  profilanswer
 

Jerome a écrit a écrit :

ca y est ! ca marche :)
2 choses, j'ai refais tout ca chez moi et j'avais plus l'erreur que j'avais tout à l'heure avec la version du boulot, demain je v y mettre la mienne ca réglera pas mal de prbl ;)
 
Je sais pas si ca peut être source de prbl mais au boulot j'ai Microsoft ActiveX Data Objects 2.0 Libray alors qu'ici j'ai la 2.7...



Oui, c'est surement ça la source de tes problèmes, essaye d'installer les services pack de VB et de windows, ça devrait te mettre les composants ADO à jour.
 

Citation :

Sinon j'ai eu d'autres prbl après, j'ai du remplacer "rs.Open qry, m_AdoCnn, adOpenDynamic, m_ADOLockType, adCmdText" par "rs.Open qry, m_AdoCnn" sinon il me faisait des caprices ;)  


 
c'est normal, m_ADOLockType et adcmdtext sont des variables qui sont utilisées dans le code qui m'a servi au copier/coller et que j'ai oublié d'enlever  :D .  Normallement, m_adolocktype est le type de vérouillage de la base et adcmdtext et une commande text spécifique.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°129610
Jerome
Posté le 23-04-2002 à 09:57:37  profilanswer
 

bon, ben ca explique pas mal de choses ;)
 
sinon concernant ADO je viens de mettre un topic ;)
tu sais comment je peux installer une nouvelle version d'ADO rapidement ? :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Manipulation de BD Access avec Visual Basic [edit : + onglets]

 

Sujets relatifs
Deplacement des fentres sous visual C++[BASIC] Que veut dire CVS et FIELD ?
[ACCESS] cette fichu macro[ACCESS] macro - syntaxe condition
[access] ss formquestion sur visual basic et lotus notes
[ACCESS] requetes selection tri avec critèreACCESS: comment dupliquer des enregistrements d'une table liée ??
pb avec requete avec le couple ASP/Access 
Plus de sujets relatifs à : Manipulation de BD Access avec Visual Basic [edit : + onglets]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR