OVH Cloud OVH Cloud

Copier d'une table à l'autre

23 réponses
Avatar
Luis
Bonjour,
Je reviens sur un probl=E8me que Ilan m'a tr=E8s gentillement=20
aid=E9 =E0 r=E9soudre.
Mais j'ai toujours un probl=E8me.
J'ai un formulaire 'Clients' dans lequel il y a 24 champs=20
pour noter les contacts qui sont [RESPONSABLE];=20
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];=20
[POLITESSE1];...etc

La saisi dans ces champs se passe tr=E8s bien.
Je veux selon le cas copier toutes ces donn=E9es 'Contacts'=20
d'un client dans une autre table=20
appel=E9e 'Contacts_Clients' en utilisant la fonction=20
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db =3D CurrentDb

Chaine =3D "SELECT NClient, RESPONSABLE, RESPONSABLE2,=20
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,=20
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1, TELDIRECT2,=20
TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,=20
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2, DEPARTEMENT3=20
FROM Clients ORDER BY NClient"
Set TABLE1 =3D Db.OpenRecordset(Chaine)
Set TABLE2 =3D Db.OpenRecordset("SELECT * FROM=20
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=3D" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT =3D 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT =3D 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient) Then
GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient =3D TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT =3D 1 To 8
INDICEINFO =3D 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =3D=20
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'ex=E9cution '3061'
Trop peu de param=E8tres. 4 attendu

Et dans le code:
Set TABLE1 =3D Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer =E0 m'aider.
Luis

10 réponses

1 2 3
Avatar
Ilan
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas dans ta table.


De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problème que Ilan m'a très gentillement
aidé à résoudre.
Mais j'ai toujours un problème.
J'ai un formulaire 'Clients' dans lequel il y a 24 champs
pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe très bien.
Je veux selon le cas copier toutes ces données 'Contacts'
d'un client dans une autre table
appelée 'Contacts_Clients' en utilisant la fonction
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1, TELDIRECT2,
TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2, DEPARTEMENT3
FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient) Then
GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exécution '3061'
Trop peu de paramètres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer à m'aider.
Luis




Avatar
Luis
Bonjour Ilan,
Je suis surpris car tous les champs indiqués existent dans
la table1.
Et que faut-il faire pour que ça fonctionne?
Je tiens à te remercier pour toute ta collaboration.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problème que Ilan m'a très
gentillement


aidé à résoudre.
Mais j'ai toujours un problème.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe très bien.
Je veux selon le cas copier toutes ces
données 'Contacts'


d'un client dans une autre table
appelée 'Contacts_Clients' en utilisant la fonction
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient)
Then


GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exécution '3061'
Trop peu de paramètres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer à m'aider.
Luis


.





Avatar
Luis
Re-bonjour,
Pour les 4 champs manquants, il s'agissait effectivement
d'une erreur d'écriture de ma part dans
Chaine = "SELECT NClient, ..... FROM Clients ORDER BY
NClient"
J'ai écrit: [e-mail1],[e-mail2],[e-mail3] au lieu de e-
mail1, e-mail2, e-mail3

J'ai modifié les Db.OpenRecordset comme ça
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NClient FROM
CONTACTS_CLIENTS ORDER BY NClient")

Mais ça coince là:

Erreur d'exécution '3265'
Elément non trouvé dans cette collection
Et en surbrillance il y a
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)
J'espère que les modifs que j'ai apporté sont bonnes.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problème que Ilan m'a très
gentillement


aidé à résoudre.
Mais j'ai toujours un problème.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe très bien.
Je veux selon le cas copier toutes ces
données 'Contacts'


d'un client dans une autre table
appelée 'Contacts_Clients' en utilisant la fonction
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient)
Then


GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exécution '3061'
Trop peu de paramètres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer à m'aider.
Luis


.





Avatar
Gafish
Bonjour,

Tu dois avoir un dépassement dans les item.
Je te conseille plutôt pour les champs de faire Table2.Fields("NomDuChamp")
je trouve ca plus sur que les item.

Arnaud

"Luis" a écrit dans le message news:
0fb601c4b1e5$ade37a50$
Re-bonjour,
Pour les 4 champs manquants, il s'agissait effectivement
d'une erreur d'écriture de ma part dans
Chaine = "SELECT NClient, ..... FROM Clients ORDER BY
NClient"
J'ai écrit: [e-mail1],[e-mail2],[e-mail3] au lieu de e-
mail1, e-mail2, e-mail3

J'ai modifié les Db.OpenRecordset comme ça
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NClient FROM
CONTACTS_CLIENTS ORDER BY NClient")

Mais ça coince là:

Erreur d'exécution '3265'
Elément non trouvé dans cette collection
Et en surbrillance il y a
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)
J'espère que les modifs que j'ai apporté sont bonnes.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problème que Ilan m'a très
gentillement


aidé à résoudre.
Mais j'ai toujours un problème.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe très bien.
Je veux selon le cas copier toutes ces
données 'Contacts'


d'un client dans une autre table
appelée 'Contacts_Clients' en utilisant la fonction
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient)
Then


GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) >> TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exécution '3061'
Trop peu de paramètres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer à m'aider.
Luis


.





Avatar
Ilan
Bonjour Luis,
Juste pour info j'aimerai comprendre
1)comment l'instruction
set TABLE2Û.openrecordset("SELECT * FROM Contacts_Clients;")
a pu se transformer en
set TABLE2Û.OpenRecordset("SELECT Nclient FROM Contacts_Clients;")

2) Pourquoi les 8 champs des 3 contacts ne sont pas regroupes.

Exemple :
Responsable,departement,politesse,teldirect,nateldirect,fax,email,fonction,
Responsable2,departement2,politesse2,teldirect2,nateldirect2,fax2,email2,fonction2,
Responsable3,departement3,politesse3,teldirect3,nateldirect3,fax3,email3,fonction3,





Re-bonjour,
Pour les 4 champs manquants, il s'agissait effectivement
d'une erreur d'écriture de ma part dans
Chaine = "SELECT NClient, ..... FROM Clients ORDER BY
NClient"
J'ai écrit: [e-mail1],[e-mail2],[e-mail3] au lieu de e-
mail1, e-mail2, e-mail3

J'ai modifié les Db.OpenRecordset comme ça
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NClient FROM
CONTACTS_CLIENTS ORDER BY NClient")

Mais ça coince là:

Erreur d'exécution '3265'
Elément non trouvé dans cette collection
Et en surbrillance il y a
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)
J'espère que les modifs que j'ai apporté sont bonnes.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problème que Ilan m'a très
gentillement


aidé à résoudre.
Mais j'ai toujours un problème.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe très bien.
Je veux selon le cas copier toutes ces
données 'Contacts'


d'un client dans une autre table
appelée 'Contacts_Clients' en utilisant la fonction
suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE, POLITESSE2,
POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2, NATEL3,
FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient)
Then


GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exécution '3061'
Trop peu de paramètres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en surbrillance.

Si vous pouvez continuer à m'aider.
Luis


.








Avatar
Luis
Bonjour Ilan,
J'ai changé Set TABLE2 = Db.OpenRecordset("SELECT NClient
FROM CONTACTS_CLIENTS ORDER BY NClient")
par set TABLE2Û.OpenRecordset("SELECT Nclient FROM
Contacts_Clients;")
Par ce que ça bogueait
Bon maintenant j'ai mis set TABLE2Û.OpenRecordset
("SELECT Nclient FROM Contacts_Clients;")

J'ai mis les champs regroupés.

Mais j'ai toujours un message d'erreur:
'Aucun enregistrement en cours.'
avec
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient) Then
en surbrillance
Bien sur qu'il n'y a pas d'enregistrement dans la table2
puisque je viens de le saisir dans la table1

Donc la fonction:
GoSub AjouterContact
Else
TABLE2.Edit
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return

ne se fait pas

Voilà pourquoi je tourne en rond et que j'ai modifié le
début du code car je pensais que les erreurs venaient de
là.
Luis
-----Message d'origine-----
Bonjour Luis,
Juste pour info j'aimerai comprendre
1)comment l'instruction
set TABLE2Û.OpenRecordset("SELECT Nclient
FROM Contacts_Clients;")

a pu se transformer en
set TABLE2Û.OpenRecordset("SELECT Nclient FROM
Contacts_Clients;")


2) Pourquoi les 8 champs des 3 contacts ne sont pas
regroupes.


Exemple :
Responsable,departement,politesse,teldirect,nateldirect,fa
x,email,fonction,

Responsable2,departement2,politesse2,teldirect2,nateldirec
t2,fax2,email2,fonction2,

Responsable3,departement3,politesse3,teldirect3,nateldirec
t3,fax3,email3,fonction3,






Re-bonjour,
Pour les 4 champs manquants, il s'agissait
effectivement


d'une erreur d'écriture de ma part dans
Chaine = "SELECT NClient, ..... FROM Clients ORDER BY
NClient"
J'ai écrit: [e-mail1],[e-mail2],[e-mail3] au lieu de e-
mail1, e-mail2, e-mail3

J'ai modifié les Db.OpenRecordset comme ça
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NClient FROM
CONTACTS_CLIENTS ORDER BY NClient")

Mais ça coince là :

Erreur d'exécution '3265'
Elément non trouvé dans cette collection
Et en surbrillance il y a
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)
J'espère que les modifs que j'ai apporté sont bonnes.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problÃf¨me que Ilan m'a trÃf¨s
gentillement


aidÃf© Ãf rÃf©soudre.
Mais j'ai toujours un problÃf¨me.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe trÃf¨s bien.
Je veux selon le cas copier toutes ces
donnÃf©es 'Contacts'


d'un client dans une autre table
appelÃf©e 'Contacts_Clients' en utilisant la
fonction




suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE,
POLITESSE2,




POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2,
NATEL3,




FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!
NClient)




Then
GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exÃf©cution '3061'
Trop peu de paramÃf¨tres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en
surbrillance.





Si vous pouvez continuer Ãf m'aider.
Luis


.




.







Avatar
Ilan
Ce qui est surrealiste c'est que tu arrives meme a changer le texte des
messages
d'origine dans tes reponses.
Voici la ligne qui je t'ai envoye il y a 1 semaine maintenant :

Set TABLE2Û.openrecordset("SELECT * FROM Contacts_Clients ORDER BY
NClient;")








Bonjour Ilan,
J'ai changé Set TABLE2 = Db.OpenRecordset("SELECT NClient
FROM CONTACTS_CLIENTS ORDER BY NClient")
par set TABLE2Û.OpenRecordset("SELECT Nclient FROM
Contacts_Clients;")
Par ce que ça bogueait
Bon maintenant j'ai mis set TABLE2Û.OpenRecordset
("SELECT Nclient FROM Contacts_Clients;")

J'ai mis les champs regroupés.

Mais j'ai toujours un message d'erreur:
'Aucun enregistrement en cours.'
avec
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!NClient) Then
en surbrillance
Bien sur qu'il n'y a pas d'enregistrement dans la table2
puisque je viens de le saisir dans la table1

Donc la fonction:
GoSub AjouterContact
Else
TABLE2.Edit
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return

ne se fait pas

Voilà pourquoi je tourne en rond et que j'ai modifié le
début du code car je pensais que les erreurs venaient de
là.
Luis
-----Message d'origine-----
Bonjour Luis,
Juste pour info j'aimerai comprendre
1)comment l'instruction
set TABLE2Û.OpenRecordset("SELECT Nclient
FROM Contacts_Clients;")

a pu se transformer en
set TABLE2Û.OpenRecordset("SELECT Nclient FROM
Contacts_Clients;")


2) Pourquoi les 8 champs des 3 contacts ne sont pas
regroupes.


Exemple :
Responsable,departement,politesse,teldirect,nateldirect,fa
x,email,fonction,

Responsable2,departement2,politesse2,teldirect2,nateldirec
t2,fax2,email2,fonction2,

Responsable3,departement3,politesse3,teldirect3,nateldirec
t3,fax3,email3,fonction3,






Re-bonjour,
Pour les 4 champs manquants, il s'agissait
effectivement


d'une erreur d'écriture de ma part dans
Chaine = "SELECT NClient, ..... FROM Clients ORDER BY
NClient"
J'ai écrit: [e-mail1],[e-mail2],[e-mail3] au lieu de e-
mail1, e-mail2, e-mail3

J'ai modifié les Db.OpenRecordset comme ça
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT NClient FROM
CONTACTS_CLIENTS ORDER BY NClient")

Mais ça coince là :

Erreur d'exécution '3265'
Elément non trouvé dans cette collection
Et en surbrillance il y a
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)
J'espère que les modifs que j'ai apporté sont bonnes.
Luis
-----Message d'origine-----
Bonjour Luis,
ca veut dire que 4 des champs indiques n'existent pas
dans ta table.



De toute maniere ca ne marchera pas comme ca.





Bonjour,
Je reviens sur un problÃf¨me que Ilan m'a trÃf¨s
gentillement


aidÃf© Ãf rÃf©soudre.
Mais j'ai toujours un problÃf¨me.
J'ai un formulaire 'Clients' dans lequel il y a 24
champs


pour noter les contacts qui sont [RESPONSABLE];
[RESPONSABLE1]; [RESPONSABLE2]; [POLITESSE];
[POLITESSE1];...etc

La saisi dans ces champs se passe trÃf¨s bien.
Je veux selon le cas copier toutes ces
donnÃf©es 'Contacts'


d'un client dans une autre table
appelÃf©e 'Contacts_Clients' en utilisant la
fonction




suivante:
Dim Db As Database
Dim TABLE1, TABLE2 As Recordset
Dim CONTACT, INFOCONTACT, INDICEINFO As Integer

Function SetContact()
Set Db = CurrentDb

Chaine = "SELECT NClient, RESPONSABLE, RESPONSABLE2,
RESPONSABLE3, NATEL, fonction, POLITESSE,
POLITESSE2,




POLITESSE3, FONCTION2, FONCTION3, TELDIRECT1,
TELDIRECT2,


TELEDIRECT3, e-mail1, e-mail2, e-mail3, NATEL2,
NATEL3,




FAX1, FAX2, FAX3, DEPARTEMENT1, DEPARTEMENT2,
DEPARTEMENT3


FROM Clients ORDER BY NClient"
Set TABLE1 = Db.OpenRecordset(Chaine)
Set TABLE2 = Db.OpenRecordset("SELECT * FROM
Contacts_Clients ORDER BY NClient,")

If Not (TABLE1.BOF Or TABLE1.EOF) Then

TABLE2.FindFirst ("NClient=" & TABLE1!NClient)
If TABLE2.NoMatch Then
For CONTACT = 1 To 3
GoSub AjouterContact
GoSub EcrireInfo
Next CONTACT
Else
For CONTACT = 1 To 3
If (TABLE2.EOF Or TABLE2!NClient <> TABLE1!
NClient)




Then
GoSub AjouterContact
Else
TABLE2.Edit
Contact,Politesse,....,Email
End If
GoSub EcrireInfo
TABLE2.MoveNext
Next CONTACT
End If
End If
TABLE1.Close
TABLE2.Close
Exit Function

AjouterContact:
TABLE2.AddNew
TABLE2!NClient = TABLE1!NClient
Return

EcrireInfo:
For INFOCONTACT = 1 To 8
INDICEINFO = 8 * (CONTACT - 1) + INFOCONTACT
TABLE2.Fields.Item(INFOCONTACT + 1) =
TABLE1.Fields.Item(INDICEINFO)
Next INFOCONTACT
TABLE2.Update
Return
End Function

Malheuresement j'ai: Erreur d'exÃf©cution '3061'
Trop peu de paramÃf¨tres. 4 attendu

Et dans le code:
Set TABLE1 = Db.OpenRecordset(Chaine) en
surbrillance.





Si vous pouvez continuer Ãf m'aider.
Luis


.




.










Avatar
Ilan
si ca ne marchera pas chez toi Remplace les 5 lignes suivantes

If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient) then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif
Avatar
Luis
Re-bonjour,
J'ai remplacé les 5 lignes par les 9 nouvelles et j'ai
encore une erreur:
Elément non trouvé dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)

Désolé en général je fais du copier/coller, je ne sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5 lignes
suivantes


If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient) then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.



Avatar
Ilan
Luis, je pense qu'il est important que tu comprennes le code.

L'erreur t'indique que :
soit INFOCONTACT+1 est superieur au nombre de champs dans TABLE2
soit INDICEINFO est superieur au nombre de champ dans TABLE1





Re-bonjour,
J'ai remplacé les 5 lignes par les 9 nouvelles et j'ai
encore une erreur:
Elément non trouvé dans la collection.
et en surbrillance:
TABLE2.Fields.Item(INFOCONTACT + 1) = TABLE1.Fields.Item
(INDICEINFO)

Désolé en général je fais du copier/coller, je ne sais pas
comment j'ai fais cette erreur.
Luis
-----Message d'origine-----
si ca ne marchera pas chez toi Remplace les 5 lignes
suivantes


If (TABLE2.EOF or TABLE2!NClient<>TABLE1!NClient) then
gosub AjouterContact
else
TABLE2.Edit
endif

par ces 9 lignes

If TABLE2.EOF Then
Gosub AjouterContact
else
If TABLE2!NClient<>TABLE1!NClient then
Gosub AjouterContact
else
TABLE2.Edit
endif
endif

.






1 2 3