Ang. Schnellsuchfeld inaktive Kunden nicht listen

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

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

Ang. Schnellsuchfeld inaktive Kunden nicht listen

Beitrag von Thomas Rogge »

Hallo zusammen,

wenn ich ein neues Angebot (FRMV_BAUF_A_) schreiben möchte und im Einfügemodus im Schnellsuchfeld einen inaktiven Kundenname eingebe, dann wird der mir erstmal in der Auflistung angezeigt, das möchte ich unterbinden.
Also habe ich mir den OnExit des Feldes angesehen, der verweist auf den
Button_6.click();

Aha, dort im Script habe ich dann den Code wie folgt angepasst:

Code: Alles auswählen

Begin
  // 15.05.2007 HB
  bPascalScriptOK := true;
  debugon := false;
  // ID aus der Query der Maske holen 
  sAusw := Edit_1.Text;
  sJa := copy(frmData.sJaNein, 1, 1);
  
  //Prüfen, ob im aktuellen DS eine ID existiert (ob ein Datensatz selektiert ist)
  if (sAusw <> '') then
  begin
    //Auflistfenster initialisieren und zuweisen 
    O_Auflist := Application.FindComponent('frmauflist2');

    // Auflisfenster generieren
    O_Auflist.bQueryErzeugen := True;
    O_Auflist.Caption := LB_Auswahl.Caption;
    O_Auflist.MultiSelectIDFeld := 'ID';
    O_Auflist.bEinfacheAuswahl := true;
    O_Auflist.Q_Erfassung.SQL.Text := //'SELECT A.ID AS "ID", A.WERBGR, A.MASKENKEY, B.NAME, B.BEZ, B.STRASSE, C.MASKENKEY, C.ORT ' +
                                      'SELECT A.* ' +
                                      'FROM V_BKUNDE A ' +
                                      'LEFT OUTER JOIN BADR B ON A.BADR_ID_ADRNR = B.ID ' +
                                      'LEFT OUTER JOIN BPLZ C ON B.BPLZ_ID_LANDPLZ = C.ID ' +
                                      'WHERE A.AKTIV_JN = :sJa AND'  + 
                                      '      (A.MASKENKEY CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.NAME CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.STRASSE CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.BEZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR || B.TELANSCH || B.TELKURZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR2 || B.TELANSCH2 || B.TELKURZ2 CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.FAXVOR || B.FAXANSCH || B.FAXKURZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR4 || B.TELANSCH4 || B.TELKURZ4 CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.EMAIL CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (C.PLZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (C.ORT CONTAINING ''' + sAUSW + ''')';
    O_Auflist.Q_Erfassung.ParamByName('sJa',sJa);
  end
  else
    bPascalScriptOK:=false;
End;
Ich habe oben die Variable sJa deklariert, den Select gleich am Anfang mit 'WHERE A.AKTIV_JN = :sJa AND' erweitert und auch die Parameterübergabe mit:
O_Auflist.Q_Erfassung.ParamByName('sJa',sJa); eingefügt.

Die Maske funktioniert zwar, aber AvERP zeigt mir in der Auflistung immer noch auch die inaktiven Kunden an.
Was habe ich vergessen, bzw. übersehen ?

Beste 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
Thomas Rogge
Beiträge: 159
Registriert: Mi Mär 04, 2009 10:45 am

Beitrag von Thomas Rogge »

Hab es...so funktioniert es:

Code: Alles auswählen

Begin
  // 15.05.2007 HB
  bPascalScriptOK := true;
  debugon := false;
  // ID aus der Query der Maske holen
  sAusw := Edit_1.Text;
  sJa := copy(frmData.sJaNein, 1, 1);
 
  //Prüfen, ob im aktuellen DS eine ID existiert (ob ein Datensatz selektiert ist)
  if (sAusw <> '') then
  begin
    //Auflistfenster initialisieren und zuweisen
    O_Auflist := Application.FindComponent('frmauflist2');

    // Auflisfenster generieren
    O_Auflist.bQueryErzeugen := True;
    O_Auflist.Caption := LB_Auswahl.Caption;
    O_Auflist.MultiSelectIDFeld := 'ID';
    O_Auflist.bEinfacheAuswahl := true;
    O_Auflist.Q_Erfassung.SQL.Text := //'SELECT A.ID AS "ID", A.WERBGR, A.MASKENKEY, B.NAME, B.BEZ, B.STRASSE, C.MASKENKEY, C.ORT ' +
                                      'SELECT A.* ' +
                                      'FROM V_BKUNDE A ' +
                                      'LEFT OUTER JOIN BADR B ON A.BADR_ID_ADRNR = B.ID ' +
                                      'LEFT OUTER JOIN BPLZ C ON B.BPLZ_ID_LANDPLZ = C.ID ' +
                                      'WHERE A.AKTIV_JN = :sJa AND ('  +
                                      '      (A.MASKENKEY CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.NAME CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.STRASSE CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.BEZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR || B.TELANSCH || B.TELKURZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR2 || B.TELANSCH2 || B.TELKURZ2 CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.FAXVOR || B.FAXANSCH || B.FAXKURZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.TELVOR4 || B.TELANSCH4 || B.TELKURZ4 CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (B.EMAIL CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (C.PLZ CONTAINING ''' + sAUSW + ''') OR ' +
                                      '      (C.ORT CONTAINING ''' + sAUSW + '''))';
    O_Auflist.Q_Erfassung.ParamByName('sJa',sJa);
  end
  else
    bPascalScriptOK:=false;
End;
Alle OR Bedingungen müssen zusammenhängend in eine Klammer....grmmpf....immer diese Kleinigkeiten
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Antworten