本帖最后由 maoxiang123 于 2010-08-25 21:31:32 编辑

解决方案 »

  1.   

    Load Form2
    With Form2
        .Text1.Text = rs!Field1
        .Text2.Text = rs!Field2
        ...
    End With
    Form2.Show VBModal, Me
      

  2.   


    Private Sub Command2_Click()
        
        If flxShow.RowSel = 0 Then
            MsgBox "请选中要修改的记录!", vbOKOnly + vbInformation, "提示"
        Else
            strSql = "select * from 检修记录表 where 序号='" & flxShow.TextMatrix(flxShow.RowSel, 0) & "'"
            rs.Open strSql, dbConn, adOpenKeyset, adLockOptimistic
        End If
      
        Load 编辑
        With 编辑
            .cbo_gzfzr = rs!Field(3)
            .txt_gzpbh = rs!Field(6)
            .cbo_kaishi = rs!Field(4)
            .cbo_jieshu = rs!Field(5)
            .cbo_jizuhao = rs!Field(1)
            .txt_gzrw = rs!Field(2)
            .txt_jxnr = rs!Field(7)
        End With
        编辑.Show vbModal, Me
    以上是我的代码,在rs.Open strSql, dbConn, adOpenKeyset, adLockOptimistic这里报错实时错误'-2147217913 (80040e07)':
    [Microsoft][ODBC Microsoft Access Driver]标准表达式中数据类型不匹配。请问哪出错了?
      

  3.   

    你检查一下这个strSql语句。
     序号='" & flxShow.TextMatrix(flxShow.RowSel, 0) & "'这个里边,flxShow选中行的值会和 & 符号组成一个string字符串,你检查下。
      

  4.   

    1、模组中定义:
    Option ExplicitPublic LoadSql As String
    Public ConnSql As String
    Public LoadRs As New ADODB.Recordset
    Public SqlConn As New ADODB.Connection2、主窗体:
    Option Explicit
    'Dim LoadSql As String
    'Dim ConnSql As String
    'Dim LoadRs As New ADODB.Recordset
    'Dim SqlConn As New ADODB.ConnectionPrivate Sub cmdLoadData_Click()
    On Error GoTo eNext:
      If SqlConn.State = 1 Then SqlConn.Close
      ConnSql = "Provider=sqloledb;Data Source=IQMS-PETERPAN;Initial Catalog=AideSolar_BarCodeMIS;User Id=SA;Password=lovelyh;"
      SqlConn.ConnectionString = ConnSql
      SqlConn.Open
        
      LoadSql = "SELECT * FROM [AideSolar_BarCodeMIS].[dbo].[tabPowerRange]"
      If LoadRs.State = 1 Then LoadRs.Close
      LoadRs.Open LoadSql, SqlConn, adOpenKeyset, adLockOptimistic
        
      If Not LoadRs.EOF Then
      Set MSHFlexGrid1.DataSource = LoadRs
      Else
      'Your function code
      End If
      Exit Sub
    eNext:
      MsgBox Err.Description, vbCritical, Err.Number
    End SubPrivate Sub MSHFlexGrid1_Click()
      Call LoadData(MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1))
    End SubPublic Function LoadData(ByVal strID As String)
      Dim LoadSql As String
      Dim LoadRs As New ADODB.Recordset
        
      If LoadRs.State = 1 Then LoadRs.Close
      LoadSql = "SELECT * FROM tabPowerRange where id=" & Trim(strID)
      LoadRs.Open LoadSql, SqlConn, adOpenKeyset, adLockOptimistic
        
      If Not LoadRs.EOF Then
      LoadRs.MoveFirst
      With frmEditData
      .txtID.Text = LoadRs!id
      .txtRatedPower.Text = LoadRs!ratedpower
      .txtRatedV.Text = LoadRs!ratedv
      .Show 1
      End With
        
      End If
        
    End FunctionPublic Function ReLoadData()
      Call cmdLoadData_Click
    End Function3、编辑窗体
    Option ExplicitPrivate Sub cmdCancel_Click()
      Unload Me
    End SubPrivate Sub cmdSave_Click()
      Dim UpdateSql As String
      Dim UpdateCommand As New ADODB.Command
    On Error GoTo eNext:
      UpdateSql = "update tabPowerRange set " + _
      "RatedPower=" + Trim(txtRatedPower.Text) + "," + _
      "Ratedv=" + Trim(txtRatedV.Text) + " where id=" & Trim(txtID.Text)
      UpdateCommand.ActiveConnection = SqlConn
      UpdateCommand.CommandType = adCmdText
      UpdateCommand.CommandText = UpdateSql
      UpdateCommand.Execute
        
      Call frmMain.ReLoadData
      MsgBox "Update Success...", vbInformation, App.Title
        
      Unload Me
    eNext:
      MsgBox Err.Description, vbCritical, Err.Number
    End Sub