dw_device.SetColumn(3)
设备出库窗口的closequery事件中输入如下的程序代码: integer li_rc
//// Accept the last data entered into the datawindow dw_device_out.AcceptText()
//Check to see if any data has changed IF dw_device_out.ModifiedCount() > 0 THEN li_rc = MessageBox(\提示\
//User chose to up data and close window IF li_rc = 1 THEN
cb_update.triggerevent( Clicked!) RETURN 0
\是否保存所做的修改?\YesNoCancel!, 3)
//User chose to close window without updating ELSEIF li_rc = 2 THEN RETURN 0 //User canceled
ELSE RETURN 1 END IF ELSE
// No changes to the data, window will just close RETURN 0
END IF
在窗口关闭以前将检查数据窗口控件是否被修改,如果是,则程序会询问用户是否保存所做的修改。用户如果选择要保存数据,则窗口关闭之间会触发“保存”按钮的click事件,用于保存数据。
“增加”按钮控件的 click事件用于输入新的设备出库信息,其程序代码如下: int g_rownumber
//插入一行
G_RowNumber=dw_device.InsertRow(0) dw_device.SetFocus()
//到当前行
dw_device.ScrollToRow(G_RowNumber) // 自动设置入库时间为当前系统时间 date t_d time t_t
t_d = today() t_t = now()
dw_device.SetItem(G_RowNumber,\
//设置焦点到第3列
dw_device.SetColumn(3)
“保存”按钮控件的click事件用于保存用户所输入的出库设备信息,并且修改仓库中该设备现有数目,填写操作日志,程序代码如下:
int number,g_rownumber
int Getout_number string save_code datetime do_datetime string do_what,do_user
G_RowNumber = dw_Device_out.GetRow() dw_Device_out.AcceptText()
if dw_device_out.Update() = 1 then commit;
save_code=dw_device_out.GetItemString(G_RowNumber,1) SELECT now_number INTO :number FROM device WHERE device.code=:save_code;
getout_number=dw_device_out.GetItemNumber(G_RowNumber,\number = number - getout_number
UPDATE device SET now_number =:number WHERE device.code=:save_code;
do_datetime=dw_device_out.GetItemdatetime(G_RowNumber,\ do_what='设备' + save_code + '出库' + string(getout_number) +'个'
insert into howdo values(:do_user,:do_what,:do_datetime); messagebox(\提示\保存成功!\
else
//不能修改,则取消 rollback;
messagebox(\提示\保存不成功!\end if
“关闭”按钮控件的click事件用于关闭设备出库库窗口,程序代码如下: //关闭窗口 close(parent)
在数据窗口控件的dberror 事件输入如下的程序代码: messagebox(“警告”,”无法存入数据库!”) //disable system error return 1
由于数据窗口的“最大数目”列是用户选择了要出库的设备后,根据该设备的库存信息,动态显示的。因此,在数据窗口控件的itemchange事件中输入如下的程序代码:
if dwo.name = \
int G_RowNumber //定义当前列号变量 int ColumnNumber
//定义某个设备可出库的最大数目 int MaxNumber
//定义当前的设备号 string save_code //得到单击的列号
ColumnNumber=dw_device_out.getclickedcolumn()
G_RowNumber = this.GetRow() //如果单击第一列
if ColumnNumber = 1 then
//取得当前的设备号
save_code=dw_device_out.GetItemString(G_RowNumber,1)
FROM
device
WHERE
//从数据库表格中得到当前设备最大可出库量 SELECT now_number INTO :MaxNumber device.code=:save_code;
//将该值赋给列device_now_number
dw_device_out.SetItem(G_RowNumber,\
end if end if
通过上面的程序代码,当用户单击数据窗口第一列,也就是设备号列,选择某个出库设备后,根据设备表格中现有该设备的数目来设置“最大数目”列。 4.4 设备采购窗口的创建
设备采购模块用于生成要采购设备的报表,由主程序窗口上“功能”菜单中的“设备采购”子菜单单击事件激发。该模块有2个窗口组成,第一个窗口用来供用户选择要采购的设备,选择完毕后进入第二个窗口,用于生成设备采购报表。
设备选择窗口界面如图所示。
该窗口最上方是一个静态文本框控件,显示窗口的用途。中间是一个下拉式列表框控件,在下拉式各项中列出了各种设备,提供给用户选择。该控件可以用下拉式子数据窗口来代替。该窗口的右下方放置了2个命令按钮,在其click事件中分别用来实现采购设备的确定和取消功能。
在下拉式列表框控件ddlb_1的items属性页中各项设置如下图所示:
在设备选择窗口的open事件中输入如下的程序代码: ddlb_.setfocus()
这样在程序运行中打开设备选择窗口时,焦点总是先在ddlb_1控件上。 确定按钮的click事件用于采购设备的确定,其程序代码如下 //根据用户选择的设备得到相应的设备号 if ddlb_1.text=\
messagebox(\警告\你必须选择某个设备\return
elseif ddlb_1.text=\电动机\ g_code = \
elseif ddlb_1.text=\发动机\ g_code = \
elseif ddlb_1.text=\计算机\ g_code = \
elseif ddlb_1.text=\打印机\ g_code = \
elseif ddlb_1.text=\扫描仪\ g_code = \end if
//打开采购报表打印窗口 open(w_device_inreport) //关闭本窗口 close(parent)
单击此按钮,将打开采购报表打印窗口,并关闭本窗口。 取消按钮的 click事件用于采购设备的取消,其代码如下: close(parent)
单击此按钮,将直接关闭本窗口。 4.5 设备采购报表窗口的创建
设备采购报表窗口如图所示:
该窗口最上方是一个静态文本框控件,显示窗口的用途。中间是一个数据窗口控件。根据前一个设备选择窗口中用户选择的设备,自动到数据库中获取该设备的现有库存、设备总数、最大库存,显示在数据窗口中的相应列上。自动获取系统时间,赋值给报表时间列。用户在这里需要填写购买设备的数量、供应商名称和价格。该窗口的下方放置了2个按钮控件,在其click事件中分别用来实现设备采购服表的打印(包括数据保存到设备采购表格中)和报表取消功能。
在设备采购报表窗口的open事件中输入如下的程序代码: int temp_number,G_RowNumber,g_code
//数据窗口
dw_device_inreport.settransobject(sqlca) dw_device_inreport.retrieve() //插入一行
G_RowNumber=dw_device_inreport.insertrow(0) //显示刚刚插入行
dw_device_inreport.ScrollToRow(G_RowNumber) //设置数据窗口的设备编号列
dw_device_inreport.SetItem(G_RowNumber,\//从设备现有表格中获取现有库存
SELECT now_number INTO :temp_number FROM device WHERE device.code=:g_code; //设置数据窗口的现有库存列
dw_device_inreport.SetItem(G_RowNumber,\//从设备现有表格中获取现有库存
SELECT total_number INTO :temp_number FROM device WHERE device.code=:g_code; //设置数据窗口的设备总数列
dw_device_inreport.SetItem(G_RowNumber,\//从设备现有表格中获取最大库存
SELECT high_number INTO :temp_number FROM device WHERE device.code=:g_code;
//设置数据窗口的最大库存列
dw_device_inreport.SetItem(G_RowNumber,\//取得系统当前时间