I'm just trying to build a very simple transaction enty module (add / modify / delete ) with the help of command EDIT. This command helps to build a working entry module in automated manner
I want to fill a few fields with pre-defined values during each entry/new mode. Like
Licno="XYZ 123456M"
prodcode="T01"
prodname="Txx Tab"
A portion of the source provided below for reference:
Code: Select all
#include "hmg.ch"
function Main()
// Database driver.
REQUEST DBFCDX , DBFFPT
// [x]Harbour modifiers.
SET CENTURY ON
SET DELETED ON
SET DATE ITAL
// Set default language to English.
HB_LANGSELECT( "EN" )
// Define window.
DEFINE WINDOW Win_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE "DEMO " ;
MAIN ;
ON INIT OpenTable() ;
ON RELEASE CloseTable() ;
BACKCOLOR GRAY
DEFINE MAIN MENU OF Win_1
POPUP "&File"
ITEM "&Batch Entry " ACTION BatchEntry()
//ITEM "&Batch Label Print" ACTION ExecuteReport('Report1',.t.,.t. )
SEPARATOR
ITEM "About" ACTION About()
SEPARATOR
ITEM "E&xit" ACTION Win_1.Release
END POPUP
END MENU
END WINDOW
// Open window.
MAXIMIZE WINDOW Win_1
ACTIVATE WINDOW Win_1
Return Nil
/*-----------------------------------------------------------------------------*/
Procedure OpenTable()
CLOSE DATABASES
//USE TRANS VIA "DBFCDX" INDEX TRANS NEW
USE TRANS VIA "DBFCDX" NEW
Return Nil
/*-----------------------------------------------------------------------------*/
Procedure CloseTable()
CLOSE TRANS
Return Nil
/*-----------------------------------------------------------------------------*/
Procedure BatchEntry()
LOCAL aFields := { "Product Code","Product Name","Batch No","Mfg. Date","Exp. Date",;
"Mfg. Lic.No.","Gross Wt.","Tare Wt.","Net Wt" }
LOCAL aReadOnly := { .f., .f., .f., .f., .f., .f., .f., .f., .f. }
LOCAL bSave := {|aContent, lEdit| BatchSave( aContent, lEdit ) }
EDIT WORKAREA TRANS ;
TITLE "Label - Batch Entry" ;
FIELDS aFields ;
READONLY aReadOnly ;
SAVE bSave
Return Nil
/*-----------------------------------------------------------------------------*/
Procedure BatchSave( aContent, lEdit )
LOCAL i
LOCAL aFields := { "Prodcode","Prname","Batchno","Mfgdate","Expdate",;
"Mfglicno","Grosswt","Tarewt","Netwt" }
// Chek content.
FOR i := 1 TO Len( aContent )
IF Empty( aContent[i] )
MsgInfo( aFields[i] + " - please supply data" )
Return .f.
ENDIF
NEXT
// Save record.
IF .NOT. lEdit
TRANS->( dbAppend() )
ENDIF
FOR i := 1 TO Len( aContent )
TRANS->( FieldPut( i, aContent[i] ) )
NEXT
Return .t.
/*-----------------------------------------------------------------------------*/
Procedure SelItem( aItems )
LOCAL nItem := 0
DEFINE WINDOW wndSelItem ;
AT 0, 0 ;
WIDTH 265 ;
HEIGHT 160 ;
TITLE "" ;
MODAL ;
NOSIZE ;
NOSYSMENU
@ 20, 20 LISTBOX lbxItems ;
WIDTH 140 ;
HEIGHT 100 ;
ITEMS aItems ;
VALUE 1 ;
FONT "Arial" ;
SIZE 9
@ 20, 170 BUTTON btnSel ;
CAPTION "&Select" ;
ACTION {|| nItem := wndSelItem.lbxItems.Value, wndSelItem.Release } ;
WIDTH 70 ;
HEIGHT 30 ;
FONT "ms sans serif" ;
SIZE 8
END WINDOW
wndSelItem.lbxItems.SetFocus
CENTER WINDOW wndSelItem
ACTIVATE WINDOW wndSelItem
return ( nItem )