Acces a un BD distante

Andrea - 3 déc. 2001 à 00:29
 pat - 4 déc. 2001 à 10:39
Bonjour,
Je voudrais acceder une bd distante (sur sql2000 server) afin d'upadter des champs. j'ai essaye un petit code (cf code a la fin), mais lorsque je l'execute il ne marche pas est me renvoie l'erreur suivante: Erreur d'execution '3146'
ODBC l'appel a echoue. Pourtant j'ai bien configure ODBC sur le poste client.

Si quelq'un peut m'aider en m'expliquant deux trois trucs sur les connexion distante.

Par ailleurs est-il possible de faire une connexion de ce genre sans utiliser ODBC de maniere ou lorsque le programme installe sur le poste client(ne possedant pas ODBC) puisse quand meme avoir acces a la base de donnees?

Merci

'computer name
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Sub Form_Load()

'computer name

Dim strComputerName As String

strComputerName = String(100, Chr$(0))
GetComputerName strComputerName, 100
Label1 = "Computer Name: " & strComputerName


' Déclaration des objets
Dim wrkJet As Workspace
Dim db As Connection
Dim rs As Recordset
Dim Qd As QueryDef

' Création de la liaison
Set wrkJet = CreateWorkspace("", "", "", dbUseODBC)
Set db = wrkJet.OpenConnection("", dbDriverNoPrompt, False, "ODBC;DSN=192.168.0.1;UID=andrea;PWD=endji")

' Création d'une requète SQL
' Pour mettre à jour un champs'sqlquery "UPDATE Computer SET Champs2 'toto' WHERE Champs1 = 1;"

' Pour créer un nouvel enregistrement
sqlquery = "INSERT INTO Computer (comp_Name) VALUES (strComputerName);"

' fermeture de la base
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
wrkJet.Close
Set wrkJet = Nothing

End Sub

4 réponses

essai d'utilisé des composants ado ils sont adapter pour l'acces au base de données. utilise les objets suivant adodb.Connection ,adodb.recordset, adodb.command. pour une base de données distante tu configure l'odbc à partir du poste ou est lancé l'application c'est le ddrivers qui s'occupe apres de la connexion sur le serveur.

dans ton code tu n'as pas besoin de déclarer deux de workspace. dans ta connexion ton espace de travail sera ta connexion à la base donc juste besoin de l'objet adodb.connection dans la déclaration et pas besoin de createobject c'est la même chose.
0
Merci beaucoup,
un autre petit truc, est il possible de configurer l'odbc a partir de l'application c'est a dire si je fais un prog d'installe de cette aplication, lors de l'installation cela configure le poste client avec les bons parametres?
Et si par exemple le driver odbc n'est pas installe alors l'installer via mon prog de setup?

merci
0
le driver ODBC c'est un driver qui permet de liée une base avec une application, il est utilisé par n'importe quelle type d'appliaction, developper dans différent langage. on passe par le driver pour ce connecter et la base et lancer une requête. le driver détermine la façon dont les données vont extraire par une requêtes.
si tu sais comment sont structuré les données dans une base tu peut te passé de driver (lol). si le driver n'existe pas il faut l'installer tu peux essayer de le detecter. quand tu accède à une base de données en connection utilise les evènement des composant ado à l'ouvertue de la base un evèenemnt est appelé et qui détecte i la base c'est correctement ouverte ou pas
tu ecris dans le module en déclaration

Public WithEvents conn As ADODB.Connection

il vas apparaître les événements de l'adodb.connection
tu peu même utilisé se qu'on appelle les transactions ca sécurise encore mieux tes programmes
c chiant parfois la prog les chose simple sont parfois mieux lol
0
encore une chose lorsque tu utilise des applications installé sur des postes clients il faut faire en sorte que le client possède la même version des composant que tu as utilisé pour les composant d'accès à une base de donné Mdac_typ.exe fournie par microsoft doit être installé aussi sur le poste client toi tu l'as par défaut mais le client non et ton aplli ne le fait pas c à toi de le faire
bye
0
Rejoignez-nous