OVH Cloud OVH Cloud

Copier d'une table à une autre

3 réponses
Avatar
Luis
Bonjour,
Je fais la copie de certains champs d'une table dans une autre avec ce code
Dim Db As DAO.Database
Dim TableCommandes As Recordset
Dim TableContact As Recordset
Dim NbChamps As Integer
Dim i As Integer

Function SetContactCommande1()

Set Db = CurrentDb
Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
commandes WHERE RéfCommande=" & Forms![Commandes1].RéfCommande)
Set TableContact = Db.OpenRecordset("SELECT NCLIENT,[RESULTAT],[DATE],
[CONTACT], [COMMERCIAL], [CODE AGENCE] FROM [CONTACTS] ORDER BY NClient;")

If Not TableCommandes.NoMatch Then
NbChamps = TableCommandes.Fields.Count - 1
TableCommandes.Edit
TableContact.AddNew
For i = 0 To NbChamps
TableContact.Fields(i) = TableCommandes.Fields(i)
Next i
TableContact.Update
End If

TableCommandes.Close
TableContact.Close
End Function

Je ne me rappele plus comment faire pour que si dans la table TableContact
le [NCLIENT] existe que l'on compare le [RESULTAT] avec le
[REFERENCE] de la TableCommandes la copie ne se fasse pas si la valeur est
la même.

Merci à tous pour votre aide.
Luis

3 réponses

Avatar
Rv
Bonjour,


Par exemple avec la requête sur la table des commandes, en ne
travaillant que sur les enregistrements voulus. Si j'ai bien compris (j'ai
un doute!) ça doit être:

Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
COMMANDES INNER JOIN CONTACTS ON COMMANDES.NClient CONTACTS.NClient WHERE
COMMANDES.Reference <> CONTACTS.Resultat AND RéfCommande=" &
Forms![Commandes1].RéfCommande)

A+

Rv


"Luis" a écrit dans le message de
news:
Bonjour,
Je fais la copie de certains champs d'une table dans une autre avec ce
code

Dim Db As DAO.Database
Dim TableCommandes As Recordset
Dim TableContact As Recordset
Dim NbChamps As Integer
Dim i As Integer

Function SetContactCommande1()

Set Db = CurrentDb
Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
commandes WHERE RéfCommande=" & Forms![Commandes1].RéfCommande)
Set TableContact = Db.OpenRecordset("SELECT NCLIENT,[RESULTAT],[DATE],
[CONTACT], [COMMERCIAL], [CODE AGENCE] FROM [CONTACTS] ORDER BY NClient;")

If Not TableCommandes.NoMatch Then
NbChamps = TableCommandes.Fields.Count - 1
TableCommandes.Edit
TableContact.AddNew
For i = 0 To NbChamps
TableContact.Fields(i) = TableCommandes.Fields(i)
Next i
TableContact.Update
End If

TableCommandes.Close
TableContact.Close
End Function

Je ne me rappele plus comment faire pour que si dans la table TableContact
le [NCLIENT] existe que l'on compare le [RESULTAT] avec le
[REFERENCE] de la TableCommandes la copie ne se fasse pas si la valeur est
la même.

Merci à tous pour votre aide.
Luis


Avatar
Luis
Bonjour,
Je te remercie mais ça ne fait absolument rien, même pas une erreur.
La fonction est commandée par le bouton OK du Formulaire Commandes1.
La fonction que j'ai mis plus haut fonctionne, mais elle me copie à chaque
fois que sur le que l'on clique sur ce bouton OK du formulaire Commandes1.
Alors j'aimerai ajouter à cette fonction, la comparaison de NClient et le
champ REFERENCE de la table commandes avec NClient et le champ RESULTAT de la
table CONTACTS.
Si les deux sont identique la copie ne doit pas se faire.
Je pense que je m'étais mal fait comprendre.
Comme dirait Raymond, je ne suis pas clair dans mes explications.
Merci, pour ton aide.
Luis


Bonjour,


Par exemple avec la requête sur la table des commandes, en ne
travaillant que sur les enregistrements voulus. Si j'ai bien compris (j'ai
un doute!) ça doit être:

Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
COMMANDES INNER JOIN CONTACTS ON COMMANDES.NClient CONTACTS.NClient WHERE
COMMANDES.Reference <> CONTACTS.Resultat AND RéfCommande=" &
Forms![Commandes1].RéfCommande)

A+

Rv


"Luis" a écrit dans le message de
news:
Bonjour,
Je fais la copie de certains champs d'une table dans une autre avec ce
code

Dim Db As DAO.Database
Dim TableCommandes As Recordset
Dim TableContact As Recordset
Dim NbChamps As Integer
Dim i As Integer

Function SetContactCommande1()

Set Db = CurrentDb
Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
commandes WHERE RéfCommande=" & Forms![Commandes1].RéfCommande)
Set TableContact = Db.OpenRecordset("SELECT NCLIENT,[RESULTAT],[DATE],
[CONTACT], [COMMERCIAL], [CODE AGENCE] FROM [CONTACTS] ORDER BY NClient;")

If Not TableCommandes.NoMatch Then
NbChamps = TableCommandes.Fields.Count - 1
TableCommandes.Edit
TableContact.AddNew
For i = 0 To NbChamps
TableContact.Fields(i) = TableCommandes.Fields(i)
Next i
TableContact.Update
End If

TableCommandes.Close
TableContact.Close
End Function

Je ne me rappele plus comment faire pour que si dans la table TableContact
le [NCLIENT] existe que l'on compare le [RESULTAT] avec le
[REFERENCE] de la TableCommandes la copie ne se fasse pas si la valeur est
la même.

Merci à tous pour votre aide.
Luis







Avatar
Rv
Salut,

Peut-être:

Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
COMMANDES LEFT JOIN CONTACTS ON COMMANDES.NClient CONTACTS.NClient WHERE
((COMMANDES.Reference <> CONTACTS.Resultat AND CONTACTS.NClient IS NOT NULL)
OR CONTACTS.NClient IS NULL) AND RéfCommande=" &
Forms![Commandes1].RéfCommande)

qui permet d'obtenir les commandes avec RéfCommande Forms![Commandes1].RéfCommande telles que la table CONTACTS n'est pas
renseignée pour les clients de ces commandes ou bien telles que la table
CONTACTS contient les clients des commandes mais COMMANDES.Reference <>
CONTACTS.Resultat.

Une bonne chose pour se faire comprendre : un exemple pertinent!

A+

Rv

"Luis" a écrit dans le message de
news:
Bonjour,
Je te remercie mais ça ne fait absolument rien, même pas une erreur.
La fonction est commandée par le bouton OK du Formulaire Commandes1.
La fonction que j'ai mis plus haut fonctionne, mais elle me copie à chaque
fois que sur le que l'on clique sur ce bouton OK du formulaire Commandes1.
Alors j'aimerai ajouter à cette fonction, la comparaison de NClient et le
champ REFERENCE de la table commandes avec NClient et le champ RESULTAT de
la

table CONTACTS.
Si les deux sont identique la copie ne doit pas se faire.
Je pense que je m'étais mal fait comprendre.
Comme dirait Raymond, je ne suis pas clair dans mes explications.
Merci, pour ton aide.
Luis


Bonjour,


Par exemple avec la requête sur la table des commandes, en ne
travaillant que sur les enregistrements voulus. Si j'ai bien compris
(j'ai


un doute!) ça doit être:

Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
COMMANDES INNER JOIN CONTACTS ON COMMANDES.NClient CONTACTS.NClient
WHERE


COMMANDES.Reference <> CONTACTS.Resultat AND RéfCommande=" &
Forms![Commandes1].RéfCommande)

A+

Rv


"Luis" a écrit dans le message de
news:
Bonjour,
Je fais la copie de certains champs d'une table dans une autre avec ce
code

Dim Db As DAO.Database
Dim TableCommandes As Recordset
Dim TableContact As Recordset
Dim NbChamps As Integer
Dim i As Integer

Function SetContactCommande1()

Set Db = CurrentDb
Set TableCommandes = Db.OpenRecordset("SELECT NClient, [REFERENCE],
[DATECommande],[Commande passée par],[COMMERCIAL], [CODE AGENCE] FROM
commandes WHERE RéfCommande=" & Forms![Commandes1].RéfCommande)
Set TableContact = Db.OpenRecordset("SELECT NCLIENT,[RESULTAT],[DATE],
[CONTACT], [COMMERCIAL], [CODE AGENCE] FROM [CONTACTS] ORDER BY
NClient;")




If Not TableCommandes.NoMatch Then
NbChamps = TableCommandes.Fields.Count - 1
TableCommandes.Edit
TableContact.AddNew
For i = 0 To NbChamps
TableContact.Fields(i) = TableCommandes.Fields(i)
Next i
TableContact.Update
End If

TableCommandes.Close
TableContact.Close
End Function

Je ne me rappele plus comment faire pour que si dans la table
TableContact



le [NCLIENT] existe que l'on compare le [RESULTAT] avec le
[REFERENCE] de la TableCommandes la copie ne se fasse pas si la valeur
est



la même.

Merci à tous pour votre aide.
Luis