Okay-
I am having this little update for programe,
A field has been added to the programme - Where the user can type in the Charge number- If Charge number is identical with ItemID = Charge number in the database, I want it to print.
How to do this?
type
TFoNEDVEJ = class(TForm)
RGSOGNAVN: TRadioGroup;
MainMenu1: TMainMenu;
Filer1: TMenuItem;
UdskrivLinie: TMenuItem;
UdskrivAlle: TMenuItem;
N1: TMenuItem;
Afslut: TMenuItem;
Sortering1: TMenuItem;
SorterefterKundenavn1: TMenuItem;
SorterefterFlg1: TMenuItem;
Sorter: TMenuItem;
GroupBox1: TGroupBox;
EdSOGNAVN: TEdit;
bbtSOGNAVN: TBitBtn;
RGFILTER: TRadioGroup;
EDANTAL: TEdit;
Label1: TLabel;
EDLABEL: TEdit;
Label2: TLabel;
bbtudskriv: TBitBtn;
bbtUDSKALLE: TBitBtn;
Label3: TLabel;
EDTOTAL: TEdit;
bbtudssam: TBitBtn;
UdskrivSamlet: TMenuItem;
N2: TMenuItem;
GruppeMonteringsst1: TMenuItem;
GruppeLsdele1: TMenuItem;
GruppeSlanger1: TMenuItem;
GruppeSlidindikatorer1: TMenuItem;
Gruppe500serie1: TMenuItem;
Gruppe900serie1: TMenuItem;
GruppeFilter: TMenuItem;
CBENKELT: TCheckBox;
bbtUDSALLEUNDER: TBitBtn;
spUNDER: TSpinEdit;
UdskrivAlleUnder: TMenuItem;
dbg: TDBGrid;
Application1: TApplication;
Timer: TTimer;
pa: TPanel;
paIm: TPanel;
im: TImage;
rgTryk: TRadioGroup;
dsPluk: TDataSource;
PopupMenu1: TPopupMenu;
Skifttrykkestatus1: TMenuItem;
Edit1: TEdit;
DBGrid1: TDBGrid;
edCHSTREG: TEdit;
Edit2: TEdit;
procedure dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure Skifttrykkestatus1Click(Sender: TObject);
procedure dsPlukDataChange(Sender: TObject; Field: TField);
procedure bbtudskrivClick(Sender: TObject);
procedure RGSOGNAVNClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure SorterClick(Sender: TObject);
procedure bbtSOGNAVNClick(Sender: TObject);
procedure AfslutClick(Sender: TObject);
procedure UdskrivRows();
procedure UdskrivAlleClick(Sender: TObject);
procedure UdskrivSamletClick(Sender: TObject);
procedure GruppeFilterClick(Sender: TObject);
procedure bbtUDSALLEUNDERClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure EdSOGNAVNKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormDestroy(Sender: TObject);
procedure VisBillede;
private
procedure UdskrivSamletFraHer(Sender: TDataSet);
function AggregateTotal(Sender: TObject):boolean;
procedure BeginWork;
procedure EndWork;
public
end;
var
FoNEDVEJ: TFoNEDVEJ;
doc: LabelManager2_TLB.document;
implementation
uses DMNED, sqlhelpers,adohelper, utils,variants, DataSetForIn;
{$R *.DFM}
procedure TFoNEDVEJ.BeginWork;
begin
screen.cursor:=crHourGlass;
bbtUdskriv.Enabled:=false;
bbtUdsSam.enabled:=false;
bbtUdskAlle.enabled:=false;
bbtUdsAlleUnder.enabled:=false;
end;
procedure TFoNEDVEJ.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
DBGridDrawCheckBox(dbg, 'OJD_PRINTED', rect, dataCol, column, State);
end;
procedure TFoNEDVEJ.dsPlukDataChange(Sender: TObject; Field: TField);
begin
VisBillede();
end;
procedure TFoNEDVEJ.EndWork;
begin
screen.cursor:=crDefault;
bbtUdskriv.Enabled:=true;
bbtUdsSam.enabled:=true;
bbtUdskAlle.enabled:=true;
bbtUdsAlleUnder.enabled:=true;
end;
// prøver en sti og returnerer true hvis der er fundet et billede på stien
// den sætter desuden billed=stientilbilled, hvis det er fundet.
function TryPath(path:string; var billed: string): boolean;
var
s:string;
begin
s := path + billed;
if(fileexists(s + '.bmp')) then
begin
billed:=s + '.bmp';
result:=true;
end
else if(fileexists(s + '.jpg')) then
begin
billed:=s + '.jpg';
result:=true;
end
else
begin
result:=false;
end;
end;
procedure TFoNEDVEJ.VisBillede;
var
found:boolean;
b:string;
begin
found := true; // Maybe image exists...
if(not dmnedpak.quePluk.eof) then
begin
b:=dmnedpak.quePluk.fieldbyname('ITEMID').asstring;
b:=stringreplace(b,'.','',[rfReplaceAll]);
// Billednavn:
if copy(b,1,2)='WS' then // Til slidindikatorer
b := 'Q:\Billeder\Slidindikatorer\' + copy(b,1,2)+'_'+copy(b,4,4)
else // Andre...
found := TryPath('Q:\BILLEDER\LØSDELE\', b)
or TryPath('Q:\Billeder\Slanger\Quick\', b)
// or TryPath('O:\NogleAndreBilleder\', b)
;
end
else
found:=false; // Image does not exist
if(found) then
begin
// Load picture.
try
im.Picture.LoadFromFile(b);
paIm.caption := '';
im.Visible:=true;
except
paIm.caption := 'Fejl ved visning af billede';
im.Visible:=false;
end;
end
else
begin
paIm.caption := 'Intet billede';
im.Visible:=false;
end;
end;
procedure TFoNEDVEJ.TimerTimer(Sender: TObject);
begin
timer.enabled:=false;
BeginWork;
pa.Align:=alClient;
pa.Caption:='Åbner codesoft og tabeller...';
forms.application.processmessages;
application1.Visible:=true;
dmnedpak.Prepare;
pa.Visible:=false;
edSOGNAVN.SetFocus;
EndWork;
end;
procedure TFoNEDVEJ.bbtSOGNAVNClick(Sender: TObject);
const
sqlsort: array [0..2] of string = (' ORDER BY j.PICKINGLISTID,t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID, t.ITEMID',
' ORDER BY t.ITEMID, j.CustAccount, t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID, t.Pickinglistid',
' ORDER BY j.CustAccount, t.ITEMID, j.PICKINGLISTID, t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID');
sqlwhere = 'WHERE j.dataareaid=''ojd'' and t.dataareaid=''ojd'' and (j.PICKINGLISTID = t.PICKINGLISTID) and (i.ITEMID = t.ITEMID)'#13#10;
sqlbase = 'SELECT j.ORDERID, j.DELIVERYNAME, j.CUSTACCOUNT, j.LANGUAGEID, t.ITEMID, t.ORDERUNIT, t.ORDERQTY, t.INVENTQTY, t.OJD_EXTERNALITEMID, t.OJD_WEIGHTGROUPID, t.OJD_SUMGROUPID,'+' j.PICKINGLISTID, t.DELIVERYDATE, t.OJD_DATEREF, t.OJD_PICKINGLISTGROUPID, t.OJD_PRINTED, t.OJD_PURCHORDERFORMNUM, t.OJD_LINESALESID, i.ITEMBARCODE QUICK_BARCODE'#13#10+
'FROM inventpickinglistJOUR j, inventpickinglistTRANS t, InventItemBarcode i'+#13#10;
sqlUdvalg: array [0..12] of string = ('','00','01','02-08','03','03','03','04','02-01','02-01','02-02','02-03','02-04');
var
gp1,gp2,gpExtra:string; // for group filter
udvalg : string; // accumulated where clause
soeg1,soeg2:string; // soegefelt, evt. med wildcard
searchField: string; // søgefelt.
begin
BeginWork;
gp1:=sqlUdvalg[rgfilter.itemindex];
gp2:= gp1;
gpExtra:='';
// Gruppe
case rgfilter.itemindex of
3: gp2:='02-30';
5: gpExtra:= ' AND OJD_PICKINGLISTGROUPID=''FR''';
6: gpExtra:= ' AND OJD_PICKINGLISTGROUPID<>''FR''';
8: gp2:='02-04';
end;
if(rgFilter.itemindex > 0) then
udvalg:= makewhere(sqlwhere,'OJD_SUMGROUPID',gp1,gp2+char(250)) + gpExtra
else
udvalg:=sqlWhere;
// Trykkestatus
case rgTryk.ItemIndex of
1: udvalg:=udvalg + ' AND t.OJD_PRINTED=0';
2: udvalg:=udvalg + ' AND t.OJD_PRINTED=1';
end;
// Søgning
soeg1 :=edSOGNAVN.text;
dbg.Columns[0].Visible:=false;
if soeg1='' then
dmNEDPAK.quePluk.Close
else begin
if(rgSOGNAVN.itemindex = 0) then
try
// Her bruges med vilje kun soeg1.
// Range
if(pos('-', soeg1) <> 0) then
soeg1:='t.PickinglistID between ' + stringreplace(soeg1, '-', ' and ', [])
else // "normal"
soeg1:='t.PickinglistID = ' + soeg1;
// Komma separaret.
soeg1 := stringreplace(soeg1, ',', ' or t.PickinglistID = ', [rfReplaceAll]);
if(udvalg = '') then
udvalg := 'where ';
// vis kun pickinglistid ved flere forskellige.
dbg.Columns[0].Visible:=(pos(' or ',soeg1) <> 0) or (pos('between', soeg1) <> 0);
dbg.Columns[0].Width:=55;
udvalg := udvalg + ' and (' + soeg1 + ')';
except
dmNEDPAK.quePluk.Close;
EndWork;
exit;
end
else begin
if(copy(soeg1,length(soeg1),1) = '*') then // wildcard
begin
soeg1 := copy(soeg1,1,length(soeg1)-1);
soeg2 := soeg1 + chr(250);
end
else
soeg2 := soeg1;
case RGSOGNAVN.ItemIndex of
1 : searchField := 't.ItemId';
2 : searchField := 'j.CustAccount';
end;
udvalg:=makewhere(udvalg,searchField,soeg1,soeg2);
end;
// Sortering
makesql(dmNedpak.quePluk,sqlbase,udvalg,sqlSort[RGSOGNAVN.ItemIndex]);
end;
EndWork;
end;
procedure TFoNEDVEJ.UdskrivRows();
var
ef,ed:TStringlist;
lbl:string;
total:integer;
procedure Print(antal:integer; antalud:integer);
var
askeantal:string;
begin
askeantal:=inttostr(antal);
if copy(dmnedpak.quePluk.fieldbyname('CUSTACCOUNT').asstring,0,10)='6-DE FORD1' then
askeantal:=copy(dmnedpak.quePluk.fieldbyname('OJD_EXTERNALITEMID').asstring,10,10);
ed.Delete(ed.Count-1);
ed.add(askeantal);
// EmulatePrint('c:\nedpakNY.txt','not-used(literally)', 1, lbl, TDataSet(DMNEDPAK.quePluk), antalud, ef, ed);
CSPrint(application1,lbl,tdataset(DMNEDPAK.quePluk),false,[],antalud,nil,nil,ef,ed);
end;
var
antal:integer;
begin
ef:=TStringlist.Create;
ef.CaseSensitive:=false; // 'ASKE_ANTAL' og 'aske_ANTAL' benyttes begge, så den skal være caseinsensitive
ed:=TStringlist.create;
try
antal:=strtoint(edANTAL.text);
total:=ZeroAsOther(strtoint(EDTOTAL.TEXT),DMNEDPAK.quePluk.fieldbyname('ORDERQTY').asinteger);
lbl:= EDLABEL.TEXT;
dmnedpak.HentForpakningsInformation(
cbenkelt.checked,
antal,
total,
lbl,
ef,ed);
ef.add('ASKE_ANTAL');
// askeantal ændres i Print
ed.add('');
if CBENKELT.checked then
Print(1,total) // total etiketter med 1 stk.
else
begin
if(total < 20) then
begin
dmnedpak.CheckTeves(lbl);
antal:=total; // en etiket med total som antal
end;
Print(antal,trunc(total/antal));
// Hvis der er nogen der mangler at blive udskrevet
// - dvs. ANTAL/ANTALPERKASSE ikke gik op og der er en rest,
// så skal denne udskrives. Dog ikke hvis rest == samlet total, da den første etiket så giver total.
antal := total mod antal;
if antal > 0 then
begin
dmnedpak.CheckTeves(lbl);
Print(antal,1);
end;
end;
dmNedPak.SetTryk(true); // marker som trykt
EDTOTAL.TEXT:='0';
finally
ef.free;
ed.free;
end;
end;
function TfoNEDVEJ.AggregateTotal(Sender: TObject):boolean;
begin
// Sum up in edTOTAL.text, used as global int variable
edTOTAL.text:=inttostr(strtoint(edTOTAL.text) + DMNEDPAK.quePluk.fieldbyname('ORDERQTY').asinteger);
dmNEDPAK.SetTryk(true); // marker som trykt
// do not stop looping!:
result:=true;
end;
function RightStr
(Const Str: String; Size: Word): String;
begin
if Size > Length(Str) then Size := Length(Str) ;
RightStr := Copy(Str, Length(Str)-Size+1, Size)
end;
procedure TfoNEDVEJ.UdskrivSamletFraHer(Sender: TDataSet);
begin
// Opsaml en hel, fra nuværende position.
// Tidligere blev OJD_EXTERNALITEMID2 benyttet her, men den
// skal hentes eksternt. Den er dog UNIKT bestemt
// ud fra itemid, ojd_externalitemid og CUSTACCOUNT
// derfor bruges CUSTACCOUNT.
// Reset total
edTOTAL.text:='0';
// Loop og aggreger total
LoopToLast(DMNEDPAK.quePluk, ['ITEMID','OJD_EXTERNALITEMID','CUSTACCOUNT'], false, AggregateTotal);
// Udskriv
UdskrivRows;
end;
procedure TFoNEDVEJ.UdskrivAlleClick(Sender: TObject);
begin
try
BeginWork;
DMNEDPAK.quePluk.DoForAll(UdskrivSamletFraHer);
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.UdskrivSamletClick(Sender: TObject);
begin
try
BeginWork;
if StrToInt(EDTOTAL.TEXT)>1 then
UdskrivRows
else begin
// Søg til den FØRSTE af slagsen (backwards)
LoopToLast(dmnedpak.quePluk, ['ITEMID','OJD_EXTERNALITEMID','CUSTACCOUNT'],true);
// Udskriv samlet
UdskrivSamletFraHer(dmnedpak.quePluk);
dmnedpak.quePluk.Next;
end;
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.bbtUDSALLEUNDERClick(Sender: TObject);
begin
with DMNEDPAK.quePluk do
begin
try
BeginWork;
filter:='ORDERQTY < '+inttostr(spUNDER.value);
Filtered := true;
EndWork;
UdskrivAlleClick(sender);
finally
BeginWork;
Filtered := false;
EndWork;
end;
end;
end;
procedure TFoNEDVEJ.bbtudskrivClick(Sender: TObject);
var
x: word;
bm: TBookMark;
begin
try
BeginWork;
dbg.DataSource.DataSet.DisableControls;
with dbg.SelectedRows do
begin
if Count > 1 then // Multiple selected
begin
bm:= dbg.DataSource.DataSet.GetBookmark;
for x:=0 to Count - 1 do
begin
if IndexOf(Items[x]) > -1 then
begin
UdskrivRows;
dbg.DataSource.DataSet.Bookmark := Items[x];
end;
end;
dbg.DataSource.DataSet.GotoBookmark(bm);
dbg.DataSource.DataSet.FreeBookmark(bm);
end
else // one selected
begin
// Centrer valgte record når der udskrives ved klik på udskriv linie.
dbg.DataSource.dataset.GotoCurrent;
UdskrivRows;
end;
with edit2 do
begin
end;
end;
dbg.DataSource.DataSet.EnableControls;
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.FormShow(Sender: TObject);
begin
if (paramcount >= 1) AND (paramstr(1) = 'DoNotPrint') then
DoPrint := false;
// See timer.OnTimer
end;
procedure TFoNEDVEJ.FormDestroy(Sender: TObject);
begin
Application1.Documents.CloseAll(False);
end;
procedure TFoNEDVEJ.EdSOGNAVNKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_return then
bbtSOGNAVNClick(Sender)
end;
procedure TFoNEDVEJ.RGSOGNAVNClick(Sender: TObject);
begin
bbtSOGNAVNClick(sender);
edSOGNAVN.SetFocus;
end;
procedure TFoNEDVEJ.GruppeFilterClick(Sender: TObject);
begin
RGFILTER.ItemIndex := (sender as TMenuItem).tag;
end;
procedure TFoNEDVEJ.Skifttrykkestatus1Click(Sender: TObject);
begin
dmnedpak.ToggleTryk;
end;
procedure TFoNEDVEJ.SorterClick(Sender: TObject);
begin
RGSOGNAVN.ItemIndex := (Sender as TMenuItem).tag;
end;
procedure TFoNEDVEJ.AfslutClick(Sender: TObject);
begin
Close;
end;
I am having this little update for programe,
A field has been added to the programme - Where the user can type in the Charge number- If Charge number is identical with ItemID = Charge number in the database, I want it to print.
How to do this?
type
TFoNEDVEJ = class(TForm)
RGSOGNAVN: TRadioGroup;
MainMenu1: TMainMenu;
Filer1: TMenuItem;
UdskrivLinie: TMenuItem;
UdskrivAlle: TMenuItem;
N1: TMenuItem;
Afslut: TMenuItem;
Sortering1: TMenuItem;
SorterefterKundenavn1: TMenuItem;
SorterefterFlg1: TMenuItem;
Sorter: TMenuItem;
GroupBox1: TGroupBox;
EdSOGNAVN: TEdit;
bbtSOGNAVN: TBitBtn;
RGFILTER: TRadioGroup;
EDANTAL: TEdit;
Label1: TLabel;
EDLABEL: TEdit;
Label2: TLabel;
bbtudskriv: TBitBtn;
bbtUDSKALLE: TBitBtn;
Label3: TLabel;
EDTOTAL: TEdit;
bbtudssam: TBitBtn;
UdskrivSamlet: TMenuItem;
N2: TMenuItem;
GruppeMonteringsst1: TMenuItem;
GruppeLsdele1: TMenuItem;
GruppeSlanger1: TMenuItem;
GruppeSlidindikatorer1: TMenuItem;
Gruppe500serie1: TMenuItem;
Gruppe900serie1: TMenuItem;
GruppeFilter: TMenuItem;
CBENKELT: TCheckBox;
bbtUDSALLEUNDER: TBitBtn;
spUNDER: TSpinEdit;
UdskrivAlleUnder: TMenuItem;
dbg: TDBGrid;
Application1: TApplication;
Timer: TTimer;
pa: TPanel;
paIm: TPanel;
im: TImage;
rgTryk: TRadioGroup;
dsPluk: TDataSource;
PopupMenu1: TPopupMenu;
Skifttrykkestatus1: TMenuItem;
Edit1: TEdit;
DBGrid1: TDBGrid;
edCHSTREG: TEdit;
Edit2: TEdit;
procedure dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure Skifttrykkestatus1Click(Sender: TObject);
procedure dsPlukDataChange(Sender: TObject; Field: TField);
procedure bbtudskrivClick(Sender: TObject);
procedure RGSOGNAVNClick(Sender: TObject);
procedure TimerTimer(Sender: TObject);
procedure SorterClick(Sender: TObject);
procedure bbtSOGNAVNClick(Sender: TObject);
procedure AfslutClick(Sender: TObject);
procedure UdskrivRows();
procedure UdskrivAlleClick(Sender: TObject);
procedure UdskrivSamletClick(Sender: TObject);
procedure GruppeFilterClick(Sender: TObject);
procedure bbtUDSALLEUNDERClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure EdSOGNAVNKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormDestroy(Sender: TObject);
procedure VisBillede;
private
procedure UdskrivSamletFraHer(Sender: TDataSet);
function AggregateTotal(Sender: TObject):boolean;
procedure BeginWork;
procedure EndWork;
public
end;
var
FoNEDVEJ: TFoNEDVEJ;
doc: LabelManager2_TLB.document;
implementation
uses DMNED, sqlhelpers,adohelper, utils,variants, DataSetForIn;
{$R *.DFM}
procedure TFoNEDVEJ.BeginWork;
begin
screen.cursor:=crHourGlass;
bbtUdskriv.Enabled:=false;
bbtUdsSam.enabled:=false;
bbtUdskAlle.enabled:=false;
bbtUdsAlleUnder.enabled:=false;
end;
procedure TFoNEDVEJ.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
DBGridDrawCheckBox(dbg, 'OJD_PRINTED', rect, dataCol, column, State);
end;
procedure TFoNEDVEJ.dsPlukDataChange(Sender: TObject; Field: TField);
begin
VisBillede();
end;
procedure TFoNEDVEJ.EndWork;
begin
screen.cursor:=crDefault;
bbtUdskriv.Enabled:=true;
bbtUdsSam.enabled:=true;
bbtUdskAlle.enabled:=true;
bbtUdsAlleUnder.enabled:=true;
end;
// prøver en sti og returnerer true hvis der er fundet et billede på stien
// den sætter desuden billed=stientilbilled, hvis det er fundet.
function TryPath(path:string; var billed: string): boolean;
var
s:string;
begin
s := path + billed;
if(fileexists(s + '.bmp')) then
begin
billed:=s + '.bmp';
result:=true;
end
else if(fileexists(s + '.jpg')) then
begin
billed:=s + '.jpg';
result:=true;
end
else
begin
result:=false;
end;
end;
procedure TFoNEDVEJ.VisBillede;
var
found:boolean;
b:string;
begin
found := true; // Maybe image exists...
if(not dmnedpak.quePluk.eof) then
begin
b:=dmnedpak.quePluk.fieldbyname('ITEMID').asstring;
b:=stringreplace(b,'.','',[rfReplaceAll]);
// Billednavn:
if copy(b,1,2)='WS' then // Til slidindikatorer
b := 'Q:\Billeder\Slidindikatorer\' + copy(b,1,2)+'_'+copy(b,4,4)
else // Andre...
found := TryPath('Q:\BILLEDER\LØSDELE\', b)
or TryPath('Q:\Billeder\Slanger\Quick\', b)
// or TryPath('O:\NogleAndreBilleder\', b)
;
end
else
found:=false; // Image does not exist
if(found) then
begin
// Load picture.
try
im.Picture.LoadFromFile(b);
paIm.caption := '';
im.Visible:=true;
except
paIm.caption := 'Fejl ved visning af billede';
im.Visible:=false;
end;
end
else
begin
paIm.caption := 'Intet billede';
im.Visible:=false;
end;
end;
procedure TFoNEDVEJ.TimerTimer(Sender: TObject);
begin
timer.enabled:=false;
BeginWork;
pa.Align:=alClient;
pa.Caption:='Åbner codesoft og tabeller...';
forms.application.processmessages;
application1.Visible:=true;
dmnedpak.Prepare;
pa.Visible:=false;
edSOGNAVN.SetFocus;
EndWork;
end;
procedure TFoNEDVEJ.bbtSOGNAVNClick(Sender: TObject);
const
sqlsort: array [0..2] of string = (' ORDER BY j.PICKINGLISTID,t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID, t.ITEMID',
' ORDER BY t.ITEMID, j.CustAccount, t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID, t.Pickinglistid',
' ORDER BY j.CustAccount, t.ITEMID, j.PICKINGLISTID, t.OJD_SUMGROUPID, t.OJD_GROUPSORTING, t.OJD_PICKINGLISTGROUPID');
sqlwhere = 'WHERE j.dataareaid=''ojd'' and t.dataareaid=''ojd'' and (j.PICKINGLISTID = t.PICKINGLISTID) and (i.ITEMID = t.ITEMID)'#13#10;
sqlbase = 'SELECT j.ORDERID, j.DELIVERYNAME, j.CUSTACCOUNT, j.LANGUAGEID, t.ITEMID, t.ORDERUNIT, t.ORDERQTY, t.INVENTQTY, t.OJD_EXTERNALITEMID, t.OJD_WEIGHTGROUPID, t.OJD_SUMGROUPID,'+' j.PICKINGLISTID, t.DELIVERYDATE, t.OJD_DATEREF, t.OJD_PICKINGLISTGROUPID, t.OJD_PRINTED, t.OJD_PURCHORDERFORMNUM, t.OJD_LINESALESID, i.ITEMBARCODE QUICK_BARCODE'#13#10+
'FROM inventpickinglistJOUR j, inventpickinglistTRANS t, InventItemBarcode i'+#13#10;
sqlUdvalg: array [0..12] of string = ('','00','01','02-08','03','03','03','04','02-01','02-01','02-02','02-03','02-04');
var
gp1,gp2,gpExtra:string; // for group filter
udvalg : string; // accumulated where clause
soeg1,soeg2:string; // soegefelt, evt. med wildcard
searchField: string; // søgefelt.
begin
BeginWork;
gp1:=sqlUdvalg[rgfilter.itemindex];
gp2:= gp1;
gpExtra:='';
// Gruppe
case rgfilter.itemindex of
3: gp2:='02-30';
5: gpExtra:= ' AND OJD_PICKINGLISTGROUPID=''FR''';
6: gpExtra:= ' AND OJD_PICKINGLISTGROUPID<>''FR''';
8: gp2:='02-04';
end;
if(rgFilter.itemindex > 0) then
udvalg:= makewhere(sqlwhere,'OJD_SUMGROUPID',gp1,gp2+char(250)) + gpExtra
else
udvalg:=sqlWhere;
// Trykkestatus
case rgTryk.ItemIndex of
1: udvalg:=udvalg + ' AND t.OJD_PRINTED=0';
2: udvalg:=udvalg + ' AND t.OJD_PRINTED=1';
end;
// Søgning
soeg1 :=edSOGNAVN.text;
dbg.Columns[0].Visible:=false;
if soeg1='' then
dmNEDPAK.quePluk.Close
else begin
if(rgSOGNAVN.itemindex = 0) then
try
// Her bruges med vilje kun soeg1.
// Range
if(pos('-', soeg1) <> 0) then
soeg1:='t.PickinglistID between ' + stringreplace(soeg1, '-', ' and ', [])
else // "normal"
soeg1:='t.PickinglistID = ' + soeg1;
// Komma separaret.
soeg1 := stringreplace(soeg1, ',', ' or t.PickinglistID = ', [rfReplaceAll]);
if(udvalg = '') then
udvalg := 'where ';
// vis kun pickinglistid ved flere forskellige.
dbg.Columns[0].Visible:=(pos(' or ',soeg1) <> 0) or (pos('between', soeg1) <> 0);
dbg.Columns[0].Width:=55;
udvalg := udvalg + ' and (' + soeg1 + ')';
except
dmNEDPAK.quePluk.Close;
EndWork;
exit;
end
else begin
if(copy(soeg1,length(soeg1),1) = '*') then // wildcard
begin
soeg1 := copy(soeg1,1,length(soeg1)-1);
soeg2 := soeg1 + chr(250);
end
else
soeg2 := soeg1;
case RGSOGNAVN.ItemIndex of
1 : searchField := 't.ItemId';
2 : searchField := 'j.CustAccount';
end;
udvalg:=makewhere(udvalg,searchField,soeg1,soeg2);
end;
// Sortering
makesql(dmNedpak.quePluk,sqlbase,udvalg,sqlSort[RGSOGNAVN.ItemIndex]);
end;
EndWork;
end;
procedure TFoNEDVEJ.UdskrivRows();
var
ef,ed:TStringlist;
lbl:string;
total:integer;
procedure Print(antal:integer; antalud:integer);
var
askeantal:string;
begin
askeantal:=inttostr(antal);
if copy(dmnedpak.quePluk.fieldbyname('CUSTACCOUNT').asstring,0,10)='6-DE FORD1' then
askeantal:=copy(dmnedpak.quePluk.fieldbyname('OJD_EXTERNALITEMID').asstring,10,10);
ed.Delete(ed.Count-1);
ed.add(askeantal);
// EmulatePrint('c:\nedpakNY.txt','not-used(literally)', 1, lbl, TDataSet(DMNEDPAK.quePluk), antalud, ef, ed);
CSPrint(application1,lbl,tdataset(DMNEDPAK.quePluk),false,[],antalud,nil,nil,ef,ed);
end;
var
antal:integer;
begin
ef:=TStringlist.Create;
ef.CaseSensitive:=false; // 'ASKE_ANTAL' og 'aske_ANTAL' benyttes begge, så den skal være caseinsensitive
ed:=TStringlist.create;
try
antal:=strtoint(edANTAL.text);
total:=ZeroAsOther(strtoint(EDTOTAL.TEXT),DMNEDPAK.quePluk.fieldbyname('ORDERQTY').asinteger);
lbl:= EDLABEL.TEXT;
dmnedpak.HentForpakningsInformation(
cbenkelt.checked,
antal,
total,
lbl,
ef,ed);
ef.add('ASKE_ANTAL');
// askeantal ændres i Print
ed.add('');
if CBENKELT.checked then
Print(1,total) // total etiketter med 1 stk.
else
begin
if(total < 20) then
begin
dmnedpak.CheckTeves(lbl);
antal:=total; // en etiket med total som antal
end;
Print(antal,trunc(total/antal));
// Hvis der er nogen der mangler at blive udskrevet
// - dvs. ANTAL/ANTALPERKASSE ikke gik op og der er en rest,
// så skal denne udskrives. Dog ikke hvis rest == samlet total, da den første etiket så giver total.
antal := total mod antal;
if antal > 0 then
begin
dmnedpak.CheckTeves(lbl);
Print(antal,1);
end;
end;
dmNedPak.SetTryk(true); // marker som trykt
EDTOTAL.TEXT:='0';
finally
ef.free;
ed.free;
end;
end;
function TfoNEDVEJ.AggregateTotal(Sender: TObject):boolean;
begin
// Sum up in edTOTAL.text, used as global int variable
edTOTAL.text:=inttostr(strtoint(edTOTAL.text) + DMNEDPAK.quePluk.fieldbyname('ORDERQTY').asinteger);
dmNEDPAK.SetTryk(true); // marker som trykt
// do not stop looping!:
result:=true;
end;
function RightStr
(Const Str: String; Size: Word): String;
begin
if Size > Length(Str) then Size := Length(Str) ;
RightStr := Copy(Str, Length(Str)-Size+1, Size)
end;
procedure TfoNEDVEJ.UdskrivSamletFraHer(Sender: TDataSet);
begin
// Opsaml en hel, fra nuværende position.
// Tidligere blev OJD_EXTERNALITEMID2 benyttet her, men den
// skal hentes eksternt. Den er dog UNIKT bestemt
// ud fra itemid, ojd_externalitemid og CUSTACCOUNT
// derfor bruges CUSTACCOUNT.
// Reset total
edTOTAL.text:='0';
// Loop og aggreger total
LoopToLast(DMNEDPAK.quePluk, ['ITEMID','OJD_EXTERNALITEMID','CUSTACCOUNT'], false, AggregateTotal);
// Udskriv
UdskrivRows;
end;
procedure TFoNEDVEJ.UdskrivAlleClick(Sender: TObject);
begin
try
BeginWork;
DMNEDPAK.quePluk.DoForAll(UdskrivSamletFraHer);
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.UdskrivSamletClick(Sender: TObject);
begin
try
BeginWork;
if StrToInt(EDTOTAL.TEXT)>1 then
UdskrivRows
else begin
// Søg til den FØRSTE af slagsen (backwards)
LoopToLast(dmnedpak.quePluk, ['ITEMID','OJD_EXTERNALITEMID','CUSTACCOUNT'],true);
// Udskriv samlet
UdskrivSamletFraHer(dmnedpak.quePluk);
dmnedpak.quePluk.Next;
end;
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.bbtUDSALLEUNDERClick(Sender: TObject);
begin
with DMNEDPAK.quePluk do
begin
try
BeginWork;
filter:='ORDERQTY < '+inttostr(spUNDER.value);
Filtered := true;
EndWork;
UdskrivAlleClick(sender);
finally
BeginWork;
Filtered := false;
EndWork;
end;
end;
end;
procedure TFoNEDVEJ.bbtudskrivClick(Sender: TObject);
var
x: word;
bm: TBookMark;
begin
try
BeginWork;
dbg.DataSource.DataSet.DisableControls;
with dbg.SelectedRows do
begin
if Count > 1 then // Multiple selected
begin
bm:= dbg.DataSource.DataSet.GetBookmark;
for x:=0 to Count - 1 do
begin
if IndexOf(Items[x]) > -1 then
begin
UdskrivRows;
dbg.DataSource.DataSet.Bookmark := Items[x];
end;
end;
dbg.DataSource.DataSet.GotoBookmark(bm);
dbg.DataSource.DataSet.FreeBookmark(bm);
end
else // one selected
begin
// Centrer valgte record når der udskrives ved klik på udskriv linie.
dbg.DataSource.dataset.GotoCurrent;
UdskrivRows;
end;
with edit2 do
begin
end;
end;
dbg.DataSource.DataSet.EnableControls;
finally
EndWork;
end;
end;
procedure TFoNEDVEJ.FormShow(Sender: TObject);
begin
if (paramcount >= 1) AND (paramstr(1) = 'DoNotPrint') then
DoPrint := false;
// See timer.OnTimer
end;
procedure TFoNEDVEJ.FormDestroy(Sender: TObject);
begin
Application1.Documents.CloseAll(False);
end;
procedure TFoNEDVEJ.EdSOGNAVNKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_return then
bbtSOGNAVNClick(Sender)
end;
procedure TFoNEDVEJ.RGSOGNAVNClick(Sender: TObject);
begin
bbtSOGNAVNClick(sender);
edSOGNAVN.SetFocus;
end;
procedure TFoNEDVEJ.GruppeFilterClick(Sender: TObject);
begin
RGFILTER.ItemIndex := (sender as TMenuItem).tag;
end;
procedure TFoNEDVEJ.Skifttrykkestatus1Click(Sender: TObject);
begin
dmnedpak.ToggleTryk;
end;
procedure TFoNEDVEJ.SorterClick(Sender: TObject);
begin
RGSOGNAVN.ItemIndex := (Sender as TMenuItem).tag;
end;
procedure TFoNEDVEJ.AfslutClick(Sender: TObject);
begin
Close;
end;