Access et SQLserver [Résolu]

Signaler
Messages postés
22
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
10 juin 2009
-
Messages postés
22
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
10 juin 2009
-
Bonjour a tous

Je suis actuellement en stage dans une entreprise dans le cadre de mon BTS.

Pour mes premiers jours, je dois refaire une interface de gestion de stock, avec Access. La base de donnée est sur SQLserver.

J'aimerai pouvoir me connecter a la base de donner depuis access, puis remplir une combobox avec 1 champ d'une table de ma base de donnée.

BdD = mp2test
table = Stock
champ = ITEMNUM

Si jamais vous pouvez m'aider ce serai fabuleux ^^ Merci beaucoup.

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Salut

Si les données sont sur SQL Server (local ou poste réseau), il n'est pas nécessaire d'utiliser Access, à moins que tu soies contraint de stocker localement des données.
Le problème est que, sous Access, toute la configuration des formulaires (etc) est basée sur des tables appartenant à Access.
Dans ton cas, il va falloir te connecter à ta DB sous SQL Server en utilisant un moteur indépendant de Access, par exemple ADODB, et que je ne sais pas si tu pourra facilement associer tes champs aux composants de ces formulaires.

Donc, tout ton choix réside dans l'outil à utiliser pour ton interface.

Je viens de regarder comment faire :
La partie connexion au server SQL par ADODB : Voir les tutoriels et codes du site
Créer un formulaire
Installer une "zone de liste déroulante", alias ComboBox, sur le formulaire et la déclarer "indépendante" (non liée à une table locale)
Ensuite, il faudra créer du code pour :
- questionner la DB avec les résultats dans un RecordSet
- parcourir toutes les données de ce RecordSet et les insérer dans la ComboBox
Ensuite, pour ta gestion, il faudra surement gérer le changement de choix dans cette ComboBox --> "Code évènement" _Click

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
Et est-ce qu'il fonctionne ?

Pour info, voilà du tout-cuit :
cnnSqlServer est une ADODB.Connection
"IsSqlServerLocal(ServerName)" me renvoie True si le nom du serveur ServerName est le même que notre machine afin de savoir quelle procédure de connexion utiliser. Cela n'est qu'une question de droit au niveau d'accès aux DB (gestion des comptes et login) que renferment le serveur

Public Function ConnectSqlServer(ServerName As String, DBName As String) As Boolean
    ' Renvoie True si connexion Ok
    With cnnSqlServer
        ' Referme si déjà ouverte
        If .State <> adStateClosed Then .Close
        ' Paramétrage connexion
        .ConnectionTimeout = 25
        .Provider = "sqloledb"
        .Properties("Data Source").Value = ServerName
        .Properties("Initial Catalog").Value = DBName
        If IsSqlServerLocal(ServerName) Then
            ' SQL Server sur la même machine : Authentification Windows
            .Properties("Integrated Security").Value = "SSPI"
        Else
            ' SQL Server dédié
            .Properties("Locale Identifier").Value = 1033   ' Anglais
            .Properties("User ID").Value = sUserID
            .Properties("Password").Value = sPassword
        End If
        On Error Resume Next
        ' Connexion
        .Open
        ' Attend connexion terminée
        Do While .State = adStateConnecting
            DoEvents
        Loop
        On Error GoTo 0
        ' Au final, renvoie True si on est bien ouvert        ConnectSqlServer CBool(.State adStateOpen)
    End With
End Function



Public Function DisconnectSqlServer() As Boolean
    ' Referme la connexion
    If cnnSqlServer.State <> adStateClosed Then cnnSqlServer.Close
    DoEvents
    ' Renvoie True si on n'est plus ouvert    DisconnectSqlServer Not CBool(cnnSqlServer.State adStateOpen)
End Function



Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés





<hr />




Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
22
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
10 juin 2009

Merci beaucoup pour cette reponse, je pensais effectivement utiliser ADODB, et Access m'est imposé.

Je n'ai pas trouver le code de conexion au serveur sql, mais je repars chercher. Je viendrais mettre un retour de mes recherches ici.

Encore merci.
Messages postés
22
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
10 juin 2009

Je poste ici le code que j'ai pour le moment, si jamais vous voyez deja un truc a changer
____________________________________
Private Sub Form_Load()
Dim cnx As New ADODB.Connection
cnx.ConnectionString = "UID=" & "sa" & ";PWD=" & "" & ";" & "DRIVER={SQL Server};Server=" & "smvn009" & ";Database=" & "mp2test" & ";"
Dim rst As New ADODB.Recordset
Set rst = New ADODB.Recordset
cnx.Open
rst.Open "Select * from stock", cnx
While Not (rst.EOF)
  Combobox1.RowSource = rst![ITEMNUM]
 

  rst.MoveNext
Wend
rst.Close
______________________________________

Ps: Il n'est pas possible d'éditer un post ?
Messages postés
22
Date d'inscription
mardi 19 mai 2009
Statut
Membre
Dernière intervention
10 juin 2009

Non ce que j'ai poster ne marche pas.
D'ailleur, je ne comprend pas pourquoi Access ne me propose pas le .Additem , est ce du a ma version (97) ou a autre chose? Car j'ai toujours vu comme ça en cour, et la =/

Merci beaucoup pour ton code, je teste ça a la premiere heure demain =)

Bonne fin de journée