=========================================================================================
    '执行查询
    Dim Str As String
    Dim Term As String
      '按姓名查询
      If txtname.Text <> "" Then
            frmmain.lv.ListItems.Clear
            Set adoPrimaryRS = New Recordset
            adoPrimaryRS.Open "select * from record where guestname = '" & txtname.Text & "'", db, adOpenStatic, adLockOptimistic
                  For i = 0 To adoPrimaryRS.RecordCount - 1
                        frmmain.lv.ListItems.Add , , adoPrimaryRS.Fields(0).Value
                  For j = 1 To adoPrimaryRS.Fields.Count - 1
                        frmmain.lv.ListItems(i + 1).SubItems(j) = adoPrimaryRS.Fields(j).Value
                  Next
                  frmmain.lv.ListItems(i + 1).SubItems(1) = Format(adoPrimaryRS.Fields(1), "yyyy-m-d")
                  frmmain.lv.ListItems(i + 1).SubItems(10) = Format(adoPrimaryRS.Fields(10), "yyyy-m-d")
                  adoPrimaryRS.MoveNext
                  Next
                  Unload Me
      End If=========================================================================================以上是我查询的语句,显示数据控件为ListView。出错原因:当ListView中有空值时 查询就出错,显示错误为有NULL值。请问怎么解决??感谢你的观看与答复!小弟QQ:112654

解决方案 »

  1.   

    1.用IsNUll()判斷是否為NULL。2.在NULL值後加上一個空字符,如: Format(adoPrimaryRS.Fields(1), "yyyy-m-d") & ""
      

  2.   

    一般都把NULL直接换成"",再显示。
      

  3.   

    用format格式化:
    frmmain.lv.ListItems.Add , , format(adoPrimaryRS.Fields(0).Value)
      

  4.   

    ================================================
    查询语句
    ================================================
    Private Sub cmdquery_Click()
        '执行查询
        Dim Str As String
        Dim Term As String
          '按姓名查询
          If chkname.Value And txtname.Text <> "" Then
                FrmMain.lv.ListItems.Clear
                Set adoPrimaryRS = New Recordset
                adoPrimaryRS.Open "select * from info where 被保险人 = '" & txtname.Text & "'", db, adOpenStatic, adLockOptimistic
                      For i = 0 To adoPrimaryRS.RecordCount - 1
                            FrmMain.lv.ListItems.Add , , adoPrimaryRS.Fields(0).Value & ""
                      For j = 1 To adoPrimaryRS.Fields.Count - 1
                            FrmMain.lv.ListItems(i + 1).SubItems(j) = Format(adoPrimaryRS.Fields(j).Value)
                      Next
                      adoPrimaryRS.MoveNext
                      Next
                      Unload Me
          End If
    End Sub===============================================
    数据源连接语句
    ===============================================
        '数据源
         Dim db As ADODB.Connection
         Dim adoPrimaryRS As ADODB.Recordset
        Set cnn = New ADODB.Connection
        cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\database.mdb;Persist Security Info=False"
        cnn.Open
        
        FrmMain.lv.ListItems.Clear
        Set adoPrimaryRS = New Recordset=========================================
    出错原因:实时错误:3709
    连接无法用于执行此操作。在此上下文中它可能被已被关闭或无效!!=====
    请问哪里出错了?
      

  5.   

    改 Set adoPrimaryRS = New Recordset
    为 Set adoPrimaryRS = New ADODB.Recordset
      

  6.   

    又有个新的问题 -- 模糊查询 ~
    不知道哪里出了问题,请点评。
    ============================
        Dim Str As String
        Str = "select * from info where 被保险人 like '%" & txtname.Text & "%'"
    If chkname.value And txtname.Text <> "" And chkmohu.value Then
                        FrmMain.lv.ListItems.Clear
                        Set adoPrimaryRS = New Recordset
                        adoPrimaryRS.Open Str, db, adOpenStatic, adLockOptimistic
                        For i = 0 To adoPrimaryRS.RecordCount - 1
                            FrmMain.lv.ListItems.Add , , adoPrimaryRS.Fields(0).value & ""
                        For j = 1 To adoPrimaryRS.Fields.Count - 1
                            FrmMain.lv.ListItems(i + 1).SubItems(j) = Format(adoPrimaryRS.Fields(j).value)
                        Next
                      FrmMain.lv.ListItems(i + 1).SubItems(5) = Format(adoPrimaryRS.Fields(6), "yyyy-m-d")
                      FrmMain.lv.ListItems(i + 1).SubItems(12) = Format(adoPrimaryRS.Fields(12), "yyyy-m-d")
                      FrmMain.lv.ListItems(i + 1).SubItems(14) = Format(adoPrimaryRS.Fields(14), "yyyy-m-d")
                      FrmMain.lv.ListItems(i + 1).SubItems(15) = Format(adoPrimaryRS.Fields(15), "yyyy-m-d")
                      FrmMain.lv.ListItems(i + 1).SubItems(16) = Format(adoPrimaryRS.Fields(16), "yyyy-m-d")
                      adoPrimaryRS.MoveNext
                      Next
                      Unload Me
            
     End If
    ===============================================
    代码我看不出那里有问题,可为什么显示不出模糊的数据??
      

  7.   


    select * from [info] where 被保险人 like '%" & trim(txtname.Text) & "%'试过这个了吗?