界面中有个mshflexgrid表格中的数据,我想导入到access中,目前是先建立一个table,但是不知道怎么写的(打算采用adodc1控件绑定mshflexgrid方法),请高人指点。
偶已经搜索很多了,没有这个方面的例子。解决好的话会继续加分~~~~~~~~~~~~`

解决方案 »

  1.   

    绑定不好!!
      用ADO吧!只把修改了的值保存起来
      

  2.   

    在mshflexgrid中修改数据,不能直接应用到绑定的数据表中
      

  3.   

    Connection.Execute("Create Table Tablename (FieldName,FieldType....)"For i = 固定行 To 总行数
         Connection.Execute("Insert into Table Values(MSFlexGrid的各值)"
    Next i
      

  4.   

    用text文本定位到每个mshflexgrid框的位置,那样在文本框中改的数据应用到该mshflexgrid对应的(行,列)这样就可以了
      

  5.   

    mshflexgrid控件中只读绑定,针对此控件的数据变化不会自动回写到数据库中,楼主可以循环mshflexgrid中的行,将值回写到数据库中
      

  6.   

    Private Sub 保存_Click()
    'On Error GoTo SaveErr
      Dim i As Integer
      For i = 1 To Grid1.Rows - 1
        With Data1.Recordset
          .FindFirst "id =" & Grid1.TextMatrix(i, 0)
          If .NoMatch Then
            .AddNew
          Else
            .Edit
          End If
          .Fields(1) = Grid1.TextMatrix(i, 1)
          .Fields(2) = Grid1.TextMatrix(i, 2)
          .Fields(3) = Grid1.TextMatrix(i, 3)
          .Fields(4) = Grid1.TextMatrix(i, 4)
          .Fields(5) = Grid1.TextMatrix(i, 5)
          .Fields(6) = Grid1.TextMatrix(i, 6)
          '......
          .Update
          End With
      Next i
      Exit Sub
    SaveErr:
    MsgBox Err.Description
    End Sub
      

  7.   

    应该要针对性地保存。
    给定一个“保存”按钮,调用一个保存的函数。
    保存的函数应该是遍历所有mshflexgrid的数据,然后保存。
      

  8.   

    写一个保存函数
    检查库里是否有flesgrid 的数据,没有就添加不就可以了
    想实时添加就 整个timer控件上去
      

  9.   

    Private Sub Command1_Click()
    '保存表格中的数据到数据库
        With Me.MSHFlexGrid1
        Dim str As String
            For i = 1 To .Cols - 1
                If .TextMatrix(i, 1) = "" Then Exit For '以第一个字段为关健字。
                cn.Execute "INSERT INTO TableName (字段1,字段2) values ('" & .TextMatrix(i, 1) & "','" & .TextMatrix(i, 2) & "' ) "
            Next i
        End With
        Set cn = Nothing
    End SubPrivate Sub Form_Load()'初始化表格
        With Me.MSHFlexGrid1
            .Cols = 3
            .Rows = 20
            .FormatString = "|字段1|字段2"
            .ColWidth(0) = 0
            .ColWidth(1) = 2000
            .ColWidth(2) = 2000
        
    '往表格中加测试数据
            For i = 1 To 2
                For j = 1 To 5
                    .TextMatrix(j, i) = i * j '测试数据
                Next j
            Next i
        
        End With
    End Sub
    ------------
    www.vicmiao.com
    努力就有美好时光!
      

  10.   

    '定义数据集对象
    Dim rs1 As New ADODB.Recordset
    Dim RS2 As New ADODB.Recordset
    Dim rs3 As New ADODB.Recordset
    Dim rs4 As New ADODB.Recordset
    Dim rs5 As New ADODB.Recordset
    Dim rs6 As New ADODB.Recordset
    Dim s, Y, i, j     '定义变量
    Public khbh As String
    Private Sub DataCombo1_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = vbKeyReturn Then
         MS1.Row = 1: MS1.Col = 3    '注意行和列的号码要相同
         text1.Visible = True     'text1输入框可见
         text1.SetFocus     'text1获得焦点
      End If
      If KeyCode = 37 Then
       txtguest.SetFocus
       KeyCode = 0
       End If
    End SubPrivate Sub DataCombo2_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 39 Then
        txtguest.SetFocus
        KeyCode = 0
      End If
    End SubPrivate Sub Form_Load()
     Dim j
      rq.Value = Date
      MS1.Rows = 46: MS1.Cols = 13    '定义MS1表的总行数、总列数
      '定义MS1表格的列宽及表头
      s = Array("500", "1600", "900", "700", "900", "900", "800", "800", "800", "800", "800")
      Y = Array("序号", "规格", "光别", "标记", "已槽筒", "未槽筒", "库存", "入库", "发槽筒", "染坏")
      For i = 0 To 9    '定义表头的名称的显示
       MS1.ColWidth(i) = s(i): MS1.TextMatrix(0, i) = Y(i)
       MS1.TextMatrix(45, i) = Y(i)
      Next i
    '定义MS1表的列序号
      For i = 1 To 43
          MS1.TextMatrix(i, 0) = i
      Next i
     DataCombo1.Enabled = False
       txtguest.Enabled = False
       DataCombo2.Enabled = False
       rq.Enabled = False
    End Sub
    Private Sub MS1_entercell()     '确定text1在MS1表中的位置
      Dim X As String, Y As String, p As String     '显示声明一个单精度浮点型变量
      If MS1.CellWidth <= 0 Or MS1.CellHeight <= 0 Then Exit Sub
      X = MS1.TextMatrix(MS1.FixedRows, MS1.Col)     '给变量赋初值
      Y = MS1.TextMatrix(MS1.Row, 0)     '给变量赋初值
      If Y <> "" Then
         If MS1.Col - MS1.LeftCol <= 3 Then
            MS1.LeftCol = MS1.LeftCol + 1
         End If
         If MS1.CellWidth > 0 And MS1.CellHeight > 0 Then
          text1.Width = MS1.CellWidth: text1.Height = MS1.CellHeight
          text1.Left = MS1.CellLeft + MS1.Left: text1.Top = MS1.CellTop + MS1.Top
         End If
         X = MS1.TextMatrix(MS1.FixedRows, MS1.Col): Y = MS1.TextMatrix(MS1.Row, 0)
         p = MS1.TextMatrix(MS1.Row, MS1.Col)
         text1.Text = MS1.Text
         text1.SelStart = 0: text1.SelLength = Len(text1.Text)
      End If
    End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
     If KeyCode = vbKeyReturn Then
      If MS1.Col = 9 Then
        If MS1.Row <= 43 Then
          MS1.Row = MS1.Row + 1
          MS1.Col = 3       '控制回车后光标的位置
          Else
           MS1.Row = MS1.Row
         End If
        Else
          If MS1.Col + 1 <= MS1.Cols - 1 Then
             MS1.Col = MS1.Col + 1
           Else
             If MS1.Row + 1 <= MS1.Rows - 1 Then
                MS1.Row = MS1.Row + 1
                MS1.Col = 3  '控制回车后光标的位置
             End If
          End If
       End If
     End If
     If KeyCode = vbKeyUp Then
        If MS1.Row > 1 Then MS1.Row = MS1.Row - 1
     End If
     If KeyCode = vbKeyDown Then
        If MS1.Row < 43 Then MS1.Row = MS1.Row + 1
     End If
     If KeyCode = vbKeyLeft Then
        If text1.Text <> "" Then
           text1.SelStart = 2
           text1.SelLength = Len(text1.Text)
        End If
        If MS1.Col - 7 <= MS1.Cols + 1 Then
           MS1.Col = MS1.Col - 1
           If MS1.Col = 2 Then MS1.Col = 3
          Else
           If MS1.Row + 1 <= MS1.Row - 1 Then
              MS1.Row = MS1.Row + 1
              MS1.Col = 3
           End If
        End If
     End If
     If KeyCode = vbKeyRight Then
        If text1.Text <> "" Then
           text1.SelStart = 2
           text1.SelLength = Len(text1.Text)
        End If
        If MS1.Col + 1 <= 10 Then
           MS1.Col = MS1.Col + 1
          Else
           If MS1.Row + 1 <= 43 Then
              MS1.Row = MS1.Row + 1
              MS1.Col = 3
           End If
        End If
     End If
    End Sub
      

  11.   

    Private Sub Text1_Change()
     MS1.Text = text1.Text     '赋值给MS1
     If MS1.Col = 1 Then
      If text1.Text = "" Then
            text1.SetFocus     'text1获得焦点
      End If
     End If
    End Sub
    Private Sub Comdj_Click()     '登记
     '确定文本框在MS1表格中的大小和位置
     text1.Width = MS1.CellWidth: text1.Height = MS1.CellHeight
     text1.Left = MS1.CellLeft + MS1.Left: text1.Top = MS1.CellTop + MS1.Top
     MS1.Enabled = True
     Combc.Enabled = True
     Comqx.Enabled = True: Comdj.Enabled = False
     text1.Enabled = True
     DataCombo2.Enabled = True
     DataCombo1.Enabled = True
     txtguest.Enabled = True
     rq.Enabled = True
     '清空数据
     For i = 1 To 44      '确定文体框的长度
     For j = 3 To 9      '确定文体框的宽度
         MS1.TextMatrix(i, j) = ""
     Next j
     Next i
     DataCombo2.SetFocus     'kh获得焦点
    End Sub
    Private Sub Combc_Click()     '保存
     rs3.Open "select * from 进存信息表", Cnn, adOpenKeyset, adLockOptimistic     '打开数据库
      For i = 1 To 44      '在文本中的填充的长度
       If (MS1.TextMatrix(i, 4) <> "" Or MS1.TextMatrix(i, 6) <> "" Or MS1.TextMatrix(i, 5) <> "" Or MS1.TextMatrix(i, 7) <> "" Or MS1.TextMatrix(i, 8) <> "" Or MS1.TextMatrix(i, 9) <> "") Then
        '添加新记录到"进存信息表"表中
         rs3.AddNew
         If MS1.TextMatrix(i, 1) <> "" Then rs3.Fields("规格") = Trim(MS1.TextMatrix(i, 1))
         If MS1.TextMatrix(i, 2) <> "" Then rs3.Fields("光别") = Trim(MS1.TextMatrix(i, 2))
         If MS1.TextMatrix(i, 3) <> "" Then rs3.Fields("标记") = Trim(MS1.TextMatrix(i, 3))
         If MS1.TextMatrix(i, 4) <> "" Then rs3.Fields("已槽筒") = Trim(MS1.TextMatrix(i, 4))
         If MS1.TextMatrix(i, 5) <> "" Then rs3.Fields("未槽筒") = Trim(MS1.TextMatrix(i, 5))
         If MS1.TextMatrix(i, 6) <> "" Then rs3.Fields("库存") = Trim(MS1.TextMatrix(i, 6))
         If MS1.TextMatrix(i, 7) <> "" Then rs3.Fields("入库") = Trim(MS1.TextMatrix(i, 7))
         If MS1.TextMatrix(i, 8) <> "" Then rs3.Fields("发槽筒") = Val(MS1.TextMatrix(i, 8))
         If MS1.TextMatrix(i, 9) <> "" Then rs3.Fields("染坏") = Val(MS1.TextMatrix(i, 9))
         If rq.Value <> "" Then rs3.Fields("日期") = Trim(rq.Value)
         If DataCombo1.Text <> "" Then rs3.Fields("操作员") = Trim(DataCombo1.Text)
         If DataCombo2.Text <> "" Then rs3.Fields("本厂或客户") = Trim(DataCombo2.Text)
         If txtguest.Text <> "" Then rs3.Fields("客户") = Trim(txtguest.Text)
         rs3.Update
       End If
      Next i
     '设置控件有效或无效
      Combc.Enabled = False: Comdj.Enabled = True    '添加时对各按扭的控制
      Comqx.Enabled = False: MS1.Enabled = False
      text1.Visible = False
     'Else
     ' MsgBox ("填写数据不完整,请核对,再保存!")
     ' MS1.Col = 1: MS1.Row = 2     '到第1行、到第1列
     'End If
     rs3.Close
    End Sub
    Private Sub Comqx_Click()                    '取消操作
     For i = 1 To 44
         For j = 3 To 9                      '取消后清空
             MS1.TextMatrix(i, j) = ""
         Next j
     Next i
     MS1.Enabled = False: Comdj.Enabled = True
     text1.Visible = False
     Comdj.SetFocus
    End Sub
    Private Sub Comend_Click()
      Unload Me
    End Sub
      

  12.   

    我刚好也弄了个利用MSFlexGrid的输入,还行!!利用了一个Text文本框。上面就是我的代码!!
      

  13.   

    http://community.csdn.net/Expert/topic/4981/4981522.xml?temp=.1472589
    高手帮忙去看下,楼上各位谢谢捧场,等今天或者明天整理好了,另开帖加分