/****************************************************
作用:通过向辅数据窗口dw_y的字段colunameout2取值,并赋值给主数据窗口dw_x的字段colunamein1。 其赋值条件是数据表table_name中检索不出该字段colu_name的值。
备注:此参数colunamein1与colunameout2相对应,如果不对应,则检索和提取以及赋值的字段不一致,还需另外加字段。
参数: dw_x:主数据窗口,需赋值的数据窗
dw_y:辅数据窗口,需提取值的数据窗
table_name:数据表,检索录入字段值是否正确所对应的表,以确定是否要向辅助窗口dw_y中取值和跳转字段
colu_name:数据表中对应要赋值的字段,是判断的条件字段
colunamein1:主数据窗口中要赋值的字段
colunameout2:辅数据窗口中要取值的字段返回值:目的是对应key值,使跳转中断一次。
****************************************************/
string colunameout int countx
colunameout=trim(dw_x.getitemstring(dw_x.getrow(),colunamein1)) //检索输入的数据值是否存在于数据表中(判断录入值是否正确)
String sqlstatament
sqlstatament ="select " + "count(*)" +" from " + table_name + " where " + colu_name + "='" + colunameout + "'"
DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :sqlstatament;
OPEN DYNAMIC my_cursor;
FETCH my_cursor INTO :countx;
CLOSE my_cursor;
if countx <1 then //如果没有从数据库检索出数据
if dw_y.rowcount()>=1 then //如果DW_y有数据检索出,则赋值
dw_x.setitem(dw_x.getrow(),colunamein1,dw_y.getitemstring(1,colunameout2))
dw_x.setcolumn(colunamein1)
return 1
else //如果无数据值,则返回空值
dw_x.setitem(dw_x.getrow(),colunamein1,'')
return 1
end if
end if
在自定义事件uo_keyselect 中
其Event ID为pbm_dwnkey()
if dw_2.getcolumnname()='item_id' then
if key=keyenter! then return(uf_dwx_keyenter(dw_2,dw_3,'item','item_id','item_id','item_item_id')) //回车键后调用函数uf_dwx_keyenter()赋值
if key=keydownarrow! or key=keyuparrow! then
dw_3.setfocus()
dw_3.setrow(1)
uf_dwx_keyupdownarrow(dw_2,dw_3,'item_id','item_item_id') //按上下箭头调函数uf_dwx_keyupdownarrow()赋值
end if
end if