现在就是整合的VBA程序,我不知道该怎么写,
我也很清楚,需要用联合查询,现在就是要做一个循环。作者: huangqinyong 时间: 2008-4-20 15:38
楼主像挤牙膏,有想法一块说,别这个问题解决一部分,又冒出其它新问题。
你用是TXT文件导入,论坛里有TXT一次性导入一个ACC表的实例,你查一下;
另外,你怕一年的数据,读取出来再做成图表速度就非常慢?你何必导入到一个ACC里面,可以分日期导入多个ACC,然后,有一个主数据对这些数据源进行读取,即:多个按日期的ACC(里面只有表)+主控操作ACC(含导入和图表分析功能),这样即使你数据再多,也不会影响你的操作,不是与你的设想的要求接近了嘛。否则,你把数据全集中在一个ACC中,ACC也有一定的容量要求的,不是无限大的,而且,也同样存在读取速度的问题吗?这是我个人的建议,仅供参考。作者: canghua 时间: 2008-4-20 16:01
多谢楼上的。
听你这么一说,的确是可以通过这种形式完成。
呵呵。
谢谢了。作者: huangqinyong 时间: 2008-4-20 16:14
数据库设计思路是多种多样的,我有时候也会钻入死胡同,最后会卡在哪里。因此,当出现这种情况时,想想自己的这种思路是否出问题了,同时,在技术层面上有没有现有的资料可参考,这样可少走一些弯路。作者: canghua 时间: 2008-4-20 22:53
多谢大家的支持。我已经搞定了。
Sub union()
Dim str As String
Dim end_day As Date
end_day = #4/20/2008#
For i = end_day To end_day - 10 Step -1
If fExistTable("plmn_kpi" & Format(i, "yyyymmdd")) Then
str = "select * from plmn_kpi" & Format(i, "yyyymmdd")
Exit For
End If
Next
For i = end_day To end_day - 10 Step -1
If fExistTable("plmn_kpi" & Format(i, "yyyymmdd")) Then
str = str & " union select * from plmn_kpi" & Format(i, "yyyymmdd")
End If
Next
DoCmd.RunSQL ("select * into plmn_kpi from (" & str & ")")
End Sub
Function fExistTable(strTableName As String) As Integer
Dim db As Database
Dim i As Integer
Set db = DBEngine.Workspaces(0).Databases(0)
fExistTable = False
db.TableDefs.Refresh
For i = 0 To db.TableDefs.Count - 1
If strTableName = db.TableDefs(i).Name Then
'Table Exists
fExistTable = True
Exit For
End If
Next i
Set db = Nothing
End Function