Bonjour,
Depuis un formulaire de saisie ou l'on rentre des=20
cordonn=E9es sur les champs t=E9l=E9phone et mobile je veux=20
alimenter une autre table, pour regrouper tous les no de=20
t=E9l=E9phone et voil=E0 ce que j'ai fait:
Private Sub TEL_LostFocus()
Id =3D [IDINCRIT]
=20
Dim Crit=E8re As String, MaBD As Database, MaTable As=20
Recordset
Set MaBD =3D DBEngine.Workspaces(0).Databases(0)
Set MaTable =3D MaBD.OpenRecordset("TELEPHONESREPORTES",=20
dbOpenDynaset)
MaTable.MoveFirst=20
Do Until MaTable.EOF=20
=20
TESTER =3D MaTable!Id
If TESTER =3D Id Then
TEL =3D MaTable!TELEPHONEREPORTE
If TELEPHONEREPORTE =3D TEL Then
trouve =3D 1
Exit Do
Else
trouve =3D 0
End If
MaTable.MoveNext
Else
MaTable.MoveNext
End If
Loop ' Fin de la boucle.
If trouve =3D 0 Then
MaTable.AddNew
MaTable!Id =3D IDINCRIT =20
MaTable!TELEPHONEREPORTE =3D TEL
MaTable!DOMAINE =3D DOMAINE
MaTable.Update
MaTable.Close
Else
MaTable.Close
End If
End Sub
J'ai un probl=E8me:
=E0 chaque passage sur le champ "TEL" du formulaire il se=20
cr=E9e une nouvelle entr=E9e dans la table "TELEPHONESREPORTES"
Comment =E9viter =E7a?
Merci pour vos pr=E9cieux conseils.
Luis
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles
Bonjour, Depuis un formulaire de saisie ou l'on rentre des cordonnées sur les champs téléphone et mobile je veux alimenter une autre table, pour regrouper tous les no de téléphone et voilà ce que j'ai fait: ... J'ai un problème: à chaque passage sur le champ "TEL" du formulaire il se crée une nouvelle entrée dans la table "TELEPHONESREPORTES" Comment éviter ça? Merci pour vos précieux conseils. Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure sur clic d'un bouton, ainsi elle sera exécutée seulement quand l'utilisateur le décidera. Par ailleurs, je me suis permis de reprendre entièrement ta procédure et de la simplifier. Voila ce que cela donne:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]", dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If End Sub
Cela te convient-il ?
Bonne continuation
Bonjour,
Depuis un formulaire de saisie ou l'on rentre des
cordonnées sur les champs téléphone et mobile je veux
alimenter une autre table, pour regrouper tous les no de
téléphone et voilà ce que j'ai fait:
...
J'ai un problème:
à chaque passage sur le champ "TEL" du formulaire il se
crée une nouvelle entrée dans la table "TELEPHONESREPORTES"
Comment éviter ça?
Merci pour vos précieux conseils.
Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure sur clic d'un bouton,
ainsi elle sera exécutée seulement quand l'utilisateur le décidera.
Par ailleurs, je me suis permis de reprendre entièrement ta procédure et de
la simplifier.
Voila ce que cela donne:
Private Sub AjoutTelephone()
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]", dbOpenDynaset)
If MaTable.EOF Then
' Le recordset est vide, donc pas d'enregistrement correspondant
MaTable.AddNew
MaTable!ID = [IDINCRIT]
MaTable!TELEPHONEREPORTE = [TEL]
MaTable!DOMAINE = [DOMAINE]
MaTable.Update
End If
End Sub
Bonjour, Depuis un formulaire de saisie ou l'on rentre des cordonnées sur les champs téléphone et mobile je veux alimenter une autre table, pour regrouper tous les no de téléphone et voilà ce que j'ai fait: ... J'ai un problème: à chaque passage sur le champ "TEL" du formulaire il se crée une nouvelle entrée dans la table "TELEPHONESREPORTES" Comment éviter ça? Merci pour vos précieux conseils. Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure sur clic d'un bouton, ainsi elle sera exécutée seulement quand l'utilisateur le décidera. Par ailleurs, je me suis permis de reprendre entièrement ta procédure et de la simplifier. Voila ce que cela donne:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]", dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If End Sub
Cela te convient-il ?
Bonne continuation
Luis
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone()
Dim Table1 As Recordset Dim Table2 As Recordset Dim TELEPHONEREPORTEDEF As Integer, InfoTELEPHONEREPORTEDEF As Integer, IndiceTELEPHONEREPORTEDEF As Integer Set Db = CurrentDb
Set Table1 = Db.OpenRecordset("SELECT IDINSCRIT, [TEL], [DOMAINE] FROM INSCRITS WHERE IDINSCRIT =" & Forms![TOUS INSCRITS].IDINSCRIT) Set Table2 = Db.OpenRecordset("SELECT ID, [TELEPHONEREPORTE],[DOMAINE] FROM [TELEPHONESREPORTES] ORDER BY id;")
If Not (Table1.BOF And Table1.EOF) Then Table2.FindFirst ("ID=" & Table1!IDINSCRIT) If Table2.NoMatch Then For TELEPHONEREPORTE = 1 To 1 GoSub AjouterTELEPHONEREPORTEDEF GoSub EcrireTELEPHONEREPORTEDEF Next TELEPHONEREPORTE Else For TELEPHONEREPORTE = 1 To 1 If Table2.EOF Then GoSub AjouterTELEPHONEREPORTEDEF Else If Table2!Id <> Table1!IDINSCRIT Then GoSub AjouterTELEPHONEREPORTEDEF Else Table2.Edit End If End If GoSub EcrireTELEPHONEREPORTEDEF
If Not Table2.EOF Then Table2.MoveNext
Next TELEPHONEREPORTE End If End If Table1.Close Table2.Close Exit Function
EcrireTELEPHONEREPORTEDEF: For InfoTELEPHONEREPORTEDEF = 1 To 2 IndiceTELEPHONEREPORTEDEF = 2 * (TELEPHONEREPORTE - 1) + InfoTELEPHONEREPORTEDEF Table2.Fields.Item(InfoTELEPHONEREPORTEDEF) = Table1.Fields.Item(IndiceTELEPHONEREPORTEDEF) Next InfoTELEPHONEREPORTEDEF Table2.Update Return End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
-----Message d'origine-----
Bonjour, Depuis un formulaire de saisie ou l'on rentre des cordonnées sur les champs téléphone et mobile je veux alimenter une autre table, pour regrouper tous les no de téléphone et voilà ce que j'ai fait: ... J'ai un problème: à chaque passage sur le champ "TEL" du formulaire il se crée une nouvelle entrée dans la table "TELEPHONESREPORTES"
Comment éviter ça? Merci pour vos précieux conseils. Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure sur clic d'un bouton,
ainsi elle sera exécutée seulement quand l'utilisateur le décidera.
Par ailleurs, je me suis permis de reprendre entièrement ta procédure et de
la simplifier. Voila ce que cela donne:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]", dbOpenDynaset)
If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant
MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If End Sub
Cela te convient-il ?
Bonne continuation
.
Bonjour,
Grâce à ce que tu viens de me donner j'ai trouvé:
Function AjoutTelephone()
Dim Table1 As Recordset
Dim Table2 As Recordset
Dim TELEPHONEREPORTEDEF As Integer,
InfoTELEPHONEREPORTEDEF As Integer,
IndiceTELEPHONEREPORTEDEF As Integer
Set Db = CurrentDb
Set Table1 = Db.OpenRecordset("SELECT IDINSCRIT, [TEL],
[DOMAINE] FROM INSCRITS WHERE IDINSCRIT =" & Forms![TOUS
INSCRITS].IDINSCRIT)
Set Table2 = Db.OpenRecordset("SELECT ID,
[TELEPHONEREPORTE],[DOMAINE] FROM [TELEPHONESREPORTES]
ORDER BY id;")
If Not (Table1.BOF And Table1.EOF) Then
Table2.FindFirst ("ID=" & Table1!IDINSCRIT)
If Table2.NoMatch Then
For TELEPHONEREPORTE = 1 To 1
GoSub AjouterTELEPHONEREPORTEDEF
GoSub EcrireTELEPHONEREPORTEDEF
Next TELEPHONEREPORTE
Else
For TELEPHONEREPORTE = 1 To 1
If Table2.EOF Then
GoSub AjouterTELEPHONEREPORTEDEF
Else
If Table2!Id <> Table1!IDINSCRIT Then
GoSub AjouterTELEPHONEREPORTEDEF
Else
Table2.Edit
End If
End If
GoSub EcrireTELEPHONEREPORTEDEF
If Not Table2.EOF Then Table2.MoveNext
Next TELEPHONEREPORTE
End If
End If
Table1.Close
Table2.Close
Exit Function
EcrireTELEPHONEREPORTEDEF:
For InfoTELEPHONEREPORTEDEF = 1 To 2
IndiceTELEPHONEREPORTEDEF = 2 * (TELEPHONEREPORTE - 1) +
InfoTELEPHONEREPORTEDEF
Table2.Fields.Item(InfoTELEPHONEREPORTEDEF) =
Table1.Fields.Item(IndiceTELEPHONEREPORTEDEF)
Next InfoTELEPHONEREPORTEDEF
Table2.Update
Return
End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de
doublons et si on change[TEL], 'TELEPHONEREPORTE' change
aussi.
C'est pas super!!!!
Luis
-----Message d'origine-----
Bonjour,
Depuis un formulaire de saisie ou l'on rentre des
cordonnées sur les champs téléphone et mobile je veux
alimenter une autre table, pour regrouper tous les no de
téléphone et voilà ce que j'ai fait:
...
J'ai un problème:
à chaque passage sur le champ "TEL" du formulaire il se
crée une nouvelle entrée dans la
table "TELEPHONESREPORTES"
Comment éviter ça?
Merci pour vos précieux conseils.
Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure
sur clic d'un bouton,
ainsi elle sera exécutée seulement quand l'utilisateur le
décidera.
Par ailleurs, je me suis permis de reprendre entièrement
ta procédure et de
la simplifier.
Voila ce que cela donne:
Private Sub AjoutTelephone()
Dim Critère As String, MaBD As Database, MaTable As
Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("SELECT * FROM
TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]",
dbOpenDynaset)
If MaTable.EOF Then
' Le recordset est vide, donc pas
d'enregistrement correspondant
MaTable.AddNew
MaTable!ID = [IDINCRIT]
MaTable!TELEPHONEREPORTE = [TEL]
MaTable!DOMAINE = [DOMAINE]
MaTable.Update
End If
End Sub
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone()
Dim Table1 As Recordset Dim Table2 As Recordset Dim TELEPHONEREPORTEDEF As Integer, InfoTELEPHONEREPORTEDEF As Integer, IndiceTELEPHONEREPORTEDEF As Integer Set Db = CurrentDb
Set Table1 = Db.OpenRecordset("SELECT IDINSCRIT, [TEL], [DOMAINE] FROM INSCRITS WHERE IDINSCRIT =" & Forms![TOUS INSCRITS].IDINSCRIT) Set Table2 = Db.OpenRecordset("SELECT ID, [TELEPHONEREPORTE],[DOMAINE] FROM [TELEPHONESREPORTES] ORDER BY id;")
If Not (Table1.BOF And Table1.EOF) Then Table2.FindFirst ("ID=" & Table1!IDINSCRIT) If Table2.NoMatch Then For TELEPHONEREPORTE = 1 To 1 GoSub AjouterTELEPHONEREPORTEDEF GoSub EcrireTELEPHONEREPORTEDEF Next TELEPHONEREPORTE Else For TELEPHONEREPORTE = 1 To 1 If Table2.EOF Then GoSub AjouterTELEPHONEREPORTEDEF Else If Table2!Id <> Table1!IDINSCRIT Then GoSub AjouterTELEPHONEREPORTEDEF Else Table2.Edit End If End If GoSub EcrireTELEPHONEREPORTEDEF
If Not Table2.EOF Then Table2.MoveNext
Next TELEPHONEREPORTE End If End If Table1.Close Table2.Close Exit Function
EcrireTELEPHONEREPORTEDEF: For InfoTELEPHONEREPORTEDEF = 1 To 2 IndiceTELEPHONEREPORTEDEF = 2 * (TELEPHONEREPORTE - 1) + InfoTELEPHONEREPORTEDEF Table2.Fields.Item(InfoTELEPHONEREPORTEDEF) = Table1.Fields.Item(IndiceTELEPHONEREPORTEDEF) Next InfoTELEPHONEREPORTEDEF Table2.Update Return End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
-----Message d'origine-----
Bonjour, Depuis un formulaire de saisie ou l'on rentre des cordonnées sur les champs téléphone et mobile je veux alimenter une autre table, pour regrouper tous les no de téléphone et voilà ce que j'ai fait: ... J'ai un problème: à chaque passage sur le champ "TEL" du formulaire il se crée une nouvelle entrée dans la table "TELEPHONESREPORTES"
Comment éviter ça? Merci pour vos précieux conseils. Luis
Bonjour, Luis
Tout d'abord, il est préférable de placer ta procédure sur clic d'un bouton,
ainsi elle sera exécutée seulement quand l'utilisateur le décidera.
Par ailleurs, je me suis permis de reprendre entièrement ta procédure et de
la simplifier. Voila ce que cela donne:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL]", dbOpenDynaset)
If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant
MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If End Sub
Cela te convient-il ?
Bonne continuation
.
Gilles
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone() ... End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas tout compris à ta fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce une erreur de frappe?) est systématiquement égale à 1. Dans la sous-procédure "Ecrire", la ligne "Indice = 2 * (TELEPHONEREPORTE - 1) + Info" équivaut donc à : "Indice = 2 * (1 - 1) + Info" => "Indice = 2 * (0) + Info" => "Indice = 0 + Info" => "Indice = Info" Dans cette sous-procédure, tu recopies donc les deux premiers champs de Table1 dans les deux premiers de Table2. Est-ce vraiment ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en français" et me donner quelques indices sur la signification de tes champs et de tes tables ?
Sur ces considérations, je te souhaite une bonne soirée. A demain (avec des neurones neuves et montées dans le bon sens ;-))
Bonjour,
Grâce à ce que tu viens de me donner j'ai trouvé:
Function AjoutTelephone()
...
End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de
doublons et si on change[TEL], 'TELEPHONEREPORTE' change
aussi.
C'est pas super!!!!
Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas tout compris à ta
fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce une erreur de
frappe?) est systématiquement égale à 1.
Dans la sous-procédure "Ecrire", la ligne "Indice = 2 * (TELEPHONEREPORTE -
1) + Info" équivaut donc à :
"Indice = 2 * (1 - 1) + Info"
=> "Indice = 2 * (0) + Info"
=> "Indice = 0 + Info"
=> "Indice = Info"
Dans cette sous-procédure, tu recopies donc les deux premiers champs de
Table1 dans les deux premiers de Table2. Est-ce vraiment ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en français" et me donner
quelques indices sur la signification de tes champs et de tes tables ?
Sur ces considérations, je te souhaite une bonne soirée.
A demain (avec des neurones neuves et montées dans le bon sens ;-))
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone() ... End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas tout compris à ta fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce une erreur de frappe?) est systématiquement égale à 1. Dans la sous-procédure "Ecrire", la ligne "Indice = 2 * (TELEPHONEREPORTE - 1) + Info" équivaut donc à : "Indice = 2 * (1 - 1) + Info" => "Indice = 2 * (0) + Info" => "Indice = 0 + Info" => "Indice = Info" Dans cette sous-procédure, tu recopies donc les deux premiers champs de Table1 dans les deux premiers de Table2. Est-ce vraiment ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en français" et me donner quelques indices sur la signification de tes champs et de tes tables ?
Sur ces considérations, je te souhaite une bonne soirée. A demain (avec des neurones neuves et montées dans le bon sens ;-))
Luis
Bonjour Gilles
TELEPHONEREPORTE n'a pas de faute de frappe, TELEPHONEREPORTE est un champ de la Table2
Maintenant je t'explique (comme tu dis si bien, en français) la totalité de la solution que je veux trouver :
Il y a une table 'INCRITS', une table 'CLIENTS' et une table 'FOURNISSEURS'.
Je veux récupérer dans une seul table les numéros de téléphones regroupés dans un champs appelé TELEPHONEREPORTE , depuis la Table 'INCRITS', la table 'CLIENTS' et la table 'FOURNISSEURS' je copie les numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone + IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE].
DOMAINE est un identificateur qui désigne s'il s'agit d'un inscrit, d'un client ou d'un fournisseur.
Donc j'ai trois fois le code concerné : 1. dans le formulaire INSCRITS 2. dans le formulaire CLIENTS (adapté à la table CLIENTS) 3. dans le formulaire FOURNISSEURS (adapté à la Table FOURNISSEURS)
Dans le menu principal de la base de données j'ai un Champ 'Zone de liste déroulante' avec une requête basée sur la Table2. Lorsque l'on m'appelle au téléphone j'ai le no qui s'affiche sur le poste (de téléphone). Je saisi vite le no de téléphone affichée dans le champ 'Zone de liste déroulante' et sur clic de ce Champ, repère le domaine et ouvre le formulaire de l'inscrit ou du client ou du fournisseur d'après le no ID.
Voilà pour l'explication, j'espère que j'ai réussi à être un peu plus clair je reconnais que l'on me reproche d'être un peu brouillon dans mes explications. Si quelque chose te chicane, dit-le moi. Luis
-----Message d'origine-----
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone() ... End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de
doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas tout compris à ta
fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce une erreur de
frappe?) est systématiquement égale à 1. Dans la sous-procédure "Ecrire", la ligne "Indice = 2 * (TELEPHONEREPORTE -
1) + Info" équivaut donc à : "Indice = 2 * (1 - 1) + Info" => "Indice = 2 * (0) + Info" => "Indice = 0 + Info" => "Indice = Info" Dans cette sous-procédure, tu recopies donc les deux premiers champs de
Table1 dans les deux premiers de Table2. Est-ce vraiment ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en français" et me donner
quelques indices sur la signification de tes champs et de tes tables ?
Sur ces considérations, je te souhaite une bonne soirée. A demain (avec des neurones neuves et montées dans le bon sens ;-))
.
Bonjour Gilles
TELEPHONEREPORTE n'a pas de faute de frappe,
TELEPHONEREPORTE est un champ de la Table2
Maintenant je t'explique (comme tu dis si bien, en
français) la totalité de la solution que je veux trouver :
Il y a une table 'INCRITS', une table 'CLIENTS' et une
table 'FOURNISSEURS'.
Je veux récupérer dans une seul table les numéros de
téléphones regroupés dans un champs appelé
TELEPHONEREPORTE , depuis la Table 'INCRITS', la
table 'CLIENTS' et la table 'FOURNISSEURS' je copie les
numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone +
IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE].
DOMAINE est un identificateur qui désigne s'il s'agit d'un
inscrit, d'un client ou d'un fournisseur.
Donc j'ai trois fois le code concerné :
1. dans le formulaire INSCRITS
2. dans le formulaire CLIENTS (adapté à la table
CLIENTS)
3. dans le formulaire FOURNISSEURS (adapté à la Table
FOURNISSEURS)
Dans le menu principal de la base de données j'ai un
Champ 'Zone de liste déroulante' avec une requête basée
sur la Table2.
Lorsque l'on m'appelle au téléphone j'ai le no qui
s'affiche sur le poste (de téléphone).
Je saisi vite le no de téléphone affichée dans le
champ 'Zone de liste déroulante' et sur clic de ce Champ,
repère le domaine et ouvre le formulaire de l'inscrit ou
du client ou du fournisseur d'après le no ID.
Voilà pour l'explication, j'espère que j'ai réussi à être
un peu plus clair je reconnais que l'on me reproche d'être
un peu brouillon dans mes explications.
Si quelque chose te chicane, dit-le moi.
Luis
-----Message d'origine-----
Bonjour,
Grâce à ce que tu viens de me donner j'ai trouvé:
Function AjoutTelephone()
...
End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas
de
doublons et si on change[TEL], 'TELEPHONEREPORTE' change
aussi.
C'est pas super!!!!
Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas
tout compris à ta
fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce
une erreur de
frappe?) est systématiquement égale à 1.
Dans la sous-procédure "Ecrire", la ligne "Indice = 2 *
(TELEPHONEREPORTE -
1) + Info" équivaut donc à :
"Indice = 2 * (1 - 1) + Info"
=> "Indice = 2 * (0) + Info"
=> "Indice = 0 + Info"
=> "Indice = Info"
Dans cette sous-procédure, tu recopies donc les deux
premiers champs de
Table1 dans les deux premiers de Table2. Est-ce vraiment
ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en
français" et me donner
quelques indices sur la signification de tes champs et de
tes tables ?
Sur ces considérations, je te souhaite une bonne soirée.
A demain (avec des neurones neuves et montées dans le bon
sens ;-))
TELEPHONEREPORTE n'a pas de faute de frappe, TELEPHONEREPORTE est un champ de la Table2
Maintenant je t'explique (comme tu dis si bien, en français) la totalité de la solution que je veux trouver :
Il y a une table 'INCRITS', une table 'CLIENTS' et une table 'FOURNISSEURS'.
Je veux récupérer dans une seul table les numéros de téléphones regroupés dans un champs appelé TELEPHONEREPORTE , depuis la Table 'INCRITS', la table 'CLIENTS' et la table 'FOURNISSEURS' je copie les numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone + IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE].
DOMAINE est un identificateur qui désigne s'il s'agit d'un inscrit, d'un client ou d'un fournisseur.
Donc j'ai trois fois le code concerné : 1. dans le formulaire INSCRITS 2. dans le formulaire CLIENTS (adapté à la table CLIENTS) 3. dans le formulaire FOURNISSEURS (adapté à la Table FOURNISSEURS)
Dans le menu principal de la base de données j'ai un Champ 'Zone de liste déroulante' avec une requête basée sur la Table2. Lorsque l'on m'appelle au téléphone j'ai le no qui s'affiche sur le poste (de téléphone). Je saisi vite le no de téléphone affichée dans le champ 'Zone de liste déroulante' et sur clic de ce Champ, repère le domaine et ouvre le formulaire de l'inscrit ou du client ou du fournisseur d'après le no ID.
Voilà pour l'explication, j'espère que j'ai réussi à être un peu plus clair je reconnais que l'on me reproche d'être un peu brouillon dans mes explications. Si quelque chose te chicane, dit-le moi. Luis
-----Message d'origine-----
Bonjour, Grâce à ce que tu viens de me donner j'ai trouvé: Function AjoutTelephone() ... End Function
Avec ça si on repasse sur le champ [TEL], il n'y a pas de
doublons et si on change[TEL], 'TELEPHONEREPORTE' change aussi. C'est pas super!!!! Luis
Re,
Il doit commencer à se faire tard parce que je n'ai pas tout compris à ta
fonction !
La variable TELEPHONEREPORTE (non déclarée ou bien est-ce une erreur de
frappe?) est systématiquement égale à 1. Dans la sous-procédure "Ecrire", la ligne "Indice = 2 * (TELEPHONEREPORTE -
1) + Info" équivaut donc à : "Indice = 2 * (1 - 1) + Info" => "Indice = 2 * (0) + Info" => "Indice = 0 + Info" => "Indice = Info" Dans cette sous-procédure, tu recopies donc les deux premiers champs de
Table1 dans les deux premiers de Table2. Est-ce vraiment ce que tu veux ?
Peut-être faudrait-il me ré-expliquer tes besoins "en français" et me donner
quelques indices sur la signification de tes champs et de tes tables ?
Sur ces considérations, je te souhaite une bonne soirée. A demain (avec des neurones neuves et montées dans le bon sens ;-))
.
Gilles
Bonjour Gilles ... Il y a une table 'INCRITS', une table 'CLIENTS' et une table 'FOURNISSEURS'. Je veux récupérer dans une seul table les numéros de téléphones regroupés dans un champs appelé TELEPHONEREPORTE , depuis la Table 'INCRITS', la table 'CLIENTS' et la table 'FOURNISSEURS' je copie les numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone + IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE]. DOMAINE est un identificateur qui désigne s'il s'agit d'un inscrit, d'un client ou d'un fournisseur. Donc j'ai trois fois le code concerné : 1. dans le formulaire INSCRITS 2. dans le formulaire CLIENTS (adapté à la table CLIENTS) 3. dans le formulaire FOURNISSEURS (adapté à la Table FOURNISSEURS) Dans le menu principal de la base de données j'ai un Champ 'Zone de liste déroulante' avec une requête basée sur la Table2. Lorsque l'on m'appelle au téléphone j'ai le no qui s'affiche sur le poste (de téléphone). Je saisi vite le no de téléphone affichée dans le champ 'Zone de liste déroulante' et sur clic de ce Champ, repère le domaine et ouvre le formulaire de l'inscrit ou du client ou du fournisseur d'après le no ID. ...
Bonjour, Luis
Je commence à y voir plus clair. Maintenant, une question: quand tu modifies le numéro d'un inscrit, client ou fournisseur sur sa fiche, veux-tu que le numéro soit aussi modifié dans la table des téléphones reportés ou que le nouveau numéro soit ajouté aux précédents ? Pour l'ajouter, voici une adaptation de ma réponse initiale:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL] & " AND DOMAINE=" & [DOMAINE], dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If Set MaBD = Nothing Set MaTable = Nothing End Sub
Pour le modifier:
Private Sub MiseAJourTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND DOMAINE=" & [DOMAINE], dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!DOMAINE = [DOMAINE] Else MaTable.MoveFirst MaTable.Edit End If
MaTable!TELEPHONEREPORTE = [TEL] MaTable.Update Set MaBD = Nothing Set MaTable = Nothing End Sub
A adapter pour les trois cas. Si je n'ai encore pas tout compris, dis-le moi mais ne crois pas que ce soit de ta faute; quand on a "la tête dans le guidon", ce n'est pas toujours évident de décrire son problème à une personne externe mais, au moins, cela permet de remettre les choses à plat.
Bon courage
Bonjour Gilles
...
Il y a une table 'INCRITS', une table 'CLIENTS' et une
table 'FOURNISSEURS'.
Je veux récupérer dans une seul table les numéros de
téléphones regroupés dans un champs appelé
TELEPHONEREPORTE , depuis la Table 'INCRITS', la
table 'CLIENTS' et la table 'FOURNISSEURS' je copie les
numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone +
IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE].
DOMAINE est un identificateur qui désigne s'il s'agit d'un
inscrit, d'un client ou d'un fournisseur.
Donc j'ai trois fois le code concerné :
1. dans le formulaire INSCRITS
2. dans le formulaire CLIENTS (adapté à la table
CLIENTS)
3. dans le formulaire FOURNISSEURS (adapté à la Table
FOURNISSEURS)
Dans le menu principal de la base de données j'ai un
Champ 'Zone de liste déroulante' avec une requête basée
sur la Table2.
Lorsque l'on m'appelle au téléphone j'ai le no qui
s'affiche sur le poste (de téléphone).
Je saisi vite le no de téléphone affichée dans le
champ 'Zone de liste déroulante' et sur clic de ce Champ,
repère le domaine et ouvre le formulaire de l'inscrit ou
du client ou du fournisseur d'après le no ID.
...
Bonjour, Luis
Je commence à y voir plus clair. Maintenant, une question:
quand tu modifies le numéro d'un inscrit, client ou fournisseur sur sa
fiche, veux-tu que le numéro soit aussi modifié dans la table des téléphones
reportés ou que le nouveau numéro soit ajouté aux précédents ?
Pour l'ajouter, voici une adaptation de ma réponse initiale:
Private Sub AjoutTelephone()
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL] & " AND DOMAINE=" &
[DOMAINE], dbOpenDynaset)
If MaTable.EOF Then
' Le recordset est vide, donc pas d'enregistrement correspondant
MaTable.AddNew
MaTable!ID = [IDINCRIT]
MaTable!TELEPHONEREPORTE = [TEL]
MaTable!DOMAINE = [DOMAINE]
MaTable.Update
End If
Set MaBD = Nothing
Set MaTable = Nothing
End Sub
Pour le modifier:
Private Sub MiseAJourTelephone()
Dim Critère As String, MaBD As Database, MaTable As Recordset
Set MaBD = DBEngine.Workspaces(0).Databases(0)
Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE
ID=" & [IDINCRIT] & " AND DOMAINE=" & [DOMAINE], dbOpenDynaset)
If MaTable.EOF Then
' Le recordset est vide, donc pas d'enregistrement correspondant
MaTable.AddNew
MaTable!ID = [IDINCRIT]
MaTable!DOMAINE = [DOMAINE]
Else
MaTable.MoveFirst
MaTable.Edit
End If
MaTable!TELEPHONEREPORTE = [TEL]
MaTable.Update
Set MaBD = Nothing
Set MaTable = Nothing
End Sub
A adapter pour les trois cas.
Si je n'ai encore pas tout compris, dis-le moi mais ne crois pas que ce soit
de ta faute; quand on a "la tête dans le guidon", ce n'est pas toujours
évident de décrire son problème à une personne externe mais, au moins, cela
permet de remettre les choses à plat.
Bonjour Gilles ... Il y a une table 'INCRITS', une table 'CLIENTS' et une table 'FOURNISSEURS'. Je veux récupérer dans une seul table les numéros de téléphones regroupés dans un champs appelé TELEPHONEREPORTE , depuis la Table 'INCRITS', la table 'CLIENTS' et la table 'FOURNISSEURS' je copie les numéros de [téléphone + IDINCRIT + DOMAINE] [téléphone + IDCLIENT+ DOMAINE] [téléphone + IDFOURNISSEUR+ DOMAINE]. DOMAINE est un identificateur qui désigne s'il s'agit d'un inscrit, d'un client ou d'un fournisseur. Donc j'ai trois fois le code concerné : 1. dans le formulaire INSCRITS 2. dans le formulaire CLIENTS (adapté à la table CLIENTS) 3. dans le formulaire FOURNISSEURS (adapté à la Table FOURNISSEURS) Dans le menu principal de la base de données j'ai un Champ 'Zone de liste déroulante' avec une requête basée sur la Table2. Lorsque l'on m'appelle au téléphone j'ai le no qui s'affiche sur le poste (de téléphone). Je saisi vite le no de téléphone affichée dans le champ 'Zone de liste déroulante' et sur clic de ce Champ, repère le domaine et ouvre le formulaire de l'inscrit ou du client ou du fournisseur d'après le no ID. ...
Bonjour, Luis
Je commence à y voir plus clair. Maintenant, une question: quand tu modifies le numéro d'un inscrit, client ou fournisseur sur sa fiche, veux-tu que le numéro soit aussi modifié dans la table des téléphones reportés ou que le nouveau numéro soit ajouté aux précédents ? Pour l'ajouter, voici une adaptation de ma réponse initiale:
Private Sub AjoutTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND TELEPHONEREPORTE=" & [TEL] & " AND DOMAINE=" & [DOMAINE], dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!TELEPHONEREPORTE = [TEL] MaTable!DOMAINE = [DOMAINE] MaTable.Update End If Set MaBD = Nothing Set MaTable = Nothing End Sub
Pour le modifier:
Private Sub MiseAJourTelephone() Dim Critère As String, MaBD As Database, MaTable As Recordset Set MaBD = DBEngine.Workspaces(0).Databases(0) Set MaTable = MaBD.OpenRecordset("SELECT * FROM TELEPHONESREPORTES WHERE ID=" & [IDINCRIT] & " AND DOMAINE=" & [DOMAINE], dbOpenDynaset) If MaTable.EOF Then ' Le recordset est vide, donc pas d'enregistrement correspondant MaTable.AddNew MaTable!ID = [IDINCRIT] MaTable!DOMAINE = [DOMAINE] Else MaTable.MoveFirst MaTable.Edit End If
MaTable!TELEPHONEREPORTE = [TEL] MaTable.Update Set MaBD = Nothing Set MaTable = Nothing End Sub
A adapter pour les trois cas. Si je n'ai encore pas tout compris, dis-le moi mais ne crois pas que ce soit de ta faute; quand on a "la tête dans le guidon", ce n'est pas toujours évident de décrire son problème à une personne externe mais, au moins, cela permet de remettre les choses à plat.