我一直在Vb.net工作,但我转而使用PowerBuilder 12.5 Classic,我找到了解决方法。我需要知道等效的PowerBuilder脚本;
While dr.Read
ComboBox1.Items.Add(dr("itemname"))
end while
答案 0 :(得分:4)
在完全忽略你的问题时回答......
请记住,PowerBuilder的功能在DataWindow中。从数据库加载下拉列表就像在DataWindow列上设置一些属性一样简单,方法是使列成为DropDownDataWindow编辑样式。根据您的需要,在设置DDDW属性后,将在检索主DataWindow时加载DDDW值,不需要代码(除此之外,设置与主DataWindow的数据库连接并检索主DataWindow)。实际上,DDDW在组合框上提供额外的功能,因为它的下拉列表是另一个DataWindow,因此它可以有多个列,标题,图形,基于行的表达式,条件着色,多行文本行高的项“行”,等等......通过使用DataWindow,您可以获得更多机会。 (我知道。我走出了我的PB课程简介,认为DW被夸大了,并试图在没有它们的情况下进行编程。了解他们所做的一切很快非常。放弃我的非DW方法在下一个项目上。)
祝你好运,特里
答案 1 :(得分:2)
textbox1.Reset()
textbox1.SetFocus()
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。