12. Juli 2017 13:16
Hallo,
ich exportiere Mailadressen aus Tabelle Kontakt. Da habe ich "Doppellte" E-Mails.
wie exportiere ich im Dataport nur einen Datensatz mit dem Gleichen E-Mail Adresse? klar, kann ich im Excel die doppelte löschen, aber ich möchte es direkt aus dynamics.
Dynamics 2009 Classic-Client.
BSP.:
adresse1@gmx.de.deadresse2@t-online.deadresse2@t-online.deadresse2@t-online.deadresse3@web.deContact - OnBeforeExportRecord()
Contact.RESET;
Contact.SETFILTER(Contact."E-Mail",Contact."E-Mail");
IF Contact.FINDFIRST then
Export nur den ersten mit dem gleichen E-Mail ? :)Danke für jede Hilfe.
Zuletzt geändert von wikas am 14. Juli 2017 09:54, insgesamt 1-mal geändert.
12. Juli 2017 14:11
Du legst einfach eine globale Variable für die Tabelle Contact an und stellst die Eigenschaft Temporary auf Yes.
Dann prüfst du, ob du diese E-Mail in deiner temporären Tabelle bereits findest. Falls ja überspringst du den Kontakt. Falls Nein, speicherst du den aktuellen Kontakt in deiner temporären Tabelle. Anstatt E-Mail benutzt du aber eher das Feld "Search E-Mail", weil dort Groß und Kleinschreibung egal ist.
Ansonsten sollte man darauf achten, ob das wirklich klappt, weil in jeder E-Mail ja ein "@" steht und das wird ja auch als Filterausdruck von NAV verstanden.
- Code:
Contact - OnBeforeExportRecord()
TmpContact.RESET;
TmpContact.SETRANGE("Search E-Mail", "Search E-Mail";
IF NOT TmpContact.ISEMPTY THEN
CurrDataport.SKIP;
TmpContact.INIT;
TmpContact := Contact;
TmpContact.INSERT;
12. Juli 2017 14:45
rwendler hat geschrieben:Du legst einfach eine globale Variable für die Tabelle Contact an und stellst die Eigenschaft Temporary auf Yes.
oder ganz ohne Zwischenpuffer -> also nicht auf temporary = yes und ohne insert in diesen Zwischenpuffer
- Code:
TmpContact.RESET;
TmpContact.SETFILTER("No.",'<>%1',"No."); //sich selbst nicht suchen :)
TmpContact.SETRANGE("Search E-Mail", "Search E-Mail");
IF NOT TmpContact.ISEMPTY THEN
CurrDataport.SKIP;
so ersparst du dir das Insert in die TmpContact
12. Juli 2017 14:59
Dankeschön für die Antworten.
Ich habe es noch andersgelöst, und zwar
Globale Variable (Text) EMails,
dann:
Dataport - OnInitDataport()
EMails:='';
und im Dataitem Contact :
Contact - OnBeforeExportRecord()
IF EMails =Contact."E-Mail" THEN
CurrDataport.SKIP;
UND:
Contact - OnAfterExportRecord()
EMails := Contact."E-Mail";
Danke
12. Juli 2017 16:08
sweikelt hat geschrieben:rwendler hat geschrieben:Du legst einfach eine globale Variable für die Tabelle Contact an und stellst die Eigenschaft Temporary auf Yes.
oder ganz ohne Zwischenpuffer -> also nicht auf temporary = yes und ohne insert in diesen Zwischenpuffer
- Code:
TmpContact.RESET;
TmpContact.SETFILTER("No.",'<>%1',"No."); //sich selbst nicht suchen :)
TmpContact.SETRANGE("Search E-Mail", "Search E-Mail");
IF NOT TmpContact.ISEMPTY THEN
CurrDataport.SKIP;
so ersparst du dir das Insert in die TmpContact
Da hast du aber das Problem, dass du dann alle E-Mails nicht exportierst die doppelt oder mehrfach hinterlegt sind. Man will ja erreichen, dass Sie beim ersten Mal exportiert wird und beim zweiten Mal nicht. Deine Variante würde die mehrfach hinterlegten E-Mails nicht exportieren.
wikas hat geschrieben:Dankeschön für die Antworten.
Ich habe es noch andersgelöst, und zwar
Globale Variable (Text) EMails,
dann:
Dataport - OnInitDataport()
EMails:='';
und im Dataitem Contact :
Contact - OnBeforeExportRecord()
IF EMails =Contact."E-Mail" THEN
CurrDataport.SKIP;
UND:
Contact - OnAfterExportRecord()
EMails := Contact."E-Mail";
Danke
Das geht auch, aber nur solange du im DataItem auch nach E-Mail sortierst! Groß- und Kleinschreibung wird dann aber auch berücksichtigt. Da muss man aufpassen :)
12. Juli 2017 16:26
HAllo,
Danke für Deine Antwort.
Ja, ich sortiere die Dataport nach E-Mail ( Key erstellt).
Ja, stimmt auch, dass die klein- großsschreibung funktioniert nicht.- Da habe ich nicht gedacht.
Aber habe die Daten im Excel nach doppelte Datensätze gesucht und keinen gefunden.
Danke für Deine Bemerkung. Versuche mit Deine Lösung.
14. Juli 2017 09:34
Hallo,
Danke an alle, mit dem Feld Contact."Search E-Mail" hat es sehr gut geklappt. Habe alle benötigte Mailadressen bekommen.
Auch die, die falsch erstellt wurden ( mit Leerzeichen), die habe ich mit DELCHR gelöscht
OnBeforeExport
Contact."Search E-Mail" := DELCHR(Contact."Search E-Mail", '=',' ');
Jetzt sind nur einige (ca. 15) mit dem Zeilenumbruch und TAB geblieben.
Kann man auch bestimmt bei dem Export rauslöschen, aber ich gebe die Adressen an Sachbearbeiter und die sollen die im Dynamics korrigieren.
Oder kann man es einfacher direk im Dynamics automatisieren?
14. Juli 2017 09:51
Danke, ich werde es als gelöst markieren
17. Juli 2017 07:43
wikas hat geschrieben:Jetzt sind nur einige (ca. 15) mit dem Zeilenumbruch und TAB geblieben.
Kann man auch bestimmt bei dem Export rauslöschen, aber ich gebe die Adressen an Sachbearbeiter und die sollen die im Dynamics korrigieren.
Oder kann man es einfacher direk im Dynamics automatisieren?
Für 15 Stück lohnt eine Automatisierung nur, wenn dieser Vorgang auch zukünftig verwendet wird. Ansonsten würde ich die manuelle einpflegen (lassen).
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.