begin process at 2010 02 09 23:18:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

pb de requete SQL sur plusieures tables avec ADO


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb de requete SQL sur plusieures tables avec ADO

samedi 12 février 2005 à 13:48:05 | pb de requete SQL sur plusieures tables avec ADO

gi

bonjour,
j'essais sans succes d'effectuer un requette sur plusieures tables d'une base Access 97.

ma requette est la suivante :

SELECT Session.SessionID
FROM Client, Session
WHERE (Client.ClientID = 222 ) And Client.ClientID=Session.ClientID;


Sachant que Cnn est une connection ouverte avec ADO sur ma base, j'execute la requette de la facon suivante :

dim rs as new ADODB.Recordset
dim sql as String ' ma requette sql

rs.CursorLocation=adUseClient
rs.Open sql, Cnn, adOpenDynamic, adLockOptimistic

si j'utilise cette methode avec une requette qui concerne qu'une seule table ça marche. Par contre avec une requette sur plusieures tables j'ai un message d'erreur " ne peut créer le recordset "


merci de votre aide.

Gi
samedi 12 février 2005 à 14:32:30 | Re : pb de requete SQL sur plusieures tables avec ADO

jack

Administrateur CodeS-SourceS
Salut
Normalement, pas de difficulté majeure.
Une erreur souvent commise : Quand tu écrit ta requète dans ta String slq, je suppose que tu passes à la ligne : As-tu pensé à bien garder un espace entre la fin de ligne et la ligne suivante :
sql = "SELECT Session.SessionID " & _
      "FROM Client, Session " & _
      "WHERE Client.ClientID = 222 " & _
      "  And Client.ClientID=Session.ClientID"

(espace entre SessionID et le ", entre Session et ", entre 222 et ")
Sinon la requète reconstituée ressemble à ça :
SELECT Session.SessionIDFROM Client, SessionWHERE Client.ClientID = 222And Client.ClientID=Session.ClientID
et les mots étant collés, ils ne sont pas reconnus.

D'autre part, assure toi de la syntaxe exacte (min/maj aussi) du nom des champs de tes tables.

Une autre chose : Si tu fais une première requète et que tu en fais une autre derrière, pense à vider le RecordSet avant de t'en servir à nouveau, avec :
Set rs = Nothing

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

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
samedi 12 février 2005 à 18:05:05 | Re : pb de requete SQL sur plusieures tables avec ADO

gi

Jack merci pour ta réponse mais je ne vois pas d'ou peut venir mon probleme.
Voici mon code.
tout est OK si j'utilise la chaine sql1 pour ouvrir mon recordset (requete sur une seule table)
par contre si j'utilise la chaine sql j'ai un message d'erreur m'indiquant que: " la méthode 'Open' de l'objet '_Recordset' a échoué.  (Requete sur 2 tables Client et Session )

merci de ton aide.

Public Function TestSql() As ADODB.Recordset

Dim m_baseDeDonnees As String
Dim m_chaineDeConnexion As String
Dim cnn As ADODB.Connection
Dim ClientNo As String
Dim rst As ADODB.Recordset
Dim sql As String
Dim sql1 As String

 

ClientNo = "429"
m_baseDeDonnees = "C:\Program Files\HIMSA\NOAH System\Database" & "\noah.mdb"

m_chaineDeConnexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_baseDeDonnees & _
                      ";Persist Security Info=False;Jet OLEDB:Database Password=dennyestil"

sql = "Select * From   Client, Session  WHERE " & _
"(Client.ClientNo = '" & ClientNo & "') And ( Client.ClientID = Session.ClientID)"

sql1 = "Select * From   Client WHERE " & _
"(Client.ClientNo = '" & ClientNo & "') "

Set cnn = New ADODB.Connection
cnn.Open m_chaineDeConnexion

Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open sql, cnn, , adLockOptimistic ' adLockReadOnly

Set rst.ActiveConnection = Nothing
cnn.Close
Set cnn = Nothing

Set TestSql = rst

End Function

Gi

samedi 12 février 2005 à 18:10:59 | Re : pb de requete SQL sur plusieures tables avec ADO

gi

Jack merci pour ta réponse mais je ne vois pas d'ou peut venir mon probleme.
Voici mon code.
tout est OK si j'utilise la chaine sql1 pour ouvrir mon recordset (requete sur une seule table)
par contre si j'utilise la chaine sql j'ai un message d'erreur m'indiquant que: " la méthode 'Open' de l'objet '_Recordset' a échoué.  (Requete sur 2 tables Client et Session )

merci de ton aide.

Public Function TestSql() As ADODB.Recordset

Dim m_baseDeDonnees As String
Dim m_chaineDeConnexion As String
Dim cnn As ADODB.Connection
Dim ClientNo As String
Dim rst As ADODB.Recordset
Dim sql As String
Dim sql1 As String

 

ClientNo = "429"
m_baseDeDonnees = "C:\Program Files\HIMSA\NOAH System\Database" & "\noah.mdb"

m_chaineDeConnexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & m_baseDeDonnees & _
                      ";Persist Security Info=False;Jet OLEDB:Database Password=dennyestil"

sql = "Select * From   Client, Session  WHERE " & _
"(Client.ClientNo = '" & ClientNo & "') And ( Client.ClientID = Session.ClientID)"

sql1 = "Select * From   Client WHERE " & _
"(Client.ClientNo = '" & ClientNo & "') "

Set cnn = New ADODB.Connection
cnn.Open m_chaineDeConnexion

Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open sql, cnn, adOpenForwardOnly, adLockOptimistic
Set rst.ActiveConnection = Nothing
cnn.Close
Set cnn = Nothing

Set TestSql = rst

End Function

Gi



Cette discussion est classée dans : ado, sql, requette, tables, plusieures


Répondre à ce message

Sujets en rapport avec ce message

Connexion ADO sql Server! URGENT [ par flo ] Salut,Pourrait on m'indiquer la ou les differentes procedures a suivre pour etablir une connexion a une BD sur SQL serveur en utilisant ADO?Les requet l'apostrophe dans les requettes SQL [ par oleola ] Dans une requette SQL, j'ai une variable string. Si cette variable a pourvaleur une chaine de caractères avec à l'intérieur une apostrophe, la requett pb de cnxion ADO a SQL SERVER [ par saly ] bonjour tt le monde,je voudrai savoir comment etablir une connection ADO a SQL server en mode execution tq l'application soit tjr operationnelle meme Récupérer un résultat de requete SQL sur plusieures tables... [ par Timothee ] Bonjour, je programme avec une base donnée DBaseIV et je voudrais savoir comment récupérer le résultat d'une requete du style "SELECT Champs1 FROM tab DEBUTANTE - SQL et ADO [ par Gaëlle ] BonjourJe souhaite inclure une requete SQL ds mon code source pour aller chercher des infos sur un serveur via une connection ODBC.Pb: J'ai vraiment d Fonction dans une requette sql [ par Chahid ] Bonjour,J'ai ecrit fonction dans vb, et je veux l'utiliser dans requette sql que je vais envoyer à SqlServer pour l'executer. Le probleme est que Sq Nom des Tables et Champs via SQL et/ou VB6 [ par BSide ] Bonjour,pouvez-vous me dire :1) comment récupérer le nom d'une Table et d'un Champ dans une BD ?2) comment ajouter un champ à une table (create field Relations, Index, Vues et SQL en utilisant le modèle ADO [ par Mus ] Bonjour !- J'aimerais bien connaître la manière de créer dynamiquement des relations entre des tables en utilisant le modèle ActiveX Data Object (ADO) Urg: Comment attacher des tables sql dans une base access via VB [ par Webmineur ] Urg: Comment attacher des tables sql server dans une base access via VB ?si quelqu'un a une idée, je suis preneur !merciA+Vincent


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales