Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请各位大侠帮忙看看哪里出错了,谢谢

赵伟  发表于:2008-08-20 20:30:40  
复制

导出子窗体数据出错,,

下面是子窗体查询代码:

Private Sub Command79_Click()
Dim strWhere As String
strWhere = ""
If Not IsNull(Me.型号) = True Then
  strWhere = strWhere & "([partNO] like '*" & Trim(Me.型号) & "*') AND "
End If
If Not IsNull(Me.ghs) Then
  strWhere = strWhere & "([supplierName] like '*" & Trim(Me.ghs) & "*') AND "
End If
If Me.Option2 = True Then
  strWhere = strWhere & "([Payment]=false) AND "
End If
If Not IsNull(Me.buyer) Then
  strWhere = strWhere & "([BuyerName] like '*" & Trim(Me.buyer) & "*') AND "
 
 
End If
If Not IsNull(Me.StarDate) Then
strWhere = strWhere & "([date] >= #" & Me.StarDate & "#) and "
End If

If Not IsNull(Me.EndDate) Then
strWhere = strWhere & "([date] <= #" & Me.EndDate & "#) and "
End If

If Len(strWhere) > 0 Then
strWhere = Left(strWhere, Len(strWhere) - 5)
End If

'-----------------
' 开始日期是否大于结束日期

 If IsNull(Me.StarDate) Or IsNull(Me.EndDate) Then
      Me.[子窗体].Form.Filter = strWhere
      Me.[子窗体].Form.FilterOn = True
  
    Else
  If Not IsNull(Me.StarDate) Or IsDate(Me.StarDate) And Not IsNull(Me.EndDate) Or IsDate(Me.EndDate) Then
       If CDate(Me.StarDate) > CDate(Me.EndDate) Then
         MsgBox "你选择的开始日期晚于结束日期,条件不成功,请重新选择", 64, "日期选择错误!"
      
       Exit Sub
      
       End If
      
      End If
  End If

Me.[子窗体].Form.Filter = strWhere
Me.[子窗体].Form.FilterOn = True

 

End Sub

 

 

 

 

 

导出为EXCEL的代码为

 

 

  Dim qdf As DAO.QueryDef
    Dim strWhere, strSQL As String
   
    strWhere = Me.[子窗体].Form.Filter
    If strWhere = "" Then
        '没有条件 时
        strSQL = "SELECT * FROM [采购查询]
    Else
        '有条件时
        strSQL = "SELECT * FROM [采购查询] WHERE " & strWhere
    End If
   
    Set qdf = CurrentDb.QueryDefs("查询结果")
    qdf.SQL = strSQL
    qdf.Close
   
    Set qdf = Nothing
   
    DoCmd.OutputTo acOutputQuery, "查询结果", acFormatXLS, , True

   
Exit_Command81_Click:
    Exit Sub

Err_Command81_Click:
    MsgBox Err.Description
    Resume Exit_Command81_Click
   
End Sub

 

Top
竹笛 发表于:2008-08-20 20:39:46
在代码中设置断点,一行一行地调试,就可以看出错在哪里了。

george 发表于:2008-08-21 11:05:14

呵呵,竹兄也有偷懒的时候。

 

1. Trim() 在这里做什么用?

 

2. Set qdf = Nothing    'Nothing 是什么意识,NULL吗?

 

3. DoCmd.OutputTo acOutputQuery, "查询结果", acFormatXLS, , True   '通常我是用宏来处理的,然后用DoCmd.RunMacro ""调用它

 

4. 最后一个问题,到底是查询效率高还是直接VBA SQL语句效率高?



总记录:2篇  页次:1/1 9 1 :