我一直在 Vb.net 上工作,但我切换到 PowerBuilder 12.5 Classic,我正在寻找解决方法。我需要知道等效的 PowerBuilder 脚本;
- 清除控件“textbox1.clear()”
- 聚焦“textbox1.focus()”
- 将 SQL 数据库项插入下拉列表框
While dr.Read
ComboBox1.Items.Add(dr("itemname"))
end while
我一直在 Vb.net 上工作,但我切换到 PowerBuilder 12.5 Classic,我正在寻找解决方法。我需要知道等效的 PowerBuilder 脚本;
While dr.Read
ComboBox1.Items.Add(dr("itemname"))
end while
在完全无视您的问题的情况下回答...
请记住,PowerBuilder 的强大之处在于 DataWindow。从数据库加载下拉列表就像在 DataWindow 列上设置一些属性一样简单,方法是将列设置为 DropDownDataWindow 编辑样式。根据您的需要,在设置 DDDW 属性后,将在检索主 DataWindow 时加载 DDDW 值,无需代码(除此之外,与主 DataWindow 建立数据库连接并检索主 DataWindow)。事实上,DDDW 为组合框提供了额外的功能,因为它的下拉列表是另一个 DataWindow,因此它可以有多个列、标题、图形、基于行的表达式、条件着色、多条文本行高的项目“行”,等等......通过使用 DataWindow,您可以为更多机会敞开大门。(我知道。我退出了我的 PB 简介课程,认为 DW 被夸大了,并试图在没有它们的情况下进行编程。学会欣赏他们所做的一切很快。在下一个项目中放弃了我的非 DW 方法。)
祝你好运,
特里
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 检索数据并轻松地对其进行迭代来回答您的问题(它比光标更容易操作)并且我翻译了组合框的填充。但正如 Terry 所说,您应该研究如何使用更强大和更进化的 DropDownDataWindow。