Connexion base

samisahliess Messages postés 19 Date d'inscription mercredi 18 mai 2005 Statut Membre Dernière intervention 7 septembre 2005 - 25 août 2005 à 06:40
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 - 27 août 2005 à 07:01
je suis debutant et j'ai vraiment besoin d'aide merci
voila le code que j'ai ecrit mais j'ai un message d'erreur "type incompatible"
j'arrive pas à resoudre le probleme


Dim DB As New ADODB.Connection
Dim RC As New ADODB.Recordset

Dim DB As Database
Dim RC As Recordset
Set DB = OpenDatabase("C:\bd1.mdb")
'la ligne qui contient l'erreur
'Set RC = DB.OpenRecordset("sami", dbOpenDynaset)

RC.MoveFirst
RC![numero] = ii
RC![priorite] = indice

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 août 2005 à 07:50
Il me semble que OpenDataBase est une instruction DAO et non ADO.



En ADO, pour se connecter à une base :

Dim m_pDataBase As ADODB.Connection

Dim m_pRecordSet As ADODB.Recordset

Set m_pDataBase = New Connection

Let m_pDataBase.Mode = adModeUnknown

Let m_pDataBase.Provider = "Microsoft.Jet.OLEDB.4.0"

Let m_pDataBase.ConnectionString = "c:\bd1.mdb"

Call m_pDataBase.Open

Set m_pRecordSet = New Recordset

Let oRecordset.CursorLocation = adUseClient

Let oRecordset.LockType = adLockOptimistic

Call oRecordset.Open("SELECT * FROM T_C_Noms", m_pDataBase)

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
25 août 2005 à 13:12
Salut,

Tu peux essayer le code suivant, à placer dans un module





Public cnx As New ADODB.Connection

Private dbPassWord As String

Private URL_BASE As String





' ===========================================

' Définir le password pour acceder à la base

Public Sub setPasswordBase(Optional s As String = "")

dbPassWord = s

End Sub





' ===========================================

' Ouvrir la connexion à la base MS ACCESS

Public Sub ConnexionBase()

Dim ChaineConnexion As String

URL_BASE = "c:\chemin de ta base.mdb"



On Error GoTo erreur

' Connexion

ChaineConnexion =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & URL_BASE &
";Persist Security Info=False;"

ChaineConnexion = ChaineConnexion & "Jet OLEDB:Database Password=" & dbPassWord

cnx.Open ChaineConnexion

Exit Sub

erreur:

Dim path As String

If cnx.State = 1 Then cnx.Close

msgbox "Erreur de connexion à la base"

End Sub




Utilisation :



Si tu as une base protégée par un mot de pass alors tu fais (une seule fois)




Call setPasswordBase("MotDePasse1161")




Etablir la connexion :




Call ConnexionBase


Pour le reste des traitements, voir le source #32881





++

Zlub
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
27 août 2005 à 05:51
Bonsoir,

effectivement là tu mélanges du code DAO et ADO

pour ma petite contribution

en ADO ce sera

option explicit
Dim DB As ADODB.Connection
Dim RC As ADODB.Recordset

private sub Form_load()

DB.provider ="Microsoft.jet.oledb.4.0" 'pour acces 2000 et sup. sinon 3.51
DB.connectionstring= app.path & "\bd1.mdb"
DB.open
' app.path c'est lorsque ta bd est dans ton projet vb (recommandé)

'ouverture du recordset
Set RC = new adodb.recordset
RC.open "select * from [le nom de ta table]",DB,adopendynamic,adlockoptimistic
'select tous les champs(*) de ta table

et ensuite ça dépend de ce que tu veux faire
à premiere vue avec ce code tu veux ajouter des données dans ta table

donc ce sera

RC.addnew
RC![numero] = ii
RC![priorite] = indice
RC.update
RC.close

et si les données sont dans des textbox
ce sera

RC.addnew
RC![numero]=text1.text
RC![priorite]=text2.text 'ou le nom que tu as donner à tes textbox
RC.update
RC.close

il ne faut pas oublier d'ajouter la référence "Microsoft activex data object 2.x"
Projet=>références

Salut
Doro
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
27 août 2005 à 05:56
re,

il ne faut pas oublier non plus de fermer la bd en déchargeant la feuille

dans Form_unload()

set RC=nothing

DB.close
set DB=nothing

Salut
Doro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
27 août 2005 à 07:01
Salut,


Faut juste vérifier que le rs ou la connexion soit ouverte et au quel cas, le(s) fermer, donc :




' Dim rs As ADODB.Recordset

' Dim cnx As ADODB.Connection



If rs.State = 1 Then rs.Close

Set rs = Nothing



If cnx.State = 1 Then cnx.Close

Set cnx = Nothing




Par contre je ne suis pas fasn d'ouvrir la connexion au début du projet
et fermer en fin ... j'opterais plus pour ouvrir la connexion quand tu
veux te connecter et fermer quand plus besoin...

++

Zlub

<hr size="2" width="100%">
0
Rejoignez-nous