home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic 4 Unleashed / Visual_Basic_4_Unleashed_SAMS_Publishing_1995.iso / source / chap35 / frmorder.frm (.txt) < prev    next >
Visual Basic Form  |  1995-09-10  |  19KB  |  496 lines

  1. VERSION 4.00
  2. Begin VB.Form frmOrder 
  3.    Appearance      =   0  'Flat
  4.    BackColor       =   &H00C0C0C0&
  5.    Caption         =   "Place Order"
  6.    ClientHeight    =   4920
  7.    ClientLeft      =   1440
  8.    ClientTop       =   1455
  9.    ClientWidth     =   8325
  10.    BeginProperty Font 
  11.       name            =   "MS Sans Serif"
  12.       charset         =   1
  13.       weight          =   700
  14.       size            =   8.25
  15.       underline       =   0   'False
  16.       italic          =   0   'False
  17.       strikethrough   =   0   'False
  18.    EndProperty
  19.    ForeColor       =   &H80000008&
  20.    Height          =   5325
  21.    Left            =   1380
  22.    LinkTopic       =   "Form1"
  23.    MaxButton       =   0   'False
  24.    ScaleHeight     =   4920
  25.    ScaleWidth      =   8325
  26.    Top             =   1110
  27.    Width           =   8445
  28.    Begin VB.Data CustProdHist 
  29.       Appearance      =   0  'Flat
  30.       Caption         =   "CustProdHist"
  31.       Connect         =   ""
  32.       DatabaseName    =   "C:\VBPROJ\SAMS\VB4DB.MDB"
  33.       Exclusive       =   0   'False
  34.       Height          =   270
  35.       Left            =   120
  36.       Options         =   0
  37.       ReadOnly        =   0   'False
  38.       RecordsetType   =   1  'Dynaset
  39.       RecordSource    =   "CustProdHist"
  40.       Top             =   4560
  41.       Visible         =   0   'False
  42.       Width           =   2535
  43.    End
  44.    Begin VB.CommandButton btnDelTickets 
  45.       Caption         =   "&Close"
  46.       Height          =   615
  47.       Left            =   6120
  48.       TabIndex        =   7
  49.       Top             =   3840
  50.       Width           =   1815
  51.    End
  52.    Begin VB.TextBox txtDelDate 
  53.       Height          =   375
  54.       Left            =   5640
  55.       TabIndex        =   6
  56.       Top             =   3240
  57.       Width           =   1335
  58.    End
  59.    Begin VB.Data CustThisOrder 
  60.       Appearance      =   0  'Flat
  61.       Caption         =   "CustThisOrder"
  62.       Connect         =   ""
  63.       DatabaseName    =   "C:\VBPROJ\SAMS\VB4DB.MDB"
  64.       Exclusive       =   0   'False
  65.       Height          =   270
  66.       Left            =   2760
  67.       Options         =   0
  68.       ReadOnly        =   0   'False
  69.       RecordsetType   =   1  'Dynaset
  70.       RecordSource    =   "CustThisOrder"
  71.       Top             =   4560
  72.       Visible         =   0   'False
  73.       Width           =   2775
  74.    End
  75.    Begin VB.CommandButton btnPrintOrder 
  76.       Appearance      =   0  'Flat
  77.       BackColor       =   &H80000005&
  78.       Caption         =   "&Print This Order"
  79.       Height          =   615
  80.       Left            =   4080
  81.       TabIndex        =   1
  82.       Top             =   3840
  83.       Width           =   1815
  84.    End
  85.    Begin VB.Data CustProd 
  86.       Appearance      =   0  'Flat
  87.       Caption         =   "CUSTPROD"
  88.       Connect         =   ""
  89.       DatabaseName    =   "C:\VBPROJ\SAMS\VB4DB.MDB"
  90.       Exclusive       =   0   'False
  91.       Height          =   270
  92.       Left            =   5640
  93.       Options         =   0
  94.       ReadOnly        =   0   'False
  95.       RecordsetType   =   1  'Dynaset
  96.       RecordSource    =   "CustProd"
  97.       Top             =   4560
  98.       Visible         =   0   'False
  99.       Width           =   2655
  100.    End
  101.    Begin Threed.SSPanel pnlDelivMsg 
  102.       Height          =   975
  103.       Left            =   120
  104.       TabIndex        =   5
  105.       Top             =   3240
  106.       Width           =   3855
  107.       _version        =   65536
  108.       _extentx        =   6800
  109.       _extenty        =   1720
  110.       _stockprops     =   15
  111.       caption         =   "Gathering Order Information"
  112.       BeginProperty font {FB8F0823-0164-101B-84ED-08002B2EC713} 
  113.          name            =   "MS Sans Serif"
  114.          charset         =   1
  115.          weight          =   700
  116.          size            =   18
  117.          underline       =   0   'False
  118.          italic          =   0   'False
  119.          strikethrough   =   0   'False
  120.       EndProperty
  121.    End
  122.    Begin VB.Label Label3 
  123.       Caption         =   $"FRMORDER.frx":0000
  124.       Height          =   975
  125.       Left            =   120
  126.       TabIndex        =   10
  127.       Top             =   3240
  128.       Width           =   3855
  129.    End
  130.    Begin Crystal.CrystalReport rptOrderTicket 
  131.       Left            =   3600
  132.       Top             =   4080
  133.       _extentx        =   741
  134.       _extenty        =   741
  135.       _stockprops     =   0
  136.       reportfilename  =   ""
  137.       destination     =   0
  138.       windowleft      =   100
  139.       windowtop       =   100
  140.       windowwidth     =   490
  141.       windowheight    =   300
  142.       windowtitle     =   ""
  143.       windowborderstyle=   2
  144.       windowcontrolbox=   -1  'True
  145.       windowmaxbutton =   -1  'True
  146.       windowminbutton =   -1  'True
  147.       copiestoprinter =   1
  148.       printfilename   =   ""
  149.       printfiletype   =   0
  150.       selectionformula=   ""
  151.       groupselectionformula=   ""
  152.       connect         =   ""
  153.       username        =   ""
  154.       reportsource    =   0
  155.       boundreportheading=   ""
  156.       boundreportfooter=   0   'False
  157.    End
  158.    Begin MSDBGrid.DBGrid OrderHistoryGrid 
  159.       Bindings        =   "FRMORDER.frx":00C9
  160.       Height          =   1455
  161.       Left            =   360
  162.       OleObjectBlob   =   "FRMORDER.frx":00DE
  163.       TabIndex        =   9
  164.       Top             =   360
  165.       Width           =   7575
  166.    End
  167.    Begin MSDBGrid.DBGrid ThisOrder 
  168.       Bindings        =   "FRMORDER.frx":0E7F
  169.       Height          =   975
  170.       Left            =   360
  171.       OleObjectBlob   =   "FRMORDER.frx":0E95
  172.       TabIndex        =   8
  173.       Top             =   2160
  174.       Width           =   7575
  175.    End
  176.    Begin VB.Label Label2 
  177.       Alignment       =   2  'Center
  178.       Appearance      =   0  'Flat
  179.       BackColor       =   &H00808000&
  180.       BorderStyle     =   1  'Fixed Single
  181.       Caption         =   "Current Order"
  182.       ForeColor       =   &H00FFFFFF&
  183.       Height          =   255
  184.       Left            =   360
  185.       TabIndex        =   4
  186.       Top             =   1920
  187.       Width           =   7575
  188.    End
  189.    Begin VB.Label Label13 
  190.       Alignment       =   1  'Right Justify
  191.       Appearance      =   0  'Flat
  192.       BackColor       =   &H00C0C0C0&
  193.       Caption         =   "Ship date"
  194.       ForeColor       =   &H80000008&
  195.       Height          =   255
  196.       Left            =   4560
  197.       TabIndex        =   3
  198.       Top             =   3360
  199.       Width           =   975
  200.    End
  201.    Begin VB.Label lblPrntMsg 
  202.       Alignment       =   2  'Center
  203.       Appearance      =   0  'Flat
  204.       BackColor       =   &H00FF0000&
  205.       BorderStyle     =   1  'Fixed Single
  206.       Caption         =   "Loading Print Engine"
  207.       BeginProperty Font 
  208.          name            =   "MS Sans Serif"
  209.          charset         =   1
  210.          weight          =   700
  211.          size            =   12
  212.          underline       =   0   'False
  213.          italic          =   0   'False
  214.          strikethrough   =   0   'False
  215.       EndProperty
  216.       ForeColor       =   &H00FFFFFF&
  217.       Height          =   495
  218.       Left            =   120
  219.       TabIndex        =   2
  220.       Top             =   4080
  221.       Visible         =   0   'False
  222.       Width           =   3375
  223.    End
  224.    Begin VB.Label Label1 
  225.       Alignment       =   2  'Center
  226.       Appearance      =   0  'Flat
  227.       BackColor       =   &H00808000&
  228.       BorderStyle     =   1  'Fixed Single
  229.       Caption         =   "Past Orders"
  230.       ForeColor       =   &H00FFFFFF&
  231.       Height          =   255
  232.       Left            =   360
  233.       TabIndex        =   0
  234.       Top             =   120
  235.       Width           =   7575
  236.    End
  237. Attribute VB_Name = "frmOrder"
  238. Attribute VB_Creatable = False
  239. Attribute VB_Exposed = False
  240. Private Sub btnDelTickets_Click()
  241.     Dim buffer As String
  242.         
  243.     MousePointer = 11 ' hourglass
  244.     ' Delete any blank records which might exist for this customer in
  245.     ' CustProd
  246.     buffer = "Delete * From CustProd Where CustomerNum = " & Str(Customer_number)
  247.     buffer = buffer & " AND IsNull(product);"
  248.     CustDB.Execute (buffer)
  249.     Me.Hide
  250. End Sub
  251. Private Sub btnPrintOrder_Click()
  252.     Dim Tbl As Table              ' general purpose table pointer
  253.     Dim CustProdHistTbl As Table  ' table pointer for the general order history
  254.     Dim CustOrdMstTbl As Table    ' table pointer for the master list of orders
  255.     Dim CustOrdDtlTbl As Table    ' table pointer for the order detail
  256.     Dim CustThisOrderTbl As Table ' table pointer for the current order table
  257.     Dim OrdersTbl As Table   ' Table pointer for the ORDERS table
  258.     Dim dynset As Dynaset    ' dynaset for customer order history
  259.     Dim Flag As Integer      ' Indicator for whether we have checked the history or not
  260.     Dim buffer As String     ' Query string to pass execute statements
  261.     Dim OrderNumber As Long  ' the invoice/order number
  262.     Dim mboxresp             ' result from message box responses
  263.     Dim CustOrdStr           ' string for the customer order
  264.     Dim histrecnum           ' Counter for the history record we are on
  265.     Dim deldate              ' date to check for deleting old history records
  266.     On Error GoTo deliverr
  267.     mboxresp = MsgBox("Confirmed Order on " & txtDelDate.Text & "?", vbYesNo, "Confirm Order Date")
  268.     If mboxresp <> vbYes Then
  269.         Exit Sub
  270.     End If
  271.     MousePointer = 11 ' hourglass
  272.     ' Display a message explaining something
  273.     ' is happening.  This routine can take a
  274.     ' few seconds.  To keep the user from pressing
  275.     ' the buttons on the screen, make them invisible
  276.     ' and put the "loading Print Engine" label over
  277.     ' them.
  278.     ' NOTE: Under Windows 3.1 with VB3 and CR3,
  279.     ' a GPF may occur if another click event is invoked
  280.     ' between the time that this click event starts and
  281.     ' Crystal Reports is loaded.  The buttons are disabled
  282.     ' to minimize the chance of this happening.
  283.     lblPrntMsg.Left = 4200
  284.     lblPrntMsg.Top = 3620
  285.     lblPrntMsg.Visible = True
  286.     btnPrintOrder.Visible = False
  287.     btnDelTickets.Visible = False
  288.     DoEvents
  289.     ' Clear out any records contained in CUSTORDMST and CUSTORDDTL
  290.     CustDB.Execute ("Delete * From CustOrdMst;")
  291.     CustDB.Execute ("Delete * From CustOrdDtl;")
  292.     Set CustOrdMstTbl = CustDB.OpenTable("CustOrdMst")
  293.     Set CustOrdDtlTbl = CustDB.OpenTable("CustOrdDtl")
  294.     Set CustThisOrderTbl = CustDB.OpenTable("CustThisOrder")
  295.     Set CustProdHistTbl = CustDB.OpenTable("CustProdHist")
  296.     Set OrdersTbl = CustDB.OpenTable("Orders")
  297.     ' Add a record to ORDERS.  This must be done before the CUSTORDMST
  298.     ' record is added because an order number is needed.
  299.     OrdersTbl.AddNew
  300.     OrdersTbl.Fields("CustomerNum") = Customer_number
  301.     OrdersTbl.Fields("Date") = txtDelDate.Text
  302.     OrdersTbl.Fields("Description") = CustThisOrder.Recordset.Fields("Product")
  303.     OrdersTbl.Fields("Charge") = CustThisOrder.Recordset.Fields("Total")
  304.     OrdersTbl.Update
  305.     ' Update the current balance
  306.     Call CalculateCurrentBalance
  307.     ' Now retrieve the order number of the order just placed in ORDERS
  308.     OrdersTbl.Index = "PrimaryKey"
  309.     OrdersTbl.Seek "<=", 9999999
  310.     ' Populate the CUSTORDMST table
  311.     CustOrdMstTbl.AddNew
  312.     CustOrdMstTbl.Fields("CustomerNum") = Customer_number
  313.     CustOrdMstTbl.Fields("InvoiceDate") = txtDelDate.Text
  314.     CustOrdMstTbl.Fields("OrderNum") = OrdersTbl.Fields("OrderNum")
  315.     CustOrdMstTbl.Update
  316.     ' Populate the CUSTORDDTL table.  One record for each record contained
  317.     ' in CUSTTHISORDER
  318.     CustThisOrderTbl.MoveFirst
  319.     While (CustThisOrderTbl.EOF = False)
  320.         CustOrdDtlTbl.AddNew
  321.         CustOrdDtlTbl.Fields("OrderNum") = OrdersTbl.Fields("OrderNum")
  322.         CustOrdDtlTbl.Fields("product") = CustThisOrderTbl.Fields("product")
  323.         CustOrdDtlTbl.Fields("Qty") = CustThisOrderTbl.Fields("Qty")
  324.         CustOrdDtlTbl.Fields("Price") = CustThisOrderTbl.Fields("Price")
  325.         CustOrdDtlTbl.Fields("Subtotal") = CustThisOrderTbl.Fields("Subtotal")
  326.         CustOrdDtlTbl.Fields("Tax") = CustThisOrderTbl.Fields("Tax")
  327.         CustOrdDtlTbl.Fields("Deposit") = CustThisOrderTbl.Fields("Deposit")
  328.         CustOrdDtlTbl.Fields("Total") = CustThisOrderTbl.Fields("Total")
  329.         CustOrdDtlTbl.Update
  330.         ' Now add a record to CustProdHist.  To keep the the filesize
  331.         ' down, limit the history to the last 10 records.
  332.         ' If more than 10 unique orders exist
  333.         ' for the current customer, remove the earliest orders
  334.         ' until there are only 10.
  335.         If (Flag = False) Then
  336.             ' "Flag" is False which means I have not yet checked to see if
  337.             ' there are 10 unique orders for the current customer.
  338.             buffer = "SELECT DISTINCT OrderNum, CustomerNum, Date_Delivered FROM CustProdHist WHERE "
  339.             buffer = buffer & "((CustProdHist.CustomerNum = " & Str(Customer_number) & ")) "
  340.             buffer = buffer & " Order By Date_Delivered"
  341.             Set dynset = CustDB.CreateDynaset(buffer)
  342.             If (dynset.RecordCount > 0) Then
  343.                 dynset.MoveLast
  344.             End If
  345.             If (dynset.RecordCount >= 10) Then
  346.                 dynset.MoveFirst
  347.                 deldate = dynset.Fields("Date_Delivered")
  348.                 If deldate Then
  349.                     buffer = "Delete * From CustProdHist Where CustomerNum = " & Str(CustProdHistTbl.Fields("CustomerNum")) & " AND "
  350.                     buffer = buffer & "Date_Delivered = " & dynset.Fields("Date_Delivered")
  351.                     CustDB.Execute (buffer)
  352.                 Else
  353.                     buffer = "Delete * from CustProdHist where CustomerNum = " & Str(CustProdHistTbl.Fields("CustomerNum")) & " AND "
  354.                     buffer = buffer & "product = NULL"
  355.                     CustDB.Execute (buffer)
  356.                 End If
  357.             End If
  358.             Flag = True
  359.         End If
  360.         
  361.         CustProdHistTbl.AddNew
  362.         CustProdHistTbl.Fields("CustomerNum") = Customer_number
  363.         CustProdHistTbl.Fields("Date_Delivered") = txtDelDate.Text
  364.         CustProdHistTbl.Fields("product") = CustThisOrderTbl.Fields("Product")
  365.         CustProdHistTbl.Fields("Qty") = CustThisOrderTbl.Fields("Qty")
  366.         CustProdHistTbl.Fields("OrderNum") = OrdersTbl.Fields("OrderNum")
  367.         CustProdHistTbl.Update
  368.         CustThisOrderTbl.MoveNext
  369.     Wend
  370.     ' Kick off the report.
  371.     rptOrderTicket.ReportFileName = App_location + "ordtick.rpt"
  372.     rptOrderTicket.WindowTitle = "Printing Order Ticket"
  373.     rptOrderTicket.Destination = 0 '1=printer, 0=screen
  374.     rptOrderTicket.Action = 1
  375.     lblPrntMsg.Visible = False
  376.     btnPrintOrder.Visible = True
  377.     btnDelTickets.Visible = True
  378.     CustProdHist.Refresh
  379.     MousePointer = 0 ' default
  380.     Exit Sub
  381. deliverr:
  382.     MsgBox ("Error printing this Order ticket: " & Err.Description)
  383.     lblPrntMsg.Visible = False
  384.     btnPrintOrder.Visible = True
  385.     btnDelTickets.Visible = True
  386.     CustProdHist.Refresh
  387.     MousePointer = 0 ' default
  388. End Sub
  389. Private Sub Form_Activate()
  390.     Dim SQLCustProdHistInq
  391.     Dim CustProdRTEDynaset As Dynaset
  392.     Dim CustProdTbl As Table
  393.     Dim CustThisOrdTbl As Table
  394.     Dim buffer As String
  395.     On Error GoTo frmOrderActError
  396.     ' Make the pointer an hourglass.
  397.     MousePointer = 11
  398.     If IsNull(CustmainDynaset.Fields("Last_Name")) <> True Then
  399.         frmOrder.Caption = "Order information for " & CustmainDynaset.Fields("Last_Name")
  400.     Else
  401.         If IsNull(CustmainDynaset.Fields("Company")) <> True Then
  402.             frmOrder.Caption = "Order information for " & CustmainDynaset.Fields("Company")
  403.         Else
  404.             frmOrder.Caption = "Order Information"
  405.         End If
  406.     End If
  407.     ' The process of looking up stuff could take a few
  408.     ' seconds (especially if there are a lot of orders),
  409.     ' so put up a message telling the user what is going on.
  410.     pnlDelivMsg.Visible = True
  411.     ' Set up the Product history data control
  412.     SQLCustProdHistInq = "Select * from CustProdHist where CustomerNum = " & Customer_number & ";"
  413.     CustProdHist.RecordSource = SQLCustProdHistInq
  414.     CustProdHist.Refresh
  415.     ' Clear out any old orders
  416.     CustDB.Execute ("Delete * from CustThisOrder")
  417.     ' Insert a record in the CustThisOrder.
  418.     Set CustThisOrderTbl = CustDB.OpenTable("CustThisOrder")
  419.     CustThisOrderTbl.AddNew
  420.     CustThisOrderTbl.Fields("CustomerNum") = Customer_number
  421.     CustThisOrderTbl.Update
  422.     CustThisOrder.Refresh
  423.     ' Set the delivery date to be tomorrow
  424.     txtDelDate.Text = Format$(Now + 1, "dd-mmm-yy")
  425.     ' Turn off the message saying we are looking
  426.     ' up stuff.
  427.     pnlDelivMsg.Visible = False
  428.     ' Reset to the default pointer.
  429.     MousePointer = 0
  430.     Exit Sub
  431. frmOrderActError:
  432.    ' Reset to the default  pointer.
  433.     MousePointer = 0
  434.     response = MsgBox(Err.Description, vbExclamation, "Activation error")
  435. End Sub
  436. Private Sub Form_Load()
  437.     'Center the form
  438.     Left = (Screen.Width - Width) / 2
  439.     Top = (Screen.Height - Height) / 2
  440.     CustProdHist.DatabaseName = Database_name
  441.     CustThisOrder.DatabaseName = Database_name
  442.     CustProd.DatabaseName = Database_name
  443. End Sub
  444. Private Sub OrderHistoryGrid_AfterDelete()
  445.     If (CustProdHist.Recordset.RecordCount = 0) Then
  446.         CustProdHist.Recordset.AddNew
  447.         CustProdHist.Recordset.Fields("CustomerNum") = Customer_number
  448.         Exit Sub
  449.     End If
  450.     CustProdHist.Recordset.MoveFirst
  451.     CustProdHist.Refresh
  452. End Sub
  453. Private Sub OrderHistoryGrid_BeforeDelete(Cancel As Integer)
  454. Dim response As Integer
  455. Dim buffer As String
  456.     On Error GoTo HistDelError
  457.     response = MsgBox("Are you sure you want to delete this record?", vbYesNo + vbQuestion, "Delete")
  458.     If response = vbYes Then
  459.         If IsNull(CustProdHist.Recordset.Fields("OrderNum")) = False Then
  460.             buffer = "Delete * from Orders where OrderNum = " & CustProdHist.Recordset.Fields("OrderNum") & ";"
  461.             CustDB.Execute (buffer)
  462.             Exit Sub
  463.         End If
  464.     Else
  465.         Cancel = True
  466.     End If
  467.     Exit Sub
  468. HistDelError:
  469.     If Err.Number = 3021 Then 'no current record, nothing to delete
  470.         Resume
  471.     Else
  472.         MsgBox Err.Description
  473.     End If
  474. End Sub
  475. Private Sub OrderHistoryGrid_BeforeUpdate(Cancel As Integer)
  476.      CustProdHist.Recordset.Fields("CustomerNum") = Customer_number
  477. End Sub
  478. Private Sub OrderHistoryGrid_GotFocus()
  479.     Dim Tbl As Table
  480.     DoEvents
  481.     If (CustProdHist.Recordset.RecordCount = 0) Then
  482.         DoEvents
  483.         CustProdHist.Recordset.AddNew
  484.         CustProdHist.Recordset.Fields("CustomerNum") = Customer_number
  485.     End If
  486. End Sub
  487. Private Sub ThisOrder_AfterDelete()
  488.     If (CustThisOrder.Recordset.RecordCount = 0) Then
  489.         CustThisOrder.Recordset.AddNew
  490.         CustThisOrder.Recordset.Fields("CustomerNum") = Customer_number
  491.     End If
  492. End Sub
  493. Private Sub ThisOrder_BeforeUpdate(Cancel As Integer)
  494.      CustThisOrder.Recordset.Fields("CustomerNum") = Customer_number
  495. End Sub
  496.