在PowerBuilder Classic 12.5中填充SQL表中的dropdownlistbox项

时间:2012-07-11 14:38:58

标签: powerbuilder

我一直在Vb.net工作,但我转而使用PowerBuilder 12.5 Classic,我找到了解决方法。我需要知道等效的PowerBuilder脚本;

  1. 清除控件“textbox1.clear()”
  2. 关注“textbox1.focus()”
  3. 将SQL数据库项插入下拉列表框
  4.     While dr.Read
           ComboBox1.Items.Add(dr("itemname"))
        end while
    

2 个答案:

答案 0 :(得分:4)

在完全忽略你的问题时回答......

请记住,PowerBuilder的功能在DataWindow中。从数据库加载下拉列表就像在DataWindow列上设置一些属性一样简单,方法是使列成为DropDownDataWindow编辑样式。根据您的需要,在设置DDDW属性后,将在检索主DataWindow时加载DDDW值,不需要代码(除此之外,设置与主DataWindow的数据库连接并检索主DataWindow)。实际上,DDDW在组合框上提供额外的功能,因为它的下拉列表是另一个DataWindow,因此它可以有多个列,标题,图形,基于行的表达式,条件着色,多行文本行高的项“行”,等等......通过使用DataWindow,您可以获得更多机会。 (我知道。我走出了我的PB课程简介,认为DW被夸大了,并试图在没有它们的情况下进行编程。了解他们所做的一切很快非常。放弃我的非DW方法在下一个项目上。)

祝你好运,

特里

答案 1 :(得分:2)

  1. textbox1.Reset()
  2. textbox1.SetFocus()
  3. 示例(未经测试,但它显示了这个想法):
  4.     string ls_sql, ls_syntax, ls_errors
    
        ls_sql = "select name from users"
        ls_syntax = sqlca.SyntaxFromSql(ls_sql, "", ls_errors)
        if len(ls_errors) > 0 then return
    
        datastore ds
        ds = create datastore
        ds.create(ls_syntax, ls_errors)
        if len(ls_errors) = 0 then
            ds.SetTransObject(sqlca)
            ds.Retrieve()
    
            long ll_row,ll_rows
            string ls_val
            ll_rows = ds.RowCount()
            for ll_row = 1 to ll_rows
                ls_val = ds.GetItemString(ll_row, "name")
                Combobox1.AddItem(ls_val)
            next
    
        end if
    
        destroy ds
    

    编辑 一些评论:正如Terry在答案中所说,Datawindow和DataStore是Powerbuilder的关键控件。将DataStore视为VB记录集,DW是一种可视记录集(可以以表格,网格等方式显示数据)。

    我通过使用DS来检索数据并轻松地迭代它(它比光标更容易操作)来回答你的问题,并且我翻译了组合框的填充。但正如特里所说,你应该研究如何使用更强大和更具发展性的DropDownDataWindow。