2011-05-02 81 views
1

我需要一个代码,其中用户(粘贴数据表中的数据后),当他点击一个按钮时,数据将被插入到表中(我正在考虑在这里使用SQL语句)。除此之外,该表中的一个字段必须使用DCount函数进行计算。所以我需要计算每条记录。让我知道如果这个想法不明确,我需要进一步解释。另外,如果有更好的想法,请告诉。谢谢!按批次插入数据?

+0

说明数据表粘贴的功能:用户从Excel使用的数据,例如? – Alex 2011-05-04 14:00:38

+0

是的,来自Excel的数据将被粘贴到Access数据表。我有点解决它。事实证明,当数据从excel粘贴到访问时存在问题。你必须使用剪贴板粘贴数据才能访问。 – Ali 2011-05-05 03:18:16

+0

为什么不直接导入电子表格并避免强迫用户手动完成这么多工作? – 2011-05-06 03:57:28

回答

0

为什么不创建一些VBA来从电子表格中提取数据,将其插入到表格中,然后再次关闭excel。所有的按钮点击

看看下面的一个例子

Dim objApp As Excel.Application 
Dim objBook As Excel.Workbook 
Dim objSheet As Excel.Worksheet 
Dim sSQL As String 
Dim Path As String 

Set db = CurrentDb() 

Set objBook = Workbooks.Add(Template:=SheetLocation) 'Your excel spreadsheet file goes here where "SheetLocation is typed 
      Set objApp = objBook.Parent 
       Set objSheet = objBook.Worksheets("Sheet1") 'Name of sheet you want to View 
        objBook.Windows(1).Visible = True 
        objApp.Visible = True 

      objApp.DisplayAlerts = False 




    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long 
' connect to the Access database 
Set cn = CurrentProject.Connection 

' open a recordset 
Set rs = New ADODB.Recordset 
rs.Open "INSERT YOUR TABLE NAME HERE", cn, adOpenKeyset, adLockOptimistic, adCmdTable 
' all records in a table 
r = 2 ' the start row in the worksheet 
Do While Len(Range("A" & r).Formula) > 0 
' repeat until first empty cell in column A 
    With rs 
     .AddNew ' create a new record 
     ' add values to each field in the record 
     .Fields("INSERT THE TABLE FIELD TO DUMP DATA IN HERE") = Range("A" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("B" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("C" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("D" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("E" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("F" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("G" & r).Value 
     .Fields("REPEAT AS ABOVE") = Range("H" & r).Value 
     ' add more fields if necessary... 
     .Update ' stores the new record 
    End With 
    r = r + 1 ' next row 
Loop 
rs.Close 
Set rs = Nothing 
cn.Close 
Set cn = Nothing 
    objApp.Quit 
+1

这不是按照原始问题的要求,而是按照批次逐行进行。只要您使用适当的连接字符串,当您可以通过SQL获取数据时,自动化Excel也是没有意义的。 – 2011-05-07 20:42:37