在Power Builder中检索数据

时间:2014-04-15 07:01:27

标签: powerbuilder

我正在使用PowerBuilder7.0版本。

我正在处理库存项目。 我坚持要检索价值问题。

在主窗口中设计了搜索按钮 - 代码为 -

//*********************************************************//
//Clicked Event of Search Button on a Window
//*********************************************************//


gs_srcharg.srchok = false

open(w_srchemp)
if gs_srcharg.srchok = false then  // User has pressed Cancel Button
    return  
end if

dw_1.settaborder("item_code", 0)
dw_1.settaborder("grp_cd",0)
dw_1.settaborder("cat_cd",0)
dw_1.settaborder("sgrp_cd",0)

i_newrec = false
cb_new.enabled=false
//messagebox("er",gs_srcharg.id)
dw_1.retrieve(gs_srcharg.id)
dw_1.SetItem(dw_1.getrow(),"item_code", gs_srcharg.id)
dw_1.enabled = true
set_winbutton(4)
cb_search.enabled=false

//dw_1.settaborder("bank_ac123",0) 
/***************************************************************************
end of script
***************************************************************************/

and w_srchemp's code  --
string t_sqlst  
string t_srchempcd

t_srchempcd = sle_empcd.text
t_sqlst = "select item_code from item_mast where item_code = '" + trim(t_srchempcd) + "'"

declare cur_srch dynamic cursor for SQLSA;
prepare SQLSA from :t_sqlst;
open dynamic cur_srch;

fetch cur_srch into :t_srchempcd;

// If document does not exists then
if sqlca.sqlcode <> 0 then
    messagebox("Search Error", "This Item code does not exist")
    close cur_srch;
    open(w_emphlp)
    sle_empcd.text = message.stringparm 
    return
end if

close cur_srch;
close(parent)  //Close seach window

return
/***************************************************************************
End of script
***************************************************************************/

在此之后,无论我们搜索代码,我们在主窗口中获取值,但值每次都是表的第一行。 当我们搜索时,我想要准确的价值。请帮忙..

2 个答案:

答案 0 :(得分:0)

为什么你在这里使用光标进行搜索。您可以直接调用sql查询。

Long ll_item_code

选择item_code INTO:ll_item_code     来自item_mast     其中item_code = long(trim(t_srchempcd))


您在此处匹配item_code,并且您正在从SQL Query中检索相同的项目代码。 检查SQL查询。 如果你的sql语句提供更多输出,那么你应该使用循环语句来获得适当的结果。因此,请检查Internet上的SQL Cursor。

此致

拉​​吉

答案 1 :(得分:0)

为什么不使用动态数据存储区?您可以使用以下命令创建它:

new_syntax = "select item_code from item_mast where...."
dw_new.Create(new_syntax, error_create)

好了,现在您可以轻松地使用for循环,过滤器,顺序迭代新数据存储...