Verbesserungsvorschlag für UniversalAuflist

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Verbesserungsvorschlag für UniversalAuflist

Beitrag von festus01 »

Hallo,

ich hätte da einen Verbesserungsvorschlag für den Aufruf UniversalAuflist aus einem Script heraus:

Code: Alles auswählen

Begin
// Letzter Stand: 21.02.2008 by KDP
  AuftragID := -1;
  If ((q_1.State = dssInsert) or (q_1.State = dssEdit)) Then Begin
    MessageBox('Bitte Datensatz vorher speichern!','E R R O R');
    Goto 1;
  End;
//
  sInterne := Input('Bitte Interne eingeben','Interne','0');
  If sInterne <> '0' Then Begin
    frmdata.StP_Universal.StoredProcName := 'P_BMAND_CHECK';
    frmdata.StP_Universal.Execute;
    BMAND_ID := AsInteger(frmdata.StP_Universal.FieldByName('BMAND_ID'));
    Q := frmData.Universal;
    Q.Close;
    Q.SQL.Text := 'Select * from STP_BAUFDATEN_QS(:MANDANT,:INTERNE)';
    Q.ParamByName('MANDANT',BMAND_ID);
    Q.ParamByName('INTERNE',sInterne);
    Q.Open;
    If Q.RecordCount > 0 Then Begin
      If UniversalAuflist('Bitte Auftrag auswählen') Then Begin
        AuftragID := AsInteger(Q.FieldByName('BAUF_ID'));
        Include(PROC0002); // DS auswählen oder Anlegen
        If q_1.State <> dssBrowse Then q_1.Cancel;
        q_1.Search;
        q_1.ClearSearch;
        E_ID.Text := IntToStr(QSDaten_ID);
        q_1.Post;
      End;     
    End Else MessageBox('keine Datensätze gefunden','Info',0);
  End;
  Q.Close;
1:
End;
Wird das Script ausgeführt erscheint nach dem Aufruf UniversalAuflist diese Übersicht:

Bild

Wie man sieht müsste jetzt nach rechts gescrollt werden um weitere Daten zu sehen.
Könnte die Spaltenbreite und Überschrift geändert werden, wären mehr Informationen ohne Scrollen sichtbar:

Bild

Na, das sieht ja schon besser aus :P

Dazu wären folgende Anpassungen nötig:

In der Unit HScript die Function DoMethodeTIB_Query anpassen bzw. erweitern:

Code: Alles auswählen

... Schnipp ...

    End Else
  If Param2 = 'FIELDSDISPLAYWIDTHAPPEND' Then
    Begin
      // Letzter Stand: 22.02.2008 by KDP, DisplayWidth unterstützen
      Val := NULL;
      TIB_Query(O_Obj).FieldsDisplayWidth.Append(O_Parser.Calc(p1));
      Result := True;
    End Else
  If Param2 = 'FIELDSDISPLAYLABELAPPEND' Then
    Begin
      // Letzter Stand: 22.02.2008 by KDP - DisplayLabel ubterstützen
      Val := NULL;
      TIB_Query(O_Obj).FieldsDisplayLabel.Append(O_Parser.Calc(p1));
      Result := True;
    End;

End; // von DoMethodeTIB_Query

... Schnapp ...
In der Unit formdata das Ereignis UniversalAfterClose mit folgendem Code einfügen:

Code: Alles auswählen

// Letzter Stand: 26.02.2008 by KDP
// Durch die neuen Funktionen FieldsDisplayWidthAppend usw.
// die eine Stringliste einfügen
// werden hier die Stringlisten wieder gelöscht.
// erst mal nur die 2 neuen
// neue Funktionen sind in Unit HScript
procedure TfrmData.UniversalAfterClose(IB_Dataset: TIB_Dataset);
begin
  With Universal do Begin
    FieldsDisplayWidth.Clear;
    FieldsDisplayLabel.Clear;
  End;
end;
Jetzt noch das ober Script wie folgt anpassen:

Code: Alles auswählen

Begin
// Letzter Stand: 21.02.2008 by KDP
  AuftragID := -1;
  If ((q_1.State = dssInsert) or (q_1.State = dssEdit)) Then Begin
    MessageBox('Bitte Datensatz vorher speichern!','E R R O R');
    Goto 1;
  End;
//
  sInterne := Input('Bitte Interne eingeben','Interne','0');
  If sInterne <> '0' Then Begin
    frmdata.StP_Universal.StoredProcName := 'P_BMAND_CHECK';
    frmdata.StP_Universal.Execute;
    BMAND_ID := AsInteger(frmdata.StP_Universal.FieldByName('BMAND_ID'));
    Q := frmData.Universal;
    Q.Close;
    Q.SQL.Text := 'Select * from STP_BAUFDATEN_QS(:MANDANT,:INTERNE)';
    Q.ParamByName('MANDANT',BMAND_ID);
    Q.ParamByName('INTERNE',sInterne);
    Q.Open;
    Q.FieldsDisplayWidthAppend('KUNDENNUMMER=100');
    Q.FieldsDisplayLabelAppend('AUFTRAGSNUMMER=Auftragsnummer');
    Q.FieldsDisplayLabelAppend('KUNDENNUMMER=Kd.Nr.');
    Q.FieldsDisplayLabelAppend('AUFLAGE=Auflage');
    Q.FieldsDisplayLabelAppend('PRODUKTION=Produktion');
    Q.FieldsDisplayLabelAppend('LT=Lief.Term.');
    If Q.RecordCount > 0 Then Begin
      If UniversalAuflist('Bitte Auftrag auswählen') Then Begin
        AuftragID := AsInteger(Q.FieldByName('BAUF_ID'));
        Include(PROC0002); // DS auswählen oder Anlegen
        If q_1.State <> dssBrowse Then q_1.Cancel;
        q_1.Search;
        q_1.ClearSearch;
        E_ID.Text := IntToStr(QSDaten_ID);
        q_1.Post;
      End;     
    End Else MessageBox('keine Datensätze gefunden','Info',0);
  End;
  Q.Close;
1:
End;
und schon sieht das Auflistfenster entsprechend aus.
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
Antworten