Ergebnis zur Laufzeit ausgeben/anzeigen
Sascha Balke
Hallo Zusammen,ich will in unserer Angebotsform die Telefonnummer, in Abhängigkeit des Ansprechpartners angezeigt haben.
Regel: Ansprechpartner Telefonnummer einblenden
Typ: SQL
Action: Change_Values
FormTyp (Basis): 149
ItemUID Basis: UID0001
Form Typ: 149
Event: FormDataLoad
Modus: ALL
Ausdruck:
Select Tel1
FROM OQUT T0,
OCPR T1
WHERE T0.DocNum='[%G;8]'
and t0.CntCtCode = t1.CntCtCode
Nur bekomme ich leider nicht sofort die Telefonnummer angezeigt. Erst wenn ich den Beleg hingefügt oder aktualisiert habe, dann steht die Telefonnummer drin. Das gleiche ist, wenn ich den Ansprechpartner ändere.
Habe auch schon andere Event Typen verwendet, jedoch bringt mich das auch nicht weiter.
Hat jemand von euch eine Idee?
VG
Sascha
Rafael Stalder
Hallo Sascha,aus deiner Beschreibung ist mir noch nicht ganz klar wann du die Telefonnummer gerne anzeigen möchtest.
Soll dies beim auswählen eines Ansprechpartners sein oder wenn man einen, bereits hinzugefügten, Beleg aufruft?
Oder doch anders?
Gruss Rafael
Sascha Balke
Hallo Rafael,ich möchte in Abhängigkeit des Ansprechpartners die Telefonnummer angezeigt haben. Dabei ist es egal, ob ich vor oder nach dem hinzufügen eines Beleges den AP ändere. Wenn ich danach diesen Beleg wieder aufrufe, möchte ich zu dem hinterlegten AP die Telefonnummer haben.
VG
Sascha
Rafael Stalder
Hallo Sascha,habe dir im Anhang eine CustomizeRegel die dir weiterhelfen sollte.
Habe so was ähnliches auch schon gemacht, und nun noch ein paar Sachen geändert.
Gruss Rafael
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/rafaelstalder/Ansprechpartner Telefonnummer.cocu]Ansprechpartner Telefonnummer.cocu[/url]
Sascha Balke
Hallo Rafael,danke dafür. :)
Mit einer MessageBox ist das auch eine Möglichkeit. Die hat einen "kleinen" Nachteil und zwar wird die Telefonnummer nicht angezeigt, wenn der AP geändert wird. Schöner wäre es, wenn es in ein dafür angelegtes Feld angezeigt werden würde, wobei sich zur Laufzeit die Telefonnummer auch ändern müsste, wenn der AP geändert wird.
Hast du da noch eine Idee?
VG
Sascha
Rafael Stalder
Ja man könnte ein Benutzerdefiniertes Feld erstellen und dort die Telefonnummer hineinschreiben.Und Imfalle eines Wechsels des AP müsstest du eine neue CustomizeRegel machen die auf das Ereignis ComboSelect der AP-ComboBox hört?
Gruss Rafael
Sascha Balke
Genau! Die Regel muss auf die ComboBox hören.Im Grunde funktioniert meine Regel, aber nur wenn FormDataLoad erfüllt ist. Was ich nicht so hinbekomme ist, dass diese Regel über ein zusätzliches Validate auf der ComboBox funktioniert.
VG
Sascha
Rafael Stalder
So, habe dir im Anhang die beiden erstellten CustomizeRegeln.Du musst nun noch ein UDF erstellen, welches XXTel heisst und alphanumerische Werte speichern kann (habe bei meinem 20 genommen).
Dann sollte die Nummer dort hinein geschrieben werden.
Gruss Rafael
Sorry. File kommt unten :D
Rafael Stalder
fileAttachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/rafaelstalder/Ansprechpartner Telefonnummer.cocu]Ansprechpartner Telefonnummer.cocu[/url]
Sascha Balke
Hallo Rafael,danke :)
Ich habe es noch ein wenig umgeschrieben, weil ich dafür nicht extra ein UDF anlegen wollte bzw. auch nicht gemacht hatte.
Es gibt noch einen kleinen Schönheitsfehler und zwar wenn bei einem AP keine Nummer hinterlegt ist, dann bleibt der alte Wert erhalten. Hast du dafür noch eine Lösung?
//Form frmKundenauftragUDF = Form.GetFormFromType("149",1).UDFForm;
string strCardCode = TextEdit.GetFromUID(pVal.Form, "4").Value.ToString();
string strContactCode = ComboBox.GetFromUID(pVal.Form, "85").Selected.Value.ToString();
string strTelefon = "";
string query = "SELECT T1.Tel1 FROM OQUT T0 INNER JOIN OCPR T1 ON T0.CntctCode = T1.CntctCode WHERE T1.CntctCode = '" + strContactCode + "' AND T1.CardCode = '" + strCardCode + "'";
using(System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(query))
if (sdr.Read())
{
strTelefon = sdr[0].ToString();
}
if (strTelefon != "")
{
//TextEdit.GetFromUID(frmKundenauftragUDF, "EIUD0057").Value = strTelefon;
TextEdit.GetFromUID(pVal.Form, "EIUD0057").Value = strTelefon;
}
return true;
THX & VG
Sascha
Rafael Stalder
//Form frmKundenauftragUDF = Form.GetFormFromType("149",1).UDFForm;
string strCardCode = TextEdit.GetFromUID(pVal.Form, "4").Value.ToString();
string strContactCode = ComboBox.GetFromUID(pVal.Form, "85").Selected.Value.ToString();
string strTelefon = "";
string query = "SELECT T1.Tel1 FROM OQUT T0 INNER JOIN OCPR T1 ON T0.CntctCode = T1.CntctCode WHERE T1.CntctCode = '" + strContactCode + "' AND T1.CardCode = '" + strCardCode + "'";
using(System.Data.SqlClient.SqlDataReader sdr = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(query))
if (sdr.Read())
{
strTelefon = sdr[0].ToString();
}
if (strTelefon != "")
{
//TextEdit.GetFromUID(frmKundenauftragUDF, "EIUD0057").Value = strTelefon;
TextEdit.GetFromUID(pVal.Form, "EIUD0057").Value = strTelefon;
}
else
{
TextEdit.GetFromUID(pVal.Form, "EIUD0057").Value = "";
}
return true;
die letzen Codezeilen, also das "else-Konstrukt" kannst du so übernehmen, also wenn keine Nummer vorhanden sein sollte, wird einfach ein Leerstring in das Feld geschrieben
Sascha Balke
SUPER & Danke :DDas war ja einfach - klingt komisch ist aber so. 8)
Ich hatte es auch mit 2 Regeln versucht. Der Weg war zwar schon richtig, nur mit reinem SQL scheint es nicht zu funktionieren. Nun bin ich schlauer :wink:
VG
Sascha
Rafael Stalder
Ja mit SQL wird es wohl auch irgendwie gehen, dachte aber mit CH ist's einfacher ;)Toll das es geklappt hat.
Gruss Rafael
Sascha Balke
Habe es eben noch erweitert.Wenn bei dem Ansprechpartner keine Telefonnummer hinterlegt ist, wird die 1. Telefonnummer (Phone1) aus dem GP-Stamm angezeigt.
string strCardCode = TextEdit.GetFromUID(pVal.Form, "4").Value.ToString();
string strContactCode = ComboBox.GetFromUID(pVal.Form, "85").Selected.Value.ToString();
string strAP_Telefon = "";
string strGP_Telefon = "";
string AP_Tel_query = "SELECT T1.Tel1 FROM OQUT T0 INNER JOIN OCPR T1 ON T0.CntctCode = T1.CntctCode WHERE T1.CntctCode = '" + strContactCode + "' AND T1.CardCode = '" + strCardCode + "'";
string GP_Tel_query = "SELECT T2.Phone1 FROM OCRD T2 WHERE T2.CardCode = '" + strCardCode + "'";
using(System.Data.SqlClient.SqlDataReader sdrAP = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(AP_Tel_query))
if (sdrAP.Read())
{
strAP_Telefon = sdrAP[0].ToString();
}
if (strAP_Telefon != "")
{
TextEdit.GetFromUID(pVal.Form, "EIUD0057").Value = strAP_Telefon;
}
else
using(System.Data.SqlClient.SqlDataReader sdrGP = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery(GP_Tel_query))
if (sdrGP.Read())
{
strGP_Telefon = sdrGP[0].ToString();
}
if (strGP_Telefon != "")
{
TextEdit.GetFromUID(pVal.Form, "EIUD0057").Value = strGP_Telefon;
}
return true;
VG
Sascha
0
Please sign in to leave a comment.
Comments
0 comments