同上

解决方案 »

  1.   

    vsFlexGrid如何使被选中行呈蓝色并随光标移动而移动?
    --设置以下属性即可
    vsflexgrid.FocusRect=1
    vsflexgrid.HighLight=1
    vsflexgrid.SelectionMode=3
      

  2.   

    控件是否能象DataGrid一样在控件里直接添加记录?
    --能,如果不是绑定的话必须用代码实现,如
    cn.execute"insert into table1(col1,col2) select '" & vsflexgrid.TextMatrix(vfgdetail.Row,0) &"','" & vsflexgrid.TextMatrix(vfgdetail.Row,1) &"'"
      

  3.   

    我一般用个for...  next 逐行写入
            For u = 2 To vg.Rows - 1
                sql = "INSERT INTO xundandetails VALUES ('" & lbXundanId.Caption & "','" & vg.Cell(flexcpText, u, 0) & "' ," _
                & vg.Cell(flexcpText, u, 1) & ",'" & IIf(Len(Trim(vg.Cell(flexcpText, u, 2))) = 0, Null, _
                vg.Cell(flexcpText, u, 2)) & "'," & IIf(Len(Trim(vg.Cell(flexcpText, u, 3))) = 0, 0, _
                vg.Cell(flexcpText, u, 3)) & ",null,null,'0')"
                Cn.Execute sql '加入询单明细表数据 
            Next u
      

  4.   

    [1]VSFlexGrid1.FocusRect = 0
       VSFlexGrid1.HighLight = 1
       VSFlexGrid1.SelectionMode = 3
       VSFlexGrid1.CellBackColor = vbRed
    设置了行背景色后,就不能使行内光标所在的单元凸显出来,CellBackColor也不行,如我想把行设为蓝色,光标所在单元为红色或也为蓝色但宽度不是整个单元而是单元内文本宽,我见过Delphi就有。
       ***再就是网格录入的时候最后一行记得要加一句移开焦点的代码,否则你最后一行数据可能不被存入
       vsflexgrid好像recordset.update不行,我用cn.execute update[2]insert我明白,但是
    cn.execute"insert into table1(col1,col2) select '" & vsflexgrid.TextMatrix(vfgdetail.Row,0) &"','" & vsflexgrid.TextMatrix(vfgdetail.Row,1) &"'"不太明白,vfgdetail.Row更不明白,好像是追加数据到数据库里,然后再重新set vsflexgrid1.datasource=recordset ?[3]如果我想在记录2和3之间插入一条记录,是否实际是把新记录追加在了数据库末尾,显示时调用SQL语句重新查询,还是就能查进去,原来记录3和其后记录顺序后移?如果是用insert加什么条件?
      

  5.   

    ***再就是网格录入的时候最后一行记得要加一句移开焦点的代码,否则你最后一行数据可能不被存入
       vsflexgrid好像recordset.update不行,我用cn.execute update
    难道不用cn.execute update可以调用什么实现自动保存,请指教。Private Sub VSFlexGrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)
    '移动行后保存更新的数据
    Dim i As Integer
    i = VSFlexGrid1.Row
    Dim StrSql As String
            With VSFlexGrid1
                 StrSql = "UPDATE 表 SET 字段1='" & VSFlexGrid1.TextMatrix(i, 2) & "',字段2='" & VSFlexGrid1.TextMatrix(i, 3) & "' where 字段3= " & VSFlexGrid1.TextMatrix(i, 1) & ""
                 cnn.Execute StrSql
                 rst.Requery
            End With
    End Sub
      

  6.   

    '移动行后保存更新的数据
    写错,是编辑后保存更新数据。缺点保存太频繁了(好像DataGrid就是编辑一个单元保存一个),我想是编辑一行(还在想用什么),保存一次,退出事件里保存一次最后一行。大概这样。
      

  7.   

    ***********我想把行设为蓝色,光标所在单元为红色或也为蓝色但宽度不是整个单元而是单元内文本宽,我见过Delphi就有。*******
        这个也好实现,原理和设置text控件的SelStart和 SelLength一样的,当前单元格得到焦点时发生就可以了
      

  8.   

    非常感谢axer
    你的解释很明白!
    还有两个上面提过的问题,一起告诉我吧:[1]datagrid一样在最末一行一回车出现一个新行,****cn.execute"insert into table1(col1,col2) select '" & vsflexgrid.TextMatrix(vfgdetail.Row,0) &"','" & vsflexgrid.TextMatrix(vfgdetail.Row,1) &"'"----小马哥给的这一句是把控件里的值添加到数据库里!?[2]如果我想在记录2和3之间插入一条记录,是否实际是把新记录追加在了数据库末尾,显示时调用SQL语句重新查询,还是就能插进去,原来记录3和其后记录顺序后移?如果是用insert加什么条件?
      

  9.   

    我用过的方法:
    判断当前行是不是最后一行,是的话就把vg.rows + 1,再把焦点转到新行你想要的单元格;
    如果不是最后一行,vg.rows保持不变,焦点移到下一行的你想要的单元格。