E-Mail Feld in FRMV_BANSP (Ansprechpartner) Übernahme

Alles über Formulare, deren Erstellung und deren eventueller Austausch

Moderator: SYNERPY

Antworten
Thomas Rogge
Beiträge: 149
Registriert: Mi Mär 04, 2009 10:45 am

E-Mail Feld in FRMV_BANSP (Ansprechpartner) Übernahme

Beitrag von Thomas Rogge »

Moinsen zusammen,

wir nutzen die o.a. Maske im Direktaufruf zur Eingabe diverser Ansprechpartner.
Wenn man jetzt eine E-Mailadresse des Ansprechpartners eingibt und danach rechts eine Adresse, Kundenadresse oder Lieferantenadresse zuweist, dann überschreibt er bei Übernahme das E-Mail Feld mit der E-Mail aus dem Adressstamm (meist info@...).

Dies möchte ich unterbinden, komme aber nicht weiter.
Wenn ich die Maske im Designer öffne und im Objektinspektor die PROC0001 aufrufe, finde ich ja dort Übernahmeparameter, ist das der richtige Ansatz?

Viele Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo,
wie ist denn bei Ihnen der Arbeitsablauf an dieser Stelle ? Wir gehen in der Art vor, dass zuerst der Kunde angewählt wird, dann geht es über das Menü 'Unterprogramme' in die Maske BANSP. Wenn hier jetzt ein neuer Datensatz zum Kunden angelegt wird, übernimmt das System die eMail-Adresse des Kunden. Diese wird abgeändert und beim Speichern des Satzes bleibt sie in der korrekten Form erhalten ...
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
Thomas Rogge
Beiträge: 149
Registriert: Mi Mär 04, 2009 10:45 am

Beitrag von Thomas Rogge »

Moinsen Geri12,

so kann man es auch machen.
Wir haben momentan sehr viele Kontaktdaten, die wir prüfen und ggf. im Adressstamm einpflegen. Dazu nutzen wir die maske -wie schon erwähnt- im Direktaufruf.

Und bei der Eingabe starten wir links oben und geben eben auch die E-Mail Adresse schon ein, bevor wir die Adress-nr. oder Kunden-nr. oder Lieferanten-nr. über F2 rechts zuweisen.

Ich dachte mir, es wäre doch eine Kleinigkeit, die Übernahmeparameter so einzustellen, dass diese Eingabe nicht überschrieben wird.

Gruß
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Thomas,
ja, ist wirklich nur eine Kleinigkeit. Allerdings würde ich das Kopieren nicht ganz verbieten, sondern nur in den Fällen, in denen im Feld 'eMail' schon was drinnen steht.

Somit würde in PROC0001 aus der Zeile ...

Code: Alles auswählen

E_EMAIL.Field.Value := AsString(MySQL.FieldByName('EMAIL'));
...nun die beiden Zeilen ...

Code: Alles auswählen

if (E_EMAIL.Field.AsString = '') then
    E_EMAIL.Field.Value := AsString(MySQL.FieldByName('EMAIL'));
Und das sollte es schon gewesen sein ...
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
Thomas Rogge
Beiträge: 149
Registriert: Mi Mär 04, 2009 10:45 am

Beitrag von Thomas Rogge »

Hallo Geri12,

bis zum PROC001 habe ich mich auch schon vorgekämpft und das ausklammern mit // hat auch schon funktioniert. Das war mein erster Ansatz.
Dein Vorschlag ist natürlich noch viel besser, ich bekomme dann allerdings folgende Fehlermeldung vom Pascal-Interpreter:
Information:
Aktuelle Variablenwerte:
MyID = 358
MySQL = 19512108
sFrom = 'FROM BADR B '
Error:
Laufzeitfehler: 10000 (Zeile: 26)
"Komponente nicht gefunden"
Laufzeitfehler: 10000 (Zeile: 26)
"Komponente nicht gefunden"

Auch ein end; nach der zweiten Zeile macht es nicht besser....grübel, grübel...

Viele Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Thomas,
kann es sein, dass es hier einen Teil Deines Quellcodes gekostet hat ? Der Fehler tritt anscheinend dort auf, wo vorher noch alles in Ordnung war. Hier noch mal den kompletten Code meiner A14-Maske ...

Code: Alles auswählen

Begin
  // verschiedene Felder als Vorbelegung aus der Kunde, Lieferant oder Adresse
  // HS 2008-08-02

  MyID := 0;
  sFrom := '';

  if (LB_TABELLE.Caption = 'BKUNDE') then
  begin
    MyID := AsInteger(q_1.FieldByName('BKUNDE_ID_LINKKEY'));
    sFrom := 'FROM BKUNDE A ';
  end
  else if (LB_TABELLE.Caption = 'BLIEF') then
  begin
    MyID := AsInteger(q_1.FieldByName('BLIEF_ID_LINKKEY'));
    sFrom := 'FROM BLIEF A ';
  end
  else if (LB_TABELLE.Caption = 'BADR') then
  begin
    MyID := AsInteger(q_1.FieldByName('BADR_ID_LINKKEY'));
    sFrom := 'FROM BADR B ';
  end;

  if (MyID > 0) and (sFrom <> '') then
  begin
    // SQL zusammenbauen, ja nach Kunde, Lieferant oder Adresse
    MySQL := frmdata.Universal;
    MySQL.SQL.Text := 'SELECT B.EMAIL, B.TELVOR, B.TELANSCH, B.TELVOR3, B.TELANSCH3, B.TELVOR4, B.TELANSCH4, B.FAXVOR, B.FAXANSCH, B.WEBSITE ' +
                      sFrom;
 
    if (LB_TABELLE.Caption <> 'BADR') then
      MySQL.SQL.Text := MySQL.SQL.Text + ' LEFT OUTER JOIN BADR B ON A.BADR_ID_ADRNR = B.ID';

    if (LB_TABELLE.Caption <> 'BADR') then
      MySQL.SQL.Text := MySQL.SQL.Text + ' WHERE A.ID = :MyID'
    else
      MySQL.SQL.Text := MySQL.SQL.Text + ' WHERE B.ID = :MyID';
     
    MySQL.ParamByName('MyID', MyID);
    MySQL.open();

		if (E_EMAIL.Field.AsString = '') then
      E_EMAIL.Field.Value := AsString(MySQL.FieldByName('EMAIL'));
      
    E_TEL_VOR.Field.Value := AsString(MySQL.FieldByName('TELVOR'));
    E_DURCHWAHL.Field.Value := AsString(MySQL.FieldByName('TELANSCH'));
    E_PRIV_VOR.Field.Value := AsString(MySQL.FieldByName('TELVOR3'));
    E_TELPRIVAT.Field.Value := AsString(MySQL.FieldByName('TELANSCH3'));
    E_MOBIL_VOR.Field.Value := AsString(MySQL.FieldByName('TELVOR4'));
    E_TELMOBIL.Field.Value := AsString(MySQL.FieldByName('TELANSCH4'));
    E_FAXVOR.Field.Value := AsString(MySQL.FieldByName('FAXVOR'));
    E_TELFAX.Field.Value := AsString(MySQL.FieldByName('FAXANSCH'));
    E_WEBSITE.Field.Value := AsString(MySQL.FieldByName('WEBSITE'));
    MySQL.close();
  end;
End; 
Noch ein Hinweis: Wo ein Ende ist, ist immer auch ein Anfang. Sprich: Wenn Du END benutzt, dann musst Du auch ein BEGIN benutzen:

Code: Alles auswählen

IF ... THEN
   BEFEHL;
oder ...

Code: Alles auswählen

IF ... THEN
BEGIN
   BEFEHL;
END;
Bei Benutzung von ELSE immer auf den Strichpunkt achten: der letzte Befehl vor dem ELSE ist ohne Strichpunkt ...

Code: Alles auswählen

IF ... THEN
   BEFEHL
ELSE
   BEFEHL;
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
Thomas Rogge
Beiträge: 149
Registriert: Mi Mär 04, 2009 10:45 am

Beitrag von Thomas Rogge »

Hallo Geri,

Du bist mein Held für heute, danke es funktioniert.
Ich weiss nicht woran es lag, ich habe das jetzt exakt so formatiert wie Du es hast, als mit Leerzeile oben und unten und eingerückt die beiden Zeilen.

Ich hatte im Hintergrund die Maske geöffnet und habe zum Testen auf Daten Aktualisieren geklickt, vielleicht gab es da irgendwie einen Konflikt.

Alles bestens soweit, merci noch einmal...

Viele Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Antworten