博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

常用网格函数及操作

Posted on 2006-04-23 18:30  智岛软件  阅读(629)  评论(0编辑  收藏  举报
'---------------------------------------------------------------------------------------------------------------------  
'网格中:保存后,使光标停留在当前行
 If DBEngine.SaveRecord() = true then
'保存后,要从数据库更新当前行数据

 If bNewRecord <> true then '保存修改
  DBGrid14.UpdateCurRecordFromServer(DBEngine.GetCurRecordSQLWhere())
 Else '保存新增记录
  DBGrid14.UpdateFromDataSourceUrl("")
  DBGrid14.SelectRow(DBGrid14.GetRowCount()-1)
 End if
End if

'网格中行、列定位
grd_Main.SetFocusCell nRowIndex, nColIndex
grd_Main.SelectRow nRowIndex

'网格中移动记录:

Sub btnFirst_Click() '移到首项
  MainGrid.SetFocusRow (maingrid.GetFixedRowCount )
End Sub

Sub btnLast_Click() '移到尾项
  MainGrid.SetFocusRow (maingrid.GetFixedRowCount + mainGrid.GetRecordCount-1)
End Sub
 
Sub btnNext_Click() '移到上一项
  MainGrid.SetFocusRow (maingrid.GetFixedRowCount + mainGrid.GetCurRecordIndex + 1)
End Sub

Sub btnPre_Click() '移到下一项
      MainGrid.SetFocusRow (maingrid.GetFixedRowCount + mainGrid.GetCurRecordIndex - 1)
End Sub

'---------------------------------------------------------------------------------------------------------------------
'填充网格时设置网格状态
Sub MainGrid_EventBeforeFillGrid()
   lblCount2.Caption = MainGrid.GetRecordCount()
   Call DBGrid.SetFieldColWidth "编号",True '设置列宽
   Call DBGrid.SetHideField("ID",True) '隐藏网格中列
End Sub

'---------------------------------------------------------------------------------------------------------------------
'隐藏网格中某列
   Call DBGrid.SetHideField("ID",True)      '隐藏网格中列
'设置网格某列宽
   Call DBGrid.SetFieldColWidth "编号",0 '设置列宽

'---------------------------------------------------------------------------------------------------------------------
'取网格中字段值
RowIndex = DBGrid14.GetCurRowIndex‘得到当前行索引

nRowIndex = DBGrid14.GetCurRecordIndex ‘为空

(DBGrid14.GetFieldStringValue("项目名称",RowIndex-1))’得到当前行相应字段值

(DBGrid14.GetFieldStringValue("项目名称",nRowIndex))’得到当前行相应字段值

'设置网格中字段值
grd_Main.SetFieldStringValue "字段名", RowIndex,"0"
'---------------------------------------------------------------------------------------------------------------------
'响应网络当前行改变事件
Sub DBGrid31_EventCurRowChanged(nRowIndex)
'改变数据引擎的当前记录
  if DBEngine.CurIndex() <> nRowIndex-DBGrid31.GetFixedRowCount then
     DBEngine.GoToRecord nRowIndex-DBGrid31.GetFixedRowCount
  end if
End Sub

'---------------------------------------------------------------------------------------------------------------------
'网格中多行选择的处理

'全选/撤消全选
Sub chkSel_Change()
  If chkSel = True Then
    DBGrid.SelectAllCells()
  ElseIf chkSel = False Then
    DBGrid.UnSelectAllCells()   
  End If
End Sub

'判断多选
Sub btnInsert_Click()
   nRowIndex = DBGrid14.GetCurRowIndex()
   RowHeadHeight=DBGrid14.GetFixedRowCount
   For i = 0 To DBGrid14.GetRecordCount - 1
     If  DBGrid14.IsRowSelected(i + RowHeadHeight) then
        if lstrKey = "" THEN
           lstrKey ="'"+ DBGrid14.GetFieldStringValue("序号",i) +"'"
        ELSE
           lstrKey =lstrKey & "," &  "'"+ DBGrid14.GetFieldStringValue("序号",i) +"'"
        END IF
     End If
   Next
  
   If lstrKey="" then
      MsgBox "没有选择订单明细项目!"
      exit sub
   end If

   strSql = "Select 序号 From 出货表_明细 Where 出货单号 = '"+ebCode.Text+"' And 序号 IN("+lstrKey+") "
   strRet = DBEngine.WebFunction("SqlQuery",strSql,"")
     strError = DBEngine.GetElemData(strRet, "Error")
   If strError<>"" Then
      Msgbox "SQL语句执行失败:" + strError
      exit Sub
   End If
   strCode = DBEngine.GetElemData(strRet,"序号")
   If strCode <> "" Then
       DBEngine.Msgbox "同一笔订单的明细项不能重复添加,请重新选择!"
       Exit Sub
   End If

   strInsert = "Insert 出货表_明细(出货单号,订单号,序号,料号,品名_1,品名_2,批号,单位,规格型号,客户要求交货期,预交日期,交货日期) " +_
               "Select "+ebCode.Text+" AS 出货单号,订单号,序号,料号,品名_1,品名_2,批号,单位,规格型号,客户要求交货期,预交日期,'"+dtcDate.Text+"' AS 交货日期"
   strInsert = strInsert + " FROM 订单表_明细 WHERE 序号 IN("+lstrKey+") "

   StrRet = DBEngine.WebFunction("SqlNonQuery", StrInsert, "")
   strError = DBEngine.GetElemData(strRet, "Error")
   If strError<>"" Then
      Msgbox "SQL语句执行失败:" + strError
      exit Sub
   End If
   MainGrid.UpdateFromDataSourceUrl("")

End Sub

'---------------------------------------------------------------------------------------------------------------------
'注释:导出网格中数据至Excel
Sub btnOutput_Click()
  RowIndex = MainGrid.GetCurRecordIndex
  If RowIndex = -1 then
    Msgbox "没有数据可导出!"
    exit sub
  Else
    MainGrid.ExportGrid("")
  End If
End Sub