Events 如何对itemchanged事件和数据窗口进行编码

Events 如何对itemchanged事件和数据窗口进行编码,events,powerbuilder,datawindow,Events,Powerbuilder,Datawindow,我正在使用PowerBuilder classic 12.5 我在插入、编辑、创建和打印报告方面遇到困难 我有一个数据窗口,dw_NewEmployee,带有数据对象,d_newrecord,可以更新 我应该使用列通过列插入记录,还是 在窗口对象上创建单行文本 itemchanged事件是否用于dataobject或dataobject上的列和行 在单行文本上。。。我很难弄清楚如何实现验证规则。 请给我一个示例来验证员工ID\u编号 我看到您似乎对datawindow的使用感到困惑 让我们试着总

我正在使用PowerBuilder classic 12.5 我在插入、编辑、创建和打印报告方面遇到困难

我有一个数据窗口,
dw_NewEmployee
,带有数据对象,
d_newrecord
,可以更新

  • 我应该使用列通过列插入记录,还是 在窗口对象上创建单行文本
  • itemchanged
    事件是否用于dataobject或dataobject上的列和行 在单行文本上。。。我很难弄清楚如何实现验证规则。 请给我一个示例来验证员工
    ID\u编号

  • 我看到您似乎对datawindow的使用感到困惑

    让我们试着总结一下:

  • 您可以根据数据库中的sql选择创建一个新的数据窗口
    d\u newrecord
    (假设它是一个网格),例如
    select id\u number,name from employee
  • 在datawindow的详细区域(在运行时每个记录都会重复,但在设计中只会重复一次),您需要为每个列放置一个column对象(在这里您将有
    id\u编号
    名称
    )这些对象既可以显示现有数据,也可以接收用户输入以编辑数据和插入新记录
  • 如果需要使dw可更新,请不要忘记设置Rows/Update属性
  • 在datawindow的标题区域中,您可以将一个静态文本关联到每个列,该列仅在此处显示列名,它与表数据无关
  • 在某些窗口对象中,将datawindow控件
    dw_newemployee
    放置在将绘制datawindow内容的位置,然后将
    d_newrecord
    设置为其dataobject
  • 您需要在某个点设置dw的事务对象,例如在窗口的
    open()
    事件中:
  • dw_newemployee.SetTransObject(sqlca)
    dw_newemployee.Retreive()//如果您使用的是一些retreival参数,请不要忘记在此处包含它们
    
    当您希望在表中插入新数据(例如,使用窗口按钮“add”)时,在调用按钮的
    clicked()
    事件中,
    dw\u newemployee.InsertRow(0)
    在末尾插入

    修改一个单元格后将触发
    ItemChanged()
    事件,您将获得行、项(dwobject)和新数据。通过选择事件的返回值,可以接受或拒绝新数据

    以下是
    itemchanged()
    事件中字段验证的示例:

    long ll\u return\u code=0
    字符串ls\u列
    ls_column=lower(dwo.name)
    选择case ls\u列
    案例“身份证号码”
    如果长(数据)=42,则
    messagebox(“验证错误”,“您不能使用42作为ID”)
    ll\u return\u code=1//拒绝并留在单元格中
    如果结束
    案例“名称”
    如果data=“foobar”,则
    messagebox(“验证错误”,“不使用伪值…”)
    ll_return_code=2//拒绝,但允许转到其他位置
    如果结束
    结束选择
    返回ll_返回代码
    
    我发现您似乎对datawindow的使用感到困惑

    让我们试着总结一下:

  • 您可以根据数据库中的sql选择创建一个新的数据窗口
    d\u newrecord
    (假设它是一个网格),例如
    select id\u number,name from employee
  • 在datawindow的详细区域(在运行时每个记录都会重复,但在设计中只会重复一次),您需要为每个列放置一个column对象(在这里您将有
    id\u编号
    名称
    )这些对象既可以显示现有数据,也可以接收用户输入以编辑数据和插入新记录
  • 如果需要使dw可更新,请不要忘记设置Rows/Update属性
  • 在datawindow的标题区域中,您可以将一个静态文本关联到每个列,该列仅在此处显示列名,它与表数据无关
  • 在某些窗口对象中,将datawindow控件
    dw_newemployee
    放置在将绘制datawindow内容的位置,然后将
    d_newrecord
    设置为其dataobject
  • 您需要在某个点设置dw的事务对象,例如在窗口的
    open()
    事件中:
  • dw_newemployee.SetTransObject(sqlca)
    dw_newemployee.Retreive()//如果您使用的是一些retreival参数,请不要忘记在此处包含它们
    
    当您希望在表中插入新数据(例如,使用窗口按钮“add”)时,在调用按钮的
    clicked()
    事件中,
    dw\u newemployee.InsertRow(0)
    在末尾插入

    修改一个单元格后将触发
    ItemChanged()
    事件,您将获得行、项(dwobject)和新数据。通过选择事件的返回值,可以接受或拒绝新数据

    以下是
    itemchanged()
    事件中字段验证的示例:

    long ll\u return\u code=0
    字符串ls\u列
    ls_column=lower(dwo.name)
    选择case ls\u列
    案例“身份证号码”
    如果长(数据)=42,则
    messagebox(“验证错误”,“您不能使用42作为ID”)
    ll\u return\u code=1//拒绝并留在单元格中
    如果结束
    案例“名称”
    如果data=“foobar”,则
    messagebox(“验证错误”,“不使用伪值…”)
    ll_return_code=2//拒绝,但允许转到其他位置
    如果结束
    结束选择
    返回ll_返回代码