使用Excel数据更新Access数据库中的2个字段,可能还有宏

时间:2012-07-10 10:37:05

标签: vba ms-access ms-access-2007 excel-2007

在我的主数据库中,我有一个包含两个日期和ID号的小表。我使用此表来更新查询并进行一些分析。该表如下所示:

Number   | Date  
1        | 09.07.2012.  
2        | 10.07.2012.

我想做的是创建一个excel文件,在启动后弹出一个表单。

该表单应包含2个字段和2个按钮。在那些字段中,我输入了2个日期(带有日期选择器或其他),并且使用第一个按钮我在Access中更新了提到的表,其中包含新数据(删除旧日期并使用新数据更新),另一个我在Access数据库中启动预定义宏

这有多复杂?你能指导我解决这个问题吗?一些示例代码非常好。

Command25_Click() 
CurrentDb.Execute "DELETE * FROM Datumi" 
Dim tbl As Recordset 

Set tbl = CurrentDb.OpenRecordset("Datumi") 
tbl.AddNew tbl!brojka = "1" 
tbl!datum = Text8.Value 
tbl.Update 
tbl.AddNew tbl!brojka = "2" 
tbl!datum = Text10.Value 
tbl.Update

1 个答案:

答案 0 :(得分:0)

这在一定程度上已经走了很长一段路,因为我正在使用更新日期来演示如何运行已保存的查询。

'SQL for stored query, this assumes you
'will be updating based on some key
UPDATE DatesTable t
SET t.Date1 = [@Date1], t.Date2 = [@Date2]
WHERE t.aAuto=[@Key]

'Code for Excel
'You could set a library reference to 
'Microsoft ActiveX Data Objects x.x Library
Dim cmd As Object
Dim cn As Object

Set cmd = CreateObject("ADODB.Command")
Set cn = CreateObject("ADODB.Connection")

'Connection string, see also http://connectionstrings.com
strCon = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=z:\docs\test.accdb"

cn.Open strCon

'Name of the saved query
cmd.CommandText = "UpdateDates"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = cn

'Some parameters.
'http://www.w3schools.com/ADO/met_comm_createparameter.asp
'Make sure you get the type right, you will find details here:
'http://www.w3schools.com/ADO/ado_datatypes.asp
'You will find direction here:
'http://www.w3schools.com/ado/prop_para_direction.asp

'Make sure you get the order right
'adDate = 7, adInteger = 3, adParamInput = 1
cmd.Parameters.Append cmd.CreateParameter("@Date1", 7, 1, , txtDate1)
cmd.Parameters.Append cmd.CreateParameter("@Date2", 7, 1, , txtDate2)
cmd.Parameters.Append cmd.CreateParameter("@Date2", 3, 1, , MyUniqueKey)

'recs : return for records affected
'adExecuteNoRecords = 128 : no records are returned by this query, 
'so this increases efficiency
'http://www.w3schools.com/ADO/ado_ref_command.asp

cmd.Execute recs,,128

'Did it work?
MsgBox "Records updated: " & recs