Recordset

mastercatz Messages postés 193 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 12 août 2010 - 13 août 2004 à 11:01
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 13 août 2004 à 12:41
Bonjour, voila mon problème : J'ouvre des bases de données FilemakerPro à l'aide d'ADODB afin de faire une requete SELECT avec recordset. D'habitude les autres requetes foncionnent tres bien mais quand je fait R1.Open, j'ai une erreur disant que la base n'est pas ouverte. Or le fichier filmaker est bien ouvert.
Le pire c'est que j'ai récupéré une autre source et elle foncionne tres bien sur le meme principe ......
Je ne comprends vraiment pas.

Dim FM_APP As FMPRO50Lib.Application
Dim FM_DOCS As FMPRO50Lib.Documents
Dim FM_DOC As FMPRO50Lib.Document
Dim FM_DOC_ As FMPRO50Lib.Document

Set FM_APP = CreateObject("FMPro.application")
Set FM_DOCS = FM_APP.Documents
Set FM_DOC = FM_DOCS.Open("c:\Gestionplans.fp5", "progvb")
Set FM_DOC_ = FM_DOCS.Open("c:\GP.fp5", "progvb")

Dim R1 As ADODB.Recordset
Dim R2 As ADODB.Recordset

Dim C1 As ADODB.Connection
Dim C2 As ADODB.Connection
Dim trouve As Boolean

Set C1 = New ADODB.Connection
C1.Open "Provider=MSDASQL.1;Data Source=gestionnaire;password=mypassword;database=Gestionplans.fp5"
C1.CursorLocation = adUseClient

Set C2 = New ADODB.Connection
C2.Open "Provider=MSDASQL.1;Data Source=FM_For_VB_Apps;password=mypassword;database=GP.fp5"
C2.CursorLocation = adUseClient

Set R1 = New ADODB.Recordset
Set R2 = New ADODB.Recordset

R1.Open "SELECT * FROM 'GestionPlans.fp5'", C1
R2.Open "SELECT * FROM 'GP.fp5'", C2

trouve = False
Do While Not R2.EOF
Do While Not R1.EOF Or trouve If (R1!nominfo R2!nominfo) And (R1!Chemin R2!Chemin) Then
myfm.ComString = "UPDATE GestionPlans SET commentaire='" & R2!commentaire & "' WHERE chemin = '" & R1!Chemin & "' AND nominfo='" & R1!nominfo & "'"
myfm.PerformCommand conn
trouve = True
End If
R1.MoveNext
Loop
trouve = False
R1.MoveFirst
R2.MoveNext
Loop

R1.Close
R2.Close
Set R1 = Nothing
Set R2 = Nothing

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 août 2004 à 12:41
Salut MasterCatz
A priori, ça devrait marcher.
Après la création des connexions C1 et C2, insère un DoEvents pour laisser le temps à la machine d'opérer.
Par sécurité, vérifie l'état de ces connexions avant de continuer en testant C1.State et C2.State qui devraient valoir "adStateOpen".

Par contre, dans ton instruction R1.Open et R2.Open, la syntaxe SQL est bizarre : On dirait que tu confonds le nom de tes BDs avec les noms des tables : Es-tu sûr que 'GestionPlans.fp5' et 'GP.fp5' sont des noms de tables (même nom que la DB) ?
Le nom des tables ne doivent pas être encadrés par des ', mais par des [] si le nom comporte des caractères spéciaux (espaces ...)
Exemple : R1.Open "Select * From [Ma Table]", C1
Dans la syntaxe, c'est le ", C1" qui dira dans quelle connexion (donc quelle DB) il faudra chercher.

Vala
Jack
0
Rejoignez-nous