Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, ADODB, dbcgrids, StdCtrls, DBCtrls,
Mask, ThemeDBGrid, DBCtrlsEh, DBLookupEh, ComCtrls, Buttons,math;
type
TRealCekova = class(TForm)
ADOCekovi: TADOQuery;
DataCekovi: TDataSource;
ADOCekoviIDCeka: TAutoIncField;
ADOCekoviSerijskiBr: TWideStringField;
ADOCekoviIDBanke: TIntegerField;
ADOCekoviDPrijema: TDateTimeField;
ADOCekoviDDospeca: TDateTimeField;
ADOCekoviIznos: TFloatField;
ADOCekoviRealizovano: TBooleanField;
ADOBanke: TADOQuery;
ADOConnection1: TADOConnection;
ADOBankeIDBanke: TAutoIncField;
ADOBankeBanka: TWideStringField;
ADORadnje: TADOQuery;
ADORadnjeIDRadnje: TAutoIncField;
ADORadnjeRadnja: TWideStringField;
ADORadnjeAdresa: TWideStringField;
ADORadnjeMesto: TWideStringField;
ADOCekoviBanka: TStringField;
ADOCekoviRadnja: TStringField;
ThemeDBGrid1: TThemeDBGrid;
GroupBox1: TGroupBox;
DataRadnje: TDataSource;
DataBanke: TDataSource;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Radnja: TDBLookupComboboxEh;
Banka: TDBLookupComboboxEh;
SerBroj: TEdit;
DatumPrijema: TDateTimePicker;
DatumDospeca: TDateTimePicker;
ADOCekoviDRealizacije: TDateTimeField;
NerCekovi: TCheckBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
DatumReal: TDateTimePicker;
CheckBox1: TCheckBox;
ADOCekoviIDRadnje: TIntegerField;
ADORadnjeIDGrupe: TIntegerField;
ADOCekoviTekuciRN: TWideStringField;
ADOBankeTekuciRN: TWideStringField;
Button1: TButton;
procedure SerBrojChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure ThemeDBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ThemeDBGrid1DblClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ThemeDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
RealCekova: TRealCekova;
Function KontrolniBroj(Model:Integer; Tekst:String): String;
function IsDate(str: string): Boolean;
implementation
uses Unit2, Unit3;
{$R *.dfm}
[b]
Function KontrolniBroj(Model:Integer;Tekst:String):String;
var
x: Variant;
begin
x:=(StrToInt64(Tekst)*100/model)-(StrToInt64(Tekst)*100 div model);
x:=RoundTo(x,-2);
x:=model+1-RoundTo(model*x,-1);
x:=Round(x);
Result:=VarToStr(x);
end;
[/b]
function IsDate(str: string): Boolean;
var
dt: TDateTime;
begin
Result := True;
try
dt := StrToDate(str);
except
Result := False;
MessageDlg('Datum koji ste uneli nije ispravan. Pokušajte ponovo!',mtError,[mbOK],0);
end;
end;
procedure TRealCekova.SerBrojChange(Sender: TObject);
begin
CheckBox1.Enabled:=not NerCekovi.Checked;
if not CheckBox1.Enabled then
CheckBox1.Checked:=false;
DatumReal.Enabled:=CheckBox1.Enabled;
if CheckBox1.Enabled then
DatumReal.Enabled:=CheckBox1.Checked;
//if CheckBox1.Checked then
begin
DatumPrijema.Enabled:=not CheckBox1.Checked;
DatumDospeca.Enabled:=not CheckBox1.Checked;
end;
with ADOCekovi do
begin
Active:=false;
SQL.Clear;
SQL.Add('select * from tabCekovi');
SQL.Add('where SerijskiBr like "%'+SerBroj.Text+'%"');
if Radnja.Value <> null then
SQL.Add('and IDRadnje like "'+IntToStr(Radnja.Value)+'"');
if Banka.Value <> null then
SQL.Add('and IDBanke like "'+IntToStr(Banka.Value)+'"');
if NerCekovi.Checked then
SQL.Add(' and Realizovano<>True');
if CheckBox1.Checked then
begin
SQL.Add(' and DRealizacije=:DRealizacije');
Parameters.ParamByName('DRealizacije').Value:=DateToStr(DatumReal.Date);
end
else
begin
SQL.Add(' and DPrijema>=:DPrijema');
SQL.Add(' and DDospeca<=:DDospeca');
Parameters.ParamByName('DDospeca').Value:=DateToStr(DatumDospeca.Date);
Parameters.ParamByName('DPrijema').Value:=DateToStr(DatumPrijema.Date);
end;
Prepared:=true;
Open;
end;
end;
procedure TRealCekova.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'\baza.mdb;Mode=Share Deny None';
ADOConnection1.Open;
DatumPrijema.Date:=StrToDate('01.01.'+FormatDateTime('yyyy',Date));
DatumReal.Date:=Now;
DatumDospeca.Date:=Now;
SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);
end;
procedure TRealCekova.FormActivate(Sender: TObject);
begin
SerBrojChange(self);
end;
procedure TRealCekova.BitBtn1Click(Sender: TObject);
var
Datum:String;
begin
if not ADOCekovi.IsEmpty then
begin
if MessageDlg('Sigurno želite realizovati čekove koji se nalaze na spisku?',mtInformation,[mbCancel,mbOK],1) = idok then
begin
Datum:=DateToStr(Now);
if InputQuery('Upit','Unesite datum na koji zelite realizovati čekove:',Datum) then
if IsDate(Datum) then
begin
ADOCekovi.First;
while not ADOCekovi.Eof do
begin
if ADOCekoviRealizovano.Value = false then
begin
ADOCekovi.Edit;
ADOCekoviRealizovano.Value:=true;
ADOCekoviDRealizacije.Value:=StrToDate(Datum);
ADOCekovi.Post;
end;
ADOCekovi.Next;
end;
MessageDlg('PROGRAM JE AUTOMATSKI REALIZOVAO SAMO ONE ČEKOVE KOJI NISU BILI REALIZOVANI A NALAZILI SU SE NA OVOM SPISKU.',mtConfirmation,[mbOK],1);
NerCekovi.Checked:=false;
CheckBox1.Checked:=True;
DatumReal.Date:=StrToDate(datum);
NerCekovi.OnClick(sender);
if MessageDlg('Želite li štampati specifikaciju?',mtInformation,[mbYes,mbNo],0) = idYes then
BitBtn2Click(Sender);
end;
end;
end;
end;
procedure TRealCekova.BitBtn2Click(Sender: TObject);
begin
if not ADOCekovi.IsEmpty then
begin
with form3.ADOR do
begin
Active:=false;
SQL.Clear;
SQL.Add('select DISTINCT IDRadnje from tabCekovi');
SQL.Add('where SerijskiBr like "%'+SerBroj.Text+'%"');
if Radnja.Value <> null then
SQL.Add('and IDRadnje like "'+IntToStr(Radnja.Value)+'"');
if Banka.Value <> null then
SQL.Add('and IDBanke like "'+IntToStr(Banka.Value)+'"');
if NerCekovi.Checked then
SQL.Add(' and Realizovano<>True');
if CheckBox1.Checked then
begin
SQL.Add(' and DRealizacije=:DRealizacije');
Parameters.ParamByName('DRealizacije').Value:=DateToStr(DatumReal.Date);
end
else
begin
SQL.Add(' and DPrijema>=:DPrijema');
SQL.Add(' and DDospeca<=:DDospeca');
Parameters.ParamByName('DDospeca').Value:=DateToStr(DatumDospeca.Date);
Parameters.ParamByName('DPrijema').Value:=DateToStr(DatumPrijema.Date);
end;
Prepared:=true;
Open;
end;
with Form3.ADOCek do
begin
Close;
SQL.Clear;
SQL.Add(ADOCekovi.SQL.GetText);
SQL.Add('and IDRadnje = :IDRadnje');
if CheckBox1.Checked then
Parameters.ParamByName('DRealizacije').Value:=DateToStr(DatumReal.Date)
else
begin
Parameters.ParamByName('DDospeca').Value:=DateToStr(DatumDospeca.Date);
Parameters.ParamByName('DPrijema').Value:=DateToStr(DatumPrijema.Date);
end;
Prepared:=true;
end;
form3.Data.DataSet:=Form3.ADOR;
Form3.ADOCek.DataSource:=Form3.Data;
Form3.ADOCek.Open;
Form3.QuickRep.Preview;
end;
end;
procedure TRealCekova.BitBtn3Click(Sender: TObject);
begin
ADOCekovi.Append;
ADOCekoviRealizovano.Value:=false;
if radnja.Value<>Null then
ADOCekoviIDRadnje.Value:=Radnja.Value;
if ADDStavke.ShowModal=IDOK then
ADOCekovi.Post
else
ADOCekovi.Cancel;
end;
procedure TRealCekova.BitBtn5Click(Sender: TObject);
begin
if not ADOCekovi.IsEmpty then
begin
if MessageDlg('Sigurno želite izbrisati selektovanu stavku?',mtConfirmation,[mbYes,mbNo],0) = idyes then
ADOCekovi.Delete;
end;
end;
procedure TRealCekova.BitBtn4Click(Sender: TObject);
begin
if not ADOCekovi.IsEmpty then
begin
ADOCekovi.Edit;
ADOCekoviRealizovano.Value:=false;
if ADDStavke.ShowModal=IDOK then
ADOCekovi.Post
else
ADOCekovi.Cancel;
end;
end;
procedure TRealCekova.ThemeDBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_DELETE:BitBtn5Click(Sender);
VK_RETURN:BitBtn4Click(sender);
VK_INSERT:BitBtn3Click(sender);
end;
end;
procedure TRealCekova.ThemeDBGrid1DblClick(Sender: TObject);
begin
BitBtn4Click(sender);
end;
procedure TRealCekova.CheckBox1Click(Sender: TObject);
begin
DatumReal.Enabled:= not NerCekovi.Checked;
end;
procedure TRealCekova.FormShow(Sender: TObject);
begin
ADOCekovi.Open;
end;
procedure TRealCekova.ThemeDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (gdSelected in State) or (gdFocused in State) then
Begin
ThemeDBGrid1.Canvas.Brush.Color := $0006E6B9;
ThemeDBGrid1.Canvas.Font.Color := clBlack;
ThemeDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);
end;
end;
[b]
procedure TRealCekova.Button1Click(Sender: TObject);
begin
ShowMessage(KontrolniBroj(97,SerBroj.Text));
end;
[/b]
end.
Pokušao sam na razne načine da skontam u čemu je džidža al neće.
Kreiram novi program, iskopiram funkciju i radi kako treba, al kad ubacim u stari program tu ne fercera. daje neke približne vrednosti al nikako pravu, tipa umesto 46 daje 50, 24 daje 25 i tako dalje.
Nikad izvini!