⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 barcodequery.~pas

📁 Barcode And LabelPrint
💻 ~PAS
字号:
unit BarCodeQuery;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NEOFORM, ExtCtrls, ToolWin, ComCtrls, StdCtrls, DBCtrls, Buttons,
  fcImager, fcdbtreeview, fcStatusBar, fcTreeView, GridsEh, DBGridEh, ADODB;

type
  TFrmBarCodeQuery = class(TGBKPForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DateTimePickerPostDateSart: TDateTimePicker;
    DateTimePickerPostDateEnd: TDateTimePicker;
    BitBtn1: TBitBtn;
    CheckBoxOrderID: TCheckBox;
    CheckBoxPostDate: TCheckBox;
    CheckBoxCustomer: TCheckBox;
    CheckBoxDevtype: TCheckBox;
    EdtBarcode: TEdit;
    EdtOrderIDSart: TComboBox;
    EdtDevtype: TComboBox;
    CheckBoxIsOut: TCheckBox;
    EdtOrderIDEnd: TComboBox;
    fcStatusBar1: TfcStatusBar;
    PageControl1: TPageControl;
    TabSheetOrderID: TTabSheet;
    TabSheetBarcode: TTabSheet;
    GroupBox2: TGroupBox;
    MemoOrderDetail: TMemo;
    GroupBox3: TGroupBox;
    MemoOrderMemo: TMemo;
    GroupBox4: TGroupBox;
    Label11: TLabel;
    EdtOrderID: TEdit;
    Label3: TLabel;
    EdtCustomerName: TEdit;
    Label14: TLabel;
    EdtPostDate: TEdit;
    GroupBox5: TGroupBox;
    EdtDevName: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    EdtNum: TEdit;
    DBGridEh1: TDBGridEh;
    Label8: TLabel;
    MemoBarcode: TMemo;
    CheckBoxBarCode: TCheckBox;
    EdtCustomer: TEdit;
    fcTreeView1: TTreeView;
    procedure CheckBoxOrderIDClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure fcTreeView1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure EdtOrderIDSartChange(Sender: TObject);
    procedure fcTreeView1Change(Sender: TObject; Node: TTreeNode);
  private
    sqlstrOrderID: string;
    sqlstrGBarCodeID: string;
    sqlstrBarCode: string;
    { Private declarations }
    procedure ordersToTreeView;
    procedure loadOrderS(nodedataInt: integer);
    procedure loadBarCodeS(nodedataInt: integer);
  public
    { Public declarations }
  end;

var
  FrmBarCodeQuery: TFrmBarCodeQuery;

implementation

uses StockDataModel, DB, PublicFunction;

{$R *.dfm}

procedure TFrmBarCodeQuery.CheckBoxOrderIDClick(Sender: TObject);
begin
  inherited;
  EdtOrderIDSart.Enabled := CheckBoxOrderID.Checked;
  EdtOrderIDEnd.Enabled := CheckBoxOrderID.Checked;
  DateTimePickerPostDateSart.Enabled := CheckBoxPostDate.Checked;
  DateTimePickerPostDateEnd.Enabled := CheckBoxPostDate.Checked;
  EdtDevtype.Enabled := CheckBoxDevtype.Checked;
  EdtCustomer.Enabled := CheckBoxCustomer.Checked;
  EdtBarcode.Enabled := CheckBoxBarCode.Checked;

  if EdtOrderIDSart.Enabled = false then EdtOrderIDSart.Color := clSilver else EdtOrderIDSart.Color := clWindow;
  EdtOrderIDEnd.Color := EdtOrderIDSart.Color;
  if DateTimePickerPostDateSart.Enabled = false then DateTimePickerPostDateSart.Color := clSilver else DateTimePickerPostDateSart.Color := clWindow;
  DateTimePickerPostDateEnd.Color := DateTimePickerPostDateSart.Color;
  if EdtDevtype.Enabled = false then EdtDevtype.Color := clSilver else EdtDevtype.Color := clWindow;
  if EdtCustomer.Enabled = false then EdtCustomer.Color := clSilver else EdtCustomer.Color := clWindow;
  if EdtBarcode.Enabled = false then EdtBarcode.Color := clSilver else EdtBarcode.Color := clWindow;
end;

procedure TFrmBarCodeQuery.BitBtn1Click(Sender: TObject);
var sqlstr: string;
  sqlstrsub: string;
begin
  inherited;
  if CheckBoxOrderID.Checked then
  begin
  if (trim(EdtOrderIDSart.Text)='')or(trim(EdtOrderIDend.Text)='') then
  begin
  ShowMessage('请输入订单号');
  exit;
  end;
  end;
  sqlstr := '';
  sqlstrsub := '';
  sqlstrOrderID := '';
  sqlstrGBarCodeID := '';
  sqlstrsub := 'select a.*,b.*,c.DevName,d.CustomerName,d.postdate,d.OrderDetail,d.OrderMemo  from BarCode a,GBarCode b,DeviceType c,Orders d  ' +
    'where  a.GBarCodeID=b.GBarCodeID and b.Devnum=c.Devnum and b.OrderID=d.OrderID'; //

  sqlstrOrderID := 'select d.orderID  from BarCode a,GBarCode b,DeviceType c,Orders d  ' +
    'where  a.GBarCodeID=b.GBarCodeID and b.Devnum=c.Devnum and b.OrderID=d.OrderID'; //
  sqlstrGBarCodeID := 'select b.GBarCodeID  from BarCode a,GBarCode b,DeviceType c,Orders d  ' +
    'where  a.GBarCodeID=b.GBarCodeID and b.Devnum=c.Devnum and b.OrderID=d.OrderID'; //
  sqlstrBarCode := 'select a.BarCode  from BarCode a,GBarCode b,DeviceType c,Orders d  ' +
    'where  a.GBarCodeID=b.GBarCodeID and b.Devnum=c.Devnum and b.OrderID=d.OrderID'; //
  if CheckBoxOrderID.Checked then
  begin
    sqlstr := sqlstr + format(' and a.OrderId>=%d and a.OrderId<=%d', [strtoint(trim(EdtOrderIDSart.Text)),strtoint(trim(EdtOrderIDEnd.Text))]);
  end;
  if CheckBoxPostDate.Checked then
  begin
    sqlstr := sqlstr + format(' and PostDate >=''%s'' and PostDate <= ''%s''', [datetostr(DateTimePickerPostDateSart.Date), datetostr(DateTimePickerPostDateEnd.Date)]);
  end; //保证日期是datetime型
  if CheckBoxDevtype.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and DevName like ''%%%s%%'' ', [EdtDevtype.Text]);
  end;

  if CheckBoxCustomer.Checked then
  begin //可模糊查询
    sqlstr := sqlstr + format(' and CustomerName like ''%%%s%%''', [EdtCustomer.Text]);
  end;

  if CheckBoxIsOut.State = cbChecked then
    sqlstr := sqlstr + format(' and a.IsOut=%d', [1])
  else if CheckBoxIsOut.State = cbunchecked then sqlstr := sqlstr + format(' and a.IsOut=%d', [0]);

  if CheckBoxBarCode.Checked then
  begin
     //可模糊查询
    sqlstr := sqlstr + format(' and BarCode like ''%%%s%%''', [EdtBarcode.Text]);
  end;
  //查询出所有符合条件的条码
  with StockDM.QBarCodefind do
  begin
    Close;
    SQL.Clear;
    SQL.Text := sqlstrsub + sqlstr + ' order by a.OrderID';
    Prepared := true;
    Open;
    sqlstrOrderID := sqlstrOrderID + sqlstr;
    sqlstrGBarCodeID := sqlstrGBarCodeID + sqlstr;
    sqlstrBarCode := sqlstrBarCode + sqlstr;
    //Parameters.Items[0].Value := strtodate(datetostr(DateTimePickerPostDateSart.Date)); //如果不转换oracle将提示数据类型不一致
    //Parameters.Items[1].Value := strtodate(datetostr(DateTimePickerPostDateEnd.Date));
    //sqlstr:=SQL.Text;
    //EdtSum.Text := inttostr(RecordCount);
    //EdtSum.Text :=sqlstr;
  end;
  ordersToTreeView;
end;

procedure TFrmBarCodeQuery.ordersToTreeView;
var QOrders, QGBarcode: TADOQuery;
  nodeOrderID, nodeGBarCode: TTreeNode;
begin
  fcTreeView1.Items.Clear;

  QOrders := TADOQuery.Create(self);
  QGBarcode := TADOQuery.Create(self);
  try
    with QOrders do
    begin
      Connection := StockDM.ADOConn;
      close;
      sql.Clear;
      sql.Add(format('select * from  Orders where OrderID in (%s)', [sqlstrOrderID]));
      open;
      QGBarcode.Connection := StockDM.ADOConn;
      QGBarcode.close;
      QGBarcode.sql.Clear;
      QGBarcode.sql.Add(format('select a.*,b.devname from GBarCode a,DeviceType b  where a.devnum=b.devnum and a.GBarCodeID in (%s)', [sqlstrGBarCodeID]));
      QGBarcode.open;
      first;
      while not eof do
      begin
        nodeOrderID := fcTreeView1.items.AddObject(nil, FieldByName('OrderID').AsString + ' ' + FieldByName('CustomerName').AsString + ' ' + FieldByName('postDate').AsString, pointer(FieldByName('OrderID').Asinteger));
        QGBarcode.Close;
        QGBarcode.Filter := 'OrderID=''' + Fieldbyname('OrderID').asstring + '''';
        QGBarcode.Filtered := true;
        QGBarcode.Active := true;
        QGBarcode.First;
        while not QGBarcode.Eof do
        begin
          nodeGBarCode := fcTreeView1.items.AddChildObject(nodeOrderID, QGBarcode.FieldByName('devName').AsString + ' 数量:' + QGBarcode.FieldByName('num').AsString, pointer(QGBarcode.FieldByName('GBarCodeID').Asinteger));
          QGBarcode.next;
        end;
        next;
      end;
    end;

  finally
    FreeAndNil(QOrders);
    FreeAndNil(QGBarcode);
  end;
  fcTreeView1.Repaint;

end;
//procedure TFrmBarCodeQuery.ordersToTreeView;

procedure TFrmBarCodeQuery.fcTreeView1Click(Sender: TObject);
//Node,
begin
  inherited;
 // fcTreeView1.Selected
 // if (Node.Level = 0)
end;

procedure TFrmBarCodeQuery.loadOrderS(nodedataInt: integer);
begin
  with StockDM.QBarCodefind do
  begin
    Locate('OrderID', nodedataInt, []);
    EdtOrderID.Text := FieldValues['OrderID'];
    EdtPostDate.Text := FieldValues['POSTDATE'];
    EdtCustomerName.Text := FieldValues['CustomerName'];
    MemoOrderDetail.Text := FieldValues['OrderDetail'];
    MemoOrderMemo.Text := FieldValues['OrderMemo'];
  end;
end;

procedure TFrmBarCodeQuery.loadBarCodeS(nodedataInt: integer);
begin
  with StockDM.QBarCodefind do
  begin
    Locate('GBarCodeID', nodedataInt, []);
    EdtDevName.Text := FieldValues['DevName'];
    EdtNum.Text := FieldValues['num'];
    MemoBarcode.Text := FieldValues['Memo'];
   //加载条码
    StockDM.QBarCodeQuery.Close;
    StockDM.QBarCodeQuery.SQL.Clear;
    StockDM.QBarCodeQuery.SQL.Add(Format('select a.* from barcode a where a.GBarCodeID=%d and a.barcode in (%s)', [nodedataInt, sqlstrBarCode]));
    StockDM.QBarCodeQuery.open;
  end;
end;

procedure TFrmBarCodeQuery.PageControl1Change(Sender: TObject);
var nodedataInt: integer;
begin
  inherited;
  if fcTreeView1.Selected=nil then fcTreeView1.Items[0].Selected:=true;
  if PageControl1.ActivePage = TabSheetOrderID then
  begin
    if fcTreeView1.Selected.Level = 0 then
      nodedataInt := integer(fcTreeView1.Selected.data)
    else nodedataInt := integer(fcTreeView1.Selected.Parent.Data);
    loadOrderS(nodedataInt);
  end;
  if PageControl1.ActivePage = TabSheetBarcode then
  begin
    if fcTreeView1.Selected.Level = 1 then
      nodedataInt := integer(fcTreeView1.Selected.data)
    else nodedataInt := integer(fcTreeView1.Selected.GetFirstChild.Data);
    loadBarCodeS(nodedataInt);
  end;
end;

procedure TFrmBarCodeQuery.FormShow(Sender: TObject);
begin
  inherited;
  DateTimePickerPostDateSart.Date:=date;
  DateTimePickerPostDateend.Date:=date;

  EdtOrderIDSart.Items.AddStrings(GetValueToCMB('Orders', 'OrderID', 'All'));
  EdtOrderIDend.Items.AddStrings(GetValueToCMB('Orders', 'OrderID', 'All'));

  EdtDevtype.Items.AddStrings(GetValueToCMB('DeviceType', 'DevName', 'All'));
end;

procedure TFrmBarCodeQuery.EdtOrderIDSartChange(Sender: TObject);
begin
  inherited;
  EdtOrderIDEnd.Text:=EdtOrderIDSart.Text;
end;

procedure TFrmBarCodeQuery.fcTreeView1Change(Sender: TObject;
  Node: TTreeNode);
var nodedataInt: integer;
begin
  inherited;
  nodedataInt := integer(node.Data);
  if node.Level = 0 then
  begin
    PageControl1.ActivePage := TabSheetOrderID;
    loadOrderS(nodedataInt);
  end;
  if node.Level = 1 then
  begin
    PageControl1.ActivePage := TabSheetBarcode;
    loadBarCodeS(nodedataInt);
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -