Manipulation de BD Access avec Visual Basic [edit : + onglets] - VB/VBA/VBS - Programmation
Marsh Posté le 18-04-2002 à 12:34:17
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]
Marsh Posté le 18-04-2002 à 12:37:13
ok, merci, ca serait pas mal que tu m'expliques en 2 mots le principe
c lourd a mettre en oeuvre ou pas ?
Marsh Posté le 18-04-2002 à 16:31:35
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:
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" )
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
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.
Marsh Posté le 18-04-2002 à 17:52:58
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
Marsh Posté le 18-04-2002 à 18:26:48
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 : |
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
[jfdsdjhfuetppo]--Message édité par mareek--[/jfdsdjhfuetppo]
Marsh Posté le 18-04-2002 à 18:40:10
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
Marsh Posté le 18-04-2002 à 19:50:08
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 !
Marsh Posté le 20-04-2002 à 19:31:23
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
Marsh Posté le 21-04-2002 à 13:25:07
encore une question
mareek> pkoi les onglets avec SStab sont mieux que les tabstrip ?
Marsh Posté le 22-04-2002 à 10:46:15
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 .
bonne chance pour la suite.
Marsh Posté le 22-04-2002 à 12:27:54
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+
Marsh Posté le 22-04-2002 à 15:05:51
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 : |
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]
Marsh Posté le 22-04-2002 à 15:30:59
Le fichier films.mdb existe-t-il ?
Marsh Posté le 22-04-2002 à 20:57:26
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
Marsh Posté le 23-04-2002 à 09:54:02
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 . Normallement, m_adolocktype est le type de vérouillage de la base et adcmdtext et une commande text spécifique.
Marsh Posté le 23-04-2002 à 09:57:37
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 ?
Marsh Posté le 18-04-2002 à 12:32:17
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]