Réalisation d'enregistrement avec vb6 et access xp

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 29 janv. 2005 à 18:38
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 10 févr. 2005 à 21:08
Bonsoir tout le monde


Je suis en trein de réaliser ma premiere base de données avec VB et ACCESS
XP.


Je souhaiterais faire des enregistrements à partir d'une table vide


Voici le non de ma table est: email


J'ai étudié des tuto et des livres, mais je désirerais un petit coup de main pour finir ce que j'ai commencé seul.


voici mon code ci dessous


Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
Dim bdmessag As New ADODB.Command



Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset



cnx.Provider = "Microsoft.Jet.Oledb.4.0"


cnx.ConnectionString = App.Path & "\emailenvoyé.mdb"


cnx.Open


rst.CursorLocation = adUseClient


rst.CursorType = adOpenDynamic


rst.LockType = adLockOptimistic



If envoi And (Check1.Value = 1) Then


rst.Source = "select txtto, txtfrom, rtxmessag, objet from EMAIL destinataire,expéditeur, objet, messag"


Pourriez vous svp me dire où y a til une erreur et ce qu'il manque ?


Je vous en remercie d'avance.


Cordiallement


A bientôt

21 réponses

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
29 janv. 2005 à 21:45
Salut

C'est ton sql qui pour le moment te pose problème...

select txtto, txtfrom, rtxmessag, objet from EMAIL destinataire,expéditeur, objet, messag


ci dessous un exemple :
= > SELECT T1.txtto as A,
T1.
txtfrom as De,
T1.
rtxmessag as Message,
T2.
objet as Objet from EMAIL
T1.,
EMAIL
T2 WHERE
T1.txtto =
T2.txtto
AND
T1.txtto
LIKE '*CS*' ORDER BY
T1.txtto ASC
;






<li>En bleu l'alliassage des tables qui permet de facilité l'écriture du select


</li>
<li>Ici on a 2 exemplaires
de la table EMAIL (espace mémoire différent) avec une jointure sur la
colonne txtto spécifiée par la clause WHERE :

T1.txtto =
T2.txtto

</li>
<li>En vert on a la représentation de la colonne en tant qu'objet recordset : rst!A correspond à la colonne txtto
</li>
<li>En rouge on a les mots réservés de SQL cest mots permettent de coder dans un langage standart une demande :
</li>

<li>Select concerne les colonnes
</li>
<li>From les tables
</li>
<li>Where
les clauses limitatives (un condition est exigée) => lorsque la
clause where sert à faire une jointure, elle utilise en principe les
identifiant des tables (Clé primaire, clé étrangère)


</li>
<li>AND permet de cumuler les clauses limitatives
</li>
<li>LIKE
est une instruction qui permet de déterminer un critère de de présence
dans une chaine de caractère ici on ouvre à toute les colonne contenant
la chaine CS... En proncipe en sql+ on utilise le %
au lieu de *. Cette clause est à éviter sur car elle a pour effet
de supprimer l'utilité des indexes et donc les performances peuvent
chuter sur les tables volumineuses
</li>
<li>On utilise la simple côt e
'*CS*'
pour diférencier le text du numérique. des problèmes de syntaxe
peuvent
donc
survenir lorsque tu veux metre à jour une colonne avec "L'espoire
est l'affaire de tous" si tu oublie de doublé la simple cote...
</li>

<li>ORDER BY permet d'obtenir un ordre sur les enregistrement ASC (ascending) DESC (Descending)


</li>

<li>La chaine sql doit en principe ce terminer par un ";"
</li>
<li>Il y a encore plein de mots et de fonctions disponible dans SQL+....


</li>




Tu as une base access... Donc je te conseille vivement de créer tes
premières requêtes dans access, de les étudier, puis de les intégrer à
ton code VB.



Le sql d'access n'est pas très facile à lire mais ce n'est qu'une
question d'habitude comme tu n'en as pas encore ça devrait aller vite.



Lorsque tu ouvres un recordset il faut le fermet quand c'est terminé.



Certaines méthodes d'instanciation t'obligent à recharger le Recorset
une fois que la liste à été parcourue, n'hésite donc pas à consulter
l'aide quand tu ne sais pas.



Tu peux aussi te documenter sur le sql d'access la documentation qui existe est vraiment très bien faite.

Bon code

madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
30 janv. 2005 à 09:51
Bonjour tout le monde.

Je vous remercie pour vos conseil.

Est ce que c'est bien ainsi qu'on fait pour le select?

rst.Source = "select T1.txtto as A, T1.txtfrom as De, T1.rtxmessag as Message, T2.objet as Objet from EMAIL T1, EMAIL T2 WHERE T1.txtto=T1.txtto AND T2.txtto LIKE '*CS*' ORDER BY T1.txtto ASC;"

Maintenant je voudrais savoir comment ajouter

Je sais qu'il existe une maniere avec le recordset qui s'appelle

.AddNew

mais je ne sais pas trop mis prendre, j'ai vus des tutos mais je ne comprend pas comment il faut faire.

Pourriez vous SVP me dire comment puis commencer?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 janv. 2005 à 12:23
Salut



Je t'ai juste donné un exemple d'une requête sur 2 tables (mêmes si identique) avec une jointure sur une colonne...



Oui et tu as corrigé une erreur de frappe que j'avai fait : le "." après le nom de la table aliassé en T1



Mais dans ton cas, si tu n'as besoin que d'une table, et que tu veux tous les enregistrements

faire la requete dans le récap
suffit. Et l'aliassage n'est pas obligatoire lorsqu'on "tape" sur une
seule table. Parcontre il est nécessaire si plusieurs tables pour
éviter toute confusion entre des noms de colonnes potentiellement
identiques entre les 2 tables.



Recap la connextion est faite :

----------------------------------------






'* Je construit la requête


mon_sql =
"select T1.txtto as A, T1.txtfrom as De, T1.rtxmessag as Message,
T1.objet as Objet from EMAIL T1 ORDER BY T1.txtto ASC;"




'* Je monte le recordeset en mémoire :


rst.Open mon_sql, cnx




Ensuite, dans une boucle accés au différentes valeurs par le fetcth "movenext"


'* Tant qu'il y des enregistrement


While Not (rst.EOF)


'* J'écris dans ma val la concaténation de A, De et Objet dans Maval


Maval = rst_genre!A & " # "& rst!De & " # "& rst!Objet





'* traitement spécifique pour l'affichage

......


if instr(Rst!Objet) then


Maval = maval & " # Verif le : " & now


endif




'* et j'ajoute la valeur dans une Combobox


Me.Combo1.AddItem Maval




'* je passe à l'enregistrement suivant


rst.move next


Wend




'* Pour ajouter avec la méthode addnew (il y a pas mal d'exemples).


'*
Personnellement je préfère utiliser le SQL par une requede
direct de mise à jour sur la base sinon tu peux faire comme ça


With rst_genre



.AddNew


'* Création d'une instance vide



!A = "masbob@cs.fr
'* Valorisation
colonne


!De = "Nix@cs.fr" '* idem


!Objet = "Sans déconner ?" '* idem



.Update
'* La
transaction doit être validée (équivallent oracle du commit)


End With




'* Enfin tu n'oubles pas de libèrer le RS


Rs.close








Ca peut ressembler à quelque chose comme ça...

Bon code

madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 janv. 2005 à 12:42
Pour ton MCD...



Dans ton cas il te faut plusieurs tables avec un modèle relationnel

car tu à des cardinalités 1-> n sur les propriètes A, objet, message

c.a.d 1 émetteur peut envoyer n messages à n destinataires



Donc tu vas avoir des tables de référentiel pour créer tes
emmetteur/destinataire en effet c'est la même table vu sous 2 aspects
différents chaque emmetteur/destinataire doit avoir une clé primaire (1
identifiant unique)... Donc l'intéret de pouvoir créer 2 instances
mémoires d'une même table grace à l'aliassage, n'est pas inutile...



Et au moins une table liste des messages sur laquelle tu devras avoir
une clé composée d'une cleprimaire et des cles étrangères
emetteur/destinataire car pour un couple emetteur/destinataire tu peux
aussi avoir n messages, donc l'identifiant cléemmetteur/clé
destinataire est insuffisant pour déterminer un message



Il n'y a pas de modèle unique, mais il y en a au moins 1 qui mettra
mieux en évidence les caractéristiques que tu souhaites obtenir de ton
modèle. A toi de bien définir tes besoins pour déterminer ce qui te
convient le mieux.

madbob
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 janv. 2005 à 13:13
Enfin encore une observation à propos du SQL...

Quand le SQL accèpte ou n'accepte pas la syntaxe... revient toujours à
la méthode la plus primaire... qui est la syntaxe mis en oeuvre par
Access.



Exemple avec la méthode que tu utilises, si la syntaxe pose un probleme à cause de la clause Where ... Essaye de déterminer la clause qui pose un problème en retirant les éléments de la clause par exemple puis corrige le.


N'hesite pas à utiliser le débogage et à passer par une chaine
intermédiaire pour intercepter ton SQL tel qu'il sera exécuté...
Certaines erreurs de syntaxe (blanc simple cote) sont plus faciles à
visualiser de cette façon.



Certains codes erreur sont aussi interessant à connaître (doublon de clé, pas de ligne etc...)



madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
30 janv. 2005 à 20:07
Bonsoir tout le monde.

Mercie beaucoup madbob pour ton aide.

Mais je n'est pas compris une chose, que dois mêttre entre les "

Est ce que c'est ainssi que ca doit ce présenter pour la méthode AddNew?

With rst
.AddNew


!A = ""
!De = ""
!objet = ""
!Message = ""

.Update


End With


rst.Close

Donc, je devrais créer 2 table pour que cela fonctionne bien?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 janv. 2005 à 20:41
Oui c'est ça...avec quelque chose entre les " ", si ce quelque chose
est du text, pour le numéric c'est inutil : juste le nombre sans les
"". (Et tu ferme le RS seulement quand le traitement est terminé)



Pour les tables... ça dépend toujours de ce qu'on veut faire. Une
table peux suffire. Commence par une et avance tranquillement... Mais
surtout utilise un véritable identifiant (on l'appel la clé primaire) opte pour la numérotation automatique, puis type les autres colonnes en fonction de tes besoins.



Madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
30 janv. 2005 à 20:54
Rebonsoir tout le monde.

Est ce que je dois un text spécifique entre les "".

PS: escusez moi de ma lenteur a comprendre.

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
30 janv. 2005 à 21:04
Faut bien commencer...


Le addnew sert à ajouter des enregistrements alors... si tu mets rien dedans c'est que t'en a pas besoins...



Le edit sert à pouvoir modifier un enrgistrement : une valeur doit être mise à jour par exemple



Sinon le fait d'être positionné sur un enregistrement avec la méthode
.movenext du rs te donne accés en lecture sur les propriétes de
l'enregistrement et donc tu peux l'afficher à l'écran par exemple....


madbob
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
31 janv. 2005 à 08:48
Tes questions m'ont un peu interpelé alors j'ai un peu fouillé...



Concernant la base de données : oui
, tu dois entièrement créer la structure de ta base avec les outils propriétaire de la base, surtout si tu débutes !

=> une structure de base
est un ensemble de table, si la structure utilise les relations entre
les tables (Cle primaire/Clé étrangère alors tu as un modèle
relationnel) mais ce n'est pas obligatoire, conseillé certes... Ta base
peut ne contenir qu'une table...

=> une table est une entité qui contient des propriétés exemple :


T_Abonne{ID_NO(num long), NOM(text 50), Prenom(Text 50), email(Text 100)}



=> un identifiant (la clé primaire ID_NO)
est une propriété de la table T_Abonné qui permet de distinguer tous
les enregistrements les uns des autres. La clé doit être Unique.

Prend pour le moment le type numauto pour tes identifiants !!!

=> chaque propriété utilise un type de données précis : numérique, caractère, date....

=> le langage standard pour communiquer (extraire, supprimer, mettre a jout) avec une base de données est le SQL



Concernant Acces:

Avec acces tu peux créer une base de données et une interface pour
accèder et faire des traitements sur les données. Autrement dit ton
application peut entièrement être créée sous access... Tu t'affranchis
des méthodes de connexion.



Concernant VB6:

Avec VB6 tu peux créer une interface compilée externe à la base
de donnée. Tu sera obligé d'établir une connexion avec la base; les
moyens de mise en oeuvre de cette connexion sont multiples et utilises
soit l'accés direct (JET) soit ODBC.



Concernant ODBC :

ODBC te permet de te créer des connexions avec tout les types de base
de données du marché (y compris access) à partir du moment ou le
pilote existe et a été correctement installé. Bien sûr il faut créer la
connexion dans ODBC pour pouvoir l'utiliser.



Concernant le SQL:

Que tu sois dans acces ou dans VB lorsque tu as besoin d'intervenir sur
les données (consultation, mises à jours....) il faut passer par une
requête SQL.

Tu ne connais pas bien le SQL => utilise le générateur d'access (onglet requête) !!!

Le SQL peut être encapsulé: il devient une propriété la source !!!



Concernant les méthodes access et VB6:

Les méthodes des recordset offrent des aspects partiques et il existent d'autres méthodes :

Tu peux grâce au recordset monter en mémoire une table, un extrait de table (vue) sur laquelle tu vas pouvoir travailler.

C'est à toi de choisir la méthode en fonction de l'usage...



Concernant le packaging:

Tous les fichiers créés pour ton applications : exe, base de données,
image, txt, ini.... peuvent être associés à ton package qui sera mis en
oeuvre pour le déploiment. Comme tu t'en rendras compte le déploiment
est un axe de réflexion à lui tout seul.



Quand tu seras plus chevronné, tu penseras au déploiment avant le
codage... Mais cette étape viendra après, prends les problèmes, pour le
moment, dans l'ordre:



<ol>
<li>Crée ta base sous access</li>
<li>Crée tes requetes principales sous acces</li>
<li>Fait une interface VB</li>
<li>Connect-toi à la base</li>
<li>Intègre ton sql</li>
<li>Compile et test ton application</li>
<li>Fait ton package</li>
<li>Teste ton package</li>
</ol>




Bon code
madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
31 janv. 2005 à 09:44
Bonjour tout le monde.

Mercie beaucoup sa marche pour l'envoie, il ne marque plus d'erreur.

J'ai oublié de que que pour la lecture des données, je l'a fais sur un autre form
sur cette form je veux pouvoir voire les enregistrements, et les suprimer.

Voici ce que j'ai deja fais.

Option Explicit
Public serveur As String
Private nextSend As Boolean

Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset



cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = App.Path & "\emailenvoyé.mdb"
cnx.Open


rst.CursorLocation = adUseClient


rst.CursorType = adOpenDynamic


rst.LockType = adLockOptimistic


ReadRecord


End Sub

Private Sub ReadRecord()


Text1.Text = GetValue(rst!Message)
Text2.Text = GetValue(rst!Destinataire)
Text3.Text = GetValue(rst!objet)
Text4.Text = GetValue(rst!id)


End Sub

Private Function GetValue(fld As Field) As String


If IsNull(fld) Then
GetValue = ""

Else
GetValue = fld
End If



End Function

Private Sub suivant_Click()


If Not Adodemail.Recordset.EOF Then


Adodemail.Recordset.MoveNext

If Adodemail.Recordset.EOF Then

Adodemail.Recordset.MovePrevious

End If
End If

End Sub

Private Sub avant_Click()


If Not Adodemail.Recordset.BOF Then


Adodemail.Recordset.MovePrevious

If Adodemail.Recordset.BOF Then


Adodemail.Recordset.MoveNext


End If
End If


End Sub

Private Sub del_Click()


Delete From


End Sub

L'orsque que j'ouvre la l form pour la lecture, une fenêtre s'ouvre en me disant
erreur en selectionnant dans le readrecord la premiere ligne

Pouriez vous me dire où il ya une erreur SVP?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
31 janv. 2005 à 10:40
Je pense que c'est le type de variable de ta fonction qui n'est pas adapté...

C'est fondamental en programmation d'utiliser les bons type de données. C'est une des difficultés à franchir.





Private Function GetValue(fld As Field string) As String

If IsNull(fld) Then
GetValue = ""
Else
GetValue = fld
End If

End Function

explication :


Quand tu passes rst!Message...

tu passes bien une chaine pour passer un field il faudrait faire autrement et ça ne sert à rien pour ce que tu veux faire.

Déclare dim cnx As ADODB.Connection & dim rst As ADODB.Recordset
au niveau le plus haut pour commencer...pourquoi ? parceque tu les utilises partout dans ta form. Appelles les Gen_Cnx et Gen_rst pour bien les différencier de tes autres déclarations. Puis change les niveaux... Tu verras bien



madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
31 janv. 2005 à 20:11
Bonsoir tout le monde

il ya encore ce problème, je n'arrive pas à ouvrire la fenêtre.

il y a une erreur de compilation, valeur non déffinie en selectionnant rst

Private Sub ReadRecord()


Text1.Text = GetValue(rst!Message)
Text2.Text = GetValue(rst!Destinataire)
Text3.Text = GetValue(rst!objet)
Text4.Text = GetValue(rst!id)


End Sub

Est ce que je ne devrais pas mêtre un dim ou autre, je pense que si il met
valeur non défini, c'est qu'il ne reconné pas rst.

Quand penssez vous?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
31 janv. 2005 à 20:31
Tu as bien avencé, mais tu as lu trop vite... et il y a peut être trop d'information.



Ton problème est lié à la portée de la variable...: je ne t'es pas dit pour rien de déclarer tes variables au niveau le plus haut de telle sorte qu'elles soient visibles par toutes les procédures de ton formulaire :


Elles doivent exister
tant que le formulaire est ouvert !!! et être accessibles par toutes
tes procédures. Si tu déclares ces 2 variables dans les procédures
elles ne seront visibles et actives que durant l'exécution de la
procédure appelée, et donc inexistantes pour les autres; d'où ton message d'erreur .






Ton module de formulaire doit donc démarrer avec la déclaration Cnx et Rst au plus au niveau :


Dim cnx As ADODB.Connection


Dim rst As ADODB.Recordset





sub form_load()

end sub



....





Donc, au chargement (evenment load de form : form_load()) tu dois
initialiser ta connexion et charger ton formulaire avec
l'instenciation de ton recordset !



Ensuite par les procédures evenementielles tu accederas au valeurs de tes enregistrements... Tu traiteras les données etc...



Enfin quand tu fermeras ton formulaire dans l'évennement unload
(form_unload) tu fermeras et ton recorset et la connexion pour libérer
correctement la mémoire.

madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
31 janv. 2005 à 22:41
Rebonsoir tout le monde

Maintenant il marque Erreur d'execution : 3265
Impossible de trouver l'objet dans la collection correspondant au nom ou à la
réfférance ordinale demandé.

J'ai modifié les code ci dessour

Option Explicit
Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
Dim rstx As New ADODB.Command

Private Sub ReadRecord()


Text1.Text = GetValue(rst!messag)
Text2.Text = GetValue(rst!Destinataire)
Text3.Text = GetValue(rst!objet)
Text4.Text = GetValue(rst!id)
Text5.Text = GetValue(rst!Date)
Text6.Text = GetValue(rst!Heure)

End Sub

Est ce que cette valeur de la parenthese est le champ de la table?

Dois je faire une requette pour que sa marche?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 08:22
Salut,



la lecture du message d'erreur précédent et sa compréhension t'avaient mieux réussi précédement ;-)



Là je trouve le message d'erreur pourtant plus clair que l'autre : "Impossible de trouver l'objet dans la collection correspondant au nom ou à la référance ordinale demandé".




Donc la représentation rst!messag n'existe pas dans la déclaration du recordset:

=> rst!messag ne pointe pas vers un espace mémoire existant du recorset !!!




<ol>
<li>Vérifie la requête que tu as utilisé pour monter en mémoire le Recordset</li>
<li>Les élements de ta clause select doivent être les memes que ceux que tu utilises pour accéder aux valeurs avec la syntaxe rst!macolonne (c'est pas message le nom de ta colonne ?)</li>
</ol>
A+



Conseil :


<li>Ce que tu peux faire avant de faire la modif c'est de mettre en
commentaire seulement la ligne qui ne va pas et vérifier si tu as
d'autres erreurs....Pour mettre en commentaire commence la ligne par une simple côte : 'ceci est un commentaire</li>
<li>As-tu utilisé le débogageur ?

</li>

A+

madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
1 févr. 2005 à 09:40
Bonjour tout le monde

Avez vous des infos quel MDAC_TYP prendre sur Microsoft.com car
mon appli sera installé sur d'autre post

Mercie

Cordialement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 09:47
Avant de bruler les étapes...



As tu obtenu le comportement attendu de ton formulaire ?

madbob
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
1 févr. 2005 à 21:55
Bonsoir tout le monde

JE voudrais faire un récapitulatif svp

Voici ci dessou ma form load

Private Sub Form_Load()



Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset



cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = App.Path & "\emailenvoyé.mdb"
cnx.Open


rst.CursorLocation = adUseClient


rst.CursorType = adOpenDynamic


rst.LockType = adLockOptimistic


ReadRecord


rst.Source = "select T1.Text2 as A, T1.Text1 as Messag, T2.Text3 as Objet from EMAIL T1, EMAIL T2 WHERE T1.Text2= T1.Text2 AND T2.Text3 LIKE '*CS*' ORDER BY T1.Text2 ASC;"



End Sub

J'ai réussi à ouvrir la form j'ai ajouté des "" entre les parenthèse mai rien ne
s'affiche, il y a dans les texbox les élément qu'il ya entre les parenthèses.

Voici en dessous mon ReadRecord

Private Sub ReadRecord()


Text1.Text = GetValue("rst!messag")
Text2.Text = GetValue("rst!Destinataire")
Text3.Text = GetValue("rst!objet")
Text4.Text = GetValue("rst!id")
Text5.Text = GetValue("rst!Date")
Text6.Text = GetValue("rst!Heure")


End Sub

D'aprez vous où ce trouve le problème?

Mercie

Cordiallement

A bientôt
0
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
1 févr. 2005 à 22:51
Si tu mets une variable entr de " " le programme considerera ta variable comme du text...



Je t'ai conseiller de placer tes variables et je t'ai expliqué pourquoi...

Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset


Tu les remet dans une procédure...



Je veux bien passer du temps a t'expliquer mais pas me faire de noeud au cerveau

Amuses toi bien, j'ai autre chose à faire que écrire ton code

madbob
0