怎么在datawindow里删除多条数据,怎么改datawindow里某个字段的值

时间:2020-12-31 05:04:36
要求是:
sheet窗口。在窗口中设计一个tab控件,分2页。第1页是目录,在该页面上面设置查询条件:登记编号(Bh)、名称(cname)、出版社(publisher),设置按钮“查询”和“清除购齐”。在查询条件下设置数据窗口控件dw_ml,风格是grid,显示表ts_tszhd中的全部信息,只读。
第2页是登记表,设置数据窗口dw_detail,风格是freeform,显示表ts_tszhd中的全部信息。dw_ml和dw_detail共享数据窗口
在“清除购齐”按钮的clicked事件中把dw_ml(datawindow)中订购数量=已购数量的记录删除。
当窗口功能是“维护”时,可以查询,可以在dw_detail中修改和增加记录,可以在dw_ml中删除记录(一次可以删除多条),“清除购齐”按钮可见且有效。

怎么在datawindow里删除多条数据,怎么改datawindow里某个字段的值,他要数据共享,但是风格又不一样是不是调不同的datawindow风格啊
问题有点多 分数也比较少 应该刚刚接触这门语言 谢谢大家了

9 个解决方案

#1


1.删除多条记录用
dec ldc_1, ldc_2
for i = dw_ml.rowcount to 1 step -1
  ldc_1 = dw_ml.getitemnumber(i, '订购数量')
  ldc_2 = dw_ml.getitemnumber(i, '已购数量')
  if ldc_1 = ldc_2 then
    dw_ml.deleterow(i)
  end if
next

2.改datawindow里某个字段的值
dw_ml.setitem(i, '字段', 值)

3.数据共享
dw_ml.sharedata(dw_detail)
风格不一样就建两个风格不一样的datawindow

#2


删除多条数据:
可在数据窗中加一列为checkbox,删除时做一个循环,判断checkbox列,选中的删除

修改datawindow里某个字段值
dw_ml.object.列名[当前行]=''

dw_ml.setitem(row,'列名',值)

#3


引用 1 楼 jimwoo 的回复:
1.删除多条记录用 
dec ldc_1, ldc_2 
for i = dw_ml.rowcount to 1 step -1 
  ldc_1 = dw_ml.getitemnumber(i, '订购数量') 
  ldc_2 = dw_ml.getitemnumber(i, '已购数量') 
  if ldc_1 = ldc_2 then 
    dw_ml.deleterow(i) 
  end if 
next 

删除多条记录是在datawindow的itemchanged里面做吗
怎么才能让他连续选中呢 按ctrl还是什么的

#4


你的删除不是放在按钮里的吗

#5


不是 是在datawindow里面右键菜单里有个删除
让用户连续选中 然后右键删除 对了 这个右键菜单也遇到困难了
那里放进来的 

#6


多选在clicked里写,il_lastrow 是instance variable
Long   ll_CurrentRow   ,   ll_Circle

IF   row   <=   0   THEN   RETURN
ll_CurrentRow   =   row
IF   KeyDown(keyshift!)   THEN
  IF   il_LastRow   =   0   THEN
    This.SelectRow(ll_CurrentRow   ,   True)
    il_LastRow   =   ll_CurrentRow
  ELSE
    This.SelectRow(0   ,   False)
    IF   ll_CurrentRow   >   il_LastRow   THEN
      FOR   ll_Circle   =   il_LastRow   To   ll_CurrentRow
        This.SelectRow(ll_Circle   ,   True)
      NEXT
    ELSE
      FOR   ll_Circle   =   il_LastRow   To   ll_CurrentRow   Step   -1
        This.SelectRow(ll_Circle   ,   True)
      NEXT
    END IF
  END IF
ELSE
  il_LastRow   =   ll_CurrentRow
  IF   KeyDown(keycontrol!)   THEN
    This.SelectRow(ll_CurrentRow   ,   Not   This.IsSelected(ll_CurrentRow))
  ELSE
    IF   This.IsSelected(ll_CurrentRow)   =   True   THEN
      il_LastRow   =   ll_CurrentRow
    ELSE
      This.SelectRow(0   ,   False)
      This.SelectRow(ll_CurrentRow   ,   True)
      il_LastRow   =   ll_CurrentRow
    END IF
  END IF
END IF

删除选中行
FOR i = dw_ml.RowCount To 1 Step -1
  IF dwcontrol.IsSelected ( i )  THEN
    dw_ml.DeleteRow(i)
  END IF
NEXT

右键菜单写在rbuttondown里,用popmenu显示菜单

#7


哇 厉害 好的 我试试哈 

#8


选取多行的话应该还考虑shift ctrl

string   ls_KeyDownType
If rrow <= 0 then Return 0
   If Keydown(KeyShift!) then
        integer li_Idx
        al_aclickedrow=rrow
  this.setredraw(false)
        this.selectrow(0,false)
        If il_lastclickedrow = 0 then
        this.setredraw(true)
           Return 1
        end if
        if il_lastclickedrow > al_aclickedrow then
            For li_Idx = il_lastclickedrow to al_aclickedrow STEP -1
          this.selectrow(li_Idx,TRUE)
         end for
       else
          For li_Idx = il_lastclickedrow to al_aclickedrow 
             this.selectrow(li_Idx,TRUE)
          next
      end if
      this.setredraw(true)
      Return 1
////////////////
ElseIf this.IsSelected(rrow) Then
il_LastClickedRow = rrow
ib_action_on_buttonup = true

ElseIf Keydown(KeyControl!) then
  il_LastClickedRow = rrow
this.SelectRow(rrow,TRUE)

Else
il_LastClickedRow = rrow
this.SelectRow(0,FALSE)
this.SelectRow(rrow,TRUE)

End If 
///////////////////

If ib_action_on_buttonup Then
ib_action_on_buttonup = false
If Keydown(KeyControl!) then
this.selectrow(il_lastclickedrow,FALSE)
Else
this.SelectRow(0,FALSE)
this.SelectRow(il_lastclickedrow,TRUE)
End If
il_lastclickedrow = 0
End If

#9


终于做出来了 谢谢大家的帮助哈 感激不尽 虽然分数很少 总之非常感谢大家了 呵呵 

#1


1.删除多条记录用
dec ldc_1, ldc_2
for i = dw_ml.rowcount to 1 step -1
  ldc_1 = dw_ml.getitemnumber(i, '订购数量')
  ldc_2 = dw_ml.getitemnumber(i, '已购数量')
  if ldc_1 = ldc_2 then
    dw_ml.deleterow(i)
  end if
next

2.改datawindow里某个字段的值
dw_ml.setitem(i, '字段', 值)

3.数据共享
dw_ml.sharedata(dw_detail)
风格不一样就建两个风格不一样的datawindow

#2


删除多条数据:
可在数据窗中加一列为checkbox,删除时做一个循环,判断checkbox列,选中的删除

修改datawindow里某个字段值
dw_ml.object.列名[当前行]=''

dw_ml.setitem(row,'列名',值)

#3


引用 1 楼 jimwoo 的回复:
1.删除多条记录用 
dec ldc_1, ldc_2 
for i = dw_ml.rowcount to 1 step -1 
  ldc_1 = dw_ml.getitemnumber(i, '订购数量') 
  ldc_2 = dw_ml.getitemnumber(i, '已购数量') 
  if ldc_1 = ldc_2 then 
    dw_ml.deleterow(i) 
  end if 
next 

删除多条记录是在datawindow的itemchanged里面做吗
怎么才能让他连续选中呢 按ctrl还是什么的

#4


你的删除不是放在按钮里的吗

#5


不是 是在datawindow里面右键菜单里有个删除
让用户连续选中 然后右键删除 对了 这个右键菜单也遇到困难了
那里放进来的 

#6


多选在clicked里写,il_lastrow 是instance variable
Long   ll_CurrentRow   ,   ll_Circle

IF   row   <=   0   THEN   RETURN
ll_CurrentRow   =   row
IF   KeyDown(keyshift!)   THEN
  IF   il_LastRow   =   0   THEN
    This.SelectRow(ll_CurrentRow   ,   True)
    il_LastRow   =   ll_CurrentRow
  ELSE
    This.SelectRow(0   ,   False)
    IF   ll_CurrentRow   >   il_LastRow   THEN
      FOR   ll_Circle   =   il_LastRow   To   ll_CurrentRow
        This.SelectRow(ll_Circle   ,   True)
      NEXT
    ELSE
      FOR   ll_Circle   =   il_LastRow   To   ll_CurrentRow   Step   -1
        This.SelectRow(ll_Circle   ,   True)
      NEXT
    END IF
  END IF
ELSE
  il_LastRow   =   ll_CurrentRow
  IF   KeyDown(keycontrol!)   THEN
    This.SelectRow(ll_CurrentRow   ,   Not   This.IsSelected(ll_CurrentRow))
  ELSE
    IF   This.IsSelected(ll_CurrentRow)   =   True   THEN
      il_LastRow   =   ll_CurrentRow
    ELSE
      This.SelectRow(0   ,   False)
      This.SelectRow(ll_CurrentRow   ,   True)
      il_LastRow   =   ll_CurrentRow
    END IF
  END IF
END IF

删除选中行
FOR i = dw_ml.RowCount To 1 Step -1
  IF dwcontrol.IsSelected ( i )  THEN
    dw_ml.DeleteRow(i)
  END IF
NEXT

右键菜单写在rbuttondown里,用popmenu显示菜单

#7


哇 厉害 好的 我试试哈 

#8


选取多行的话应该还考虑shift ctrl

string   ls_KeyDownType
If rrow <= 0 then Return 0
   If Keydown(KeyShift!) then
        integer li_Idx
        al_aclickedrow=rrow
  this.setredraw(false)
        this.selectrow(0,false)
        If il_lastclickedrow = 0 then
        this.setredraw(true)
           Return 1
        end if
        if il_lastclickedrow > al_aclickedrow then
            For li_Idx = il_lastclickedrow to al_aclickedrow STEP -1
          this.selectrow(li_Idx,TRUE)
         end for
       else
          For li_Idx = il_lastclickedrow to al_aclickedrow 
             this.selectrow(li_Idx,TRUE)
          next
      end if
      this.setredraw(true)
      Return 1
////////////////
ElseIf this.IsSelected(rrow) Then
il_LastClickedRow = rrow
ib_action_on_buttonup = true

ElseIf Keydown(KeyControl!) then
  il_LastClickedRow = rrow
this.SelectRow(rrow,TRUE)

Else
il_LastClickedRow = rrow
this.SelectRow(0,FALSE)
this.SelectRow(rrow,TRUE)

End If 
///////////////////

If ib_action_on_buttonup Then
ib_action_on_buttonup = false
If Keydown(KeyControl!) then
this.selectrow(il_lastclickedrow,FALSE)
Else
this.SelectRow(0,FALSE)
this.SelectRow(il_lastclickedrow,TRUE)
End If
il_lastclickedrow = 0
End If

#9


终于做出来了 谢谢大家的帮助哈 感激不尽 虽然分数很少 总之非常感谢大家了 呵呵