Connexion sql server avec visual basic [Résolu]

Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
- - Dernière réponse : nichola54
Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
- 23 févr. 2005 à 10:01
Bonjour :) ,

j'ai un petit problème et mes recherches pour trouver une solution n'ont pas été fructueuses pour le moment.

Je dois accéder à une base SQLServer à distance, et je n'y parviens pas :sad) .
(C'est ma première tentative de connexion à une base de données distante, et avec ADO).

Le code que j'ai trouvé sur le net (et que je n'arrive pas à faire fonctionner) est le suivant :
Module Module1

    Public cn As New ADODB.Connection
    Public rs As New ADODB.Recordset

    Sub Main()
        Dim NombreEnregs As Long
        Dim i As Long
        Dim nb As Integer

        On Error GoTo erreur

        'Connexion à la base de données
        cn =  New ADODB.Connection
        rs = New ADODB.Recordset

        With cn
            .Provider = "SQLOLEDB.1"
            .ConnectionString = "driver=SQLOLEDB;" & "server=XXX.XXX.XXX.XXX;uid=XXX;pwd=XXX;database=Northwind"
        End With

        Console.WriteLine("Connexion ok")

        cn.Open()
 'ne passe pas le open  :sad)  
        Console.WriteLine("Ouverture ok")

        'cn.DefaultDatabase  = "Northwind"
        'Console.WriteLine("Default database ok")

        Call rs.Open("MSysTables", cn, , ADODB.LockTypeEnum.adLockOptimistic)
        Console.WriteLine("Recordset ok")

        'On récupère le nombre d'enregistrement dans le recordset
        nb = rs.RecordCount

        'On passe chaque enregistrement en revue pour récupérer le nom de chaque table
        For i = 1 To NombreEnregs
            Console.WriteLine(rs.Fields("TableName").Value)
            rs.MoveNext()
        Next
        Console.Read()
        Exit Sub
erreur:
        Console.WriteLine("ERREUR" & Err.Description)
        Console.Read()

    End Sub

End Module


Je voudrais juste réussir à me connecter (enfin, pour l'instant !).

Si l'un de vous pouvait me venir en aide (avec un exemple de code qui fonctionne par exemple ;) ), je lui en serais réellement reconnaissante car c'est un projet à faire pour mon boulot qui est assez important (et pressant).

Merci d'avance :big) ,

Fanny
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
3
Merci
Oups ... Trouvé !

En fait, c'était juste l'express beta qui ne voulait pas de connexion !!!
Mais en installant visual basic .net ça fonctionne maintenant ...

Désolée :blush)

Fanny

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
0
Merci
Salut fanny
Est ce que aurais mis à jour ton programme car je dois effectuer une transaction à distance sur sql server via VB. le pb c'est que je ne suis pas reconnu sur le réseau Aurait tu une idée d'ou cela peut venir .
Merci Nichola54
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
0
Merci
Salut Nicholas,

Tu dis que tu n'es pas reconnu sur le réseau, est-ce que tu pourrais mettre ici ton code et le message d'erreur que tu reçois, ainsi que la ligne à laquelle ton programme bloque ?

Car là, je ne vois pas trop d'où peut venir le problème, si tu as mis le bon login/mot de passe ainsi que la bonne URL de ton serveur, tu devrais parvenir à te connecter.
Ou bien il faut voir du côté administration du serveur si celui-ci accepte les connexions à distance.

Fanny
Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
0
Merci
Salut fanny et merci de prendre part à mon pb.

Private Material As Database


Private cmdsql As String



Private Sub Command1_Click()
Material.Close


Form1.Hide
End Sub




Module Module1
Public cn As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub Main()
Dim NombreEnregs As Long
Dim i As Long
Dim nb As Integer
On Error GoTo erreur

'Connexion à la base de données

cn = New ODBC.Connection
rs = New ODBC.Recordset
With cn
.Provider = "SQLOLEDB.1"
.ConnectionString = "driver=SQLOLEDB;"
"server=193.55.104.241;uid=sa;pwd=sqlserver;database=mesmaterial"
End With
Console.WriteLine ("Connexion ok")
cn.Open()
'ne passe pas le open
Console.WriteLine ("Ouverture ok")
'cn.DefaultDatabase = "Northwind"
'Console.WriteLine("Default database ok")
Call rs.Open("MSysTables", cn, , ADODB.LockTypeEnum.adLockOptimistic)
Console.WriteLine ("Recordset ok")
'On récupère le nombre d'enregistrement dans le recordset
nb = rs.RecordCount
'On passe chaque enregistrement en revue pour récupérer le nom de chaque table
For i = 1 To NombreEnregs
Console.WriteLine (rs.Fields("TableName").Value)
rs.MoveNext()
Next
Console.Read()
Exit Sub
erreur: Console.WriteLine ("ERREUR" & Err.Description)
Console.Read()
End Sub

End Module



Voila la ligne problématique souligné et en italique: car cette ligne fonctionne avec une base local !!


End Sub


Private Sub Text1_Change()


cmdsql = "INSERT INTO Material_lot(Status, etat_actuel) VALUES ('DEFLT1', '& Text1.Text &')"
Material.Execute cmdsql

End Sub
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
0
Merci
En fait, il faut que tu utilises l'objet cn, qui correspond à ta connexion, pour exécuter ta requête.
Comme là tu n'as pas besoin de récupérer un RecordSet, tu dois utiliser la méthode .Execute.

Il faut que tu fasses donc quelque chose du genre :

Public cn As New ADODB.Connection

Sub Text1_Change()
'Connexion à la base de données
cn = New ODBC.Connection
With cn
.Provider = "SQLOLEDB.1"
.ConnectionString = "driver=SQLOLEDB;"
"server=193.55.104.241;uid=sa;pwd=sqlserver;database=mesmaterial"
End With
cn.Open()
cn.Execute ("INSERT INTO Material_lot(Status, etat_actuel)......")
End Sub


Bon, je n'ai pas pu tester car je n'ai pas de VB sous la main.
Mais dis moi si ça t'aide.

Pour débuguer un programme, n'oublies pas de te servir du mode débuggueur qui peut être pratique.

Fanny
Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
0
Merci
Bonsoir.
Maintenant g réussi la connexion via odbc mais je narrive tjs pas à échanger les données depuis ma forme. (type defini par l'utilisateur non défini) voila le nouveau message que g pourtant g selectionner tous les fichiers .dll mais il me jette encore !.
la je ne comprend plus, j'arrive meme à planter VB !

nichola
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
0
Merci
A quel endroit te met-il "type défini par l'utilisateur non défini" ?
Est-ce que tu pourrais mettre les lignes de code qui correspondent à cette erreur ?

Peut être que tu utilises une méthode sur un objet qui ne la possède pas, ou quelque chose comme cela.

Fanny
Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
0
Merci
Salut fanny voici le morceau de prog qui ne fonctionne pas

Sub Text1_Change()
'Connexion à la base de données
cn = New ODBC.Connection 'voila la ligne récalcitrante'
With cn
.Provider = "SQLOLEDB.1"
.ConnectionString = "driver=SQLOLEDB;"
End With
cn.Open()
cn.Execute ("INSERT INTO Material_lot(Status, etat_actuel)Values ('deflt2','" & Text2.Text & "')"
material.Execute cmdsql
End Sub
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Dernière intervention
13 mai 2011
0
Merci
As tu bien déclaré cn comme cela ?
Public cn As New ADODB.Connection

Il faut que ton programme connaisse le type de cn avant que tu puisses lui donner une valeur.

Si ce n'est pas ça, je t'avouerais que je ne sais pas trop.
Je te conseille de poster ta question dans le forum pour qu'elle apparaisse dans les premières.
Ainsi, d'autres personnes pourront participer et tu auras plus de chance d'avoir une bonne réponse [;)].

Fanny
Messages postés
5
Date d'inscription
mercredi 19 janvier 2005
Dernière intervention
23 février 2005
0
Merci
Salut Fanny
désolé de ne pas avoir répondu plus tot mais g la solution de mon probléme je la met sur le forum comme ca tt elle sera visible de tous @+ bonne continuation

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.