我想要做的是,在Excel中,使用VBA将数据推送到现有的Access表.我已经能够做到这一点,但我有一个小打嗝.在我将数据推送到访问之前,我想清除Access表上的当前数据,因此当Excel中的新数据进入时,它是Access表中的唯一数据.我真的不知道如何为Access编写代码,因为该类已经在VBA for Excel上.我尝试了几种不同的方法,每次都不起作用.例如,似乎应该工作的代码是
DoCmd.RunSQL "DELETE tblName.* FROM CoversheetTableFourthAttempt
Run Code Online (Sandbox Code Playgroud)
但是我告诉我定义一个对象时出错.
如果你可以帮助我,我会真的很喜欢它
我把我的代码放在下面以供参考.
Sub AccessFourthMonth()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\Users\Kent\Documents\MBA\Winter 2009 Semester\MBA 614\Final Project\shilded\testdatabase.mdb"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "CoversheetTableFourthAttempt", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 2 ' the start row in the worksheet
Do While Len(Range("A" & …Run Code Online (Sandbox Code Playgroud) 我正在使用MS Access 2003 SP3,我需要写一个声明如下:
我有两列,一个是[MaxOfDate]字段,另一个是[Date-Inidicator]字段.对于其中几行,Date-Indicator为空白.我想告诉MS Access,如果[MaxOfDate]字段的日期为""99991231",则在[Date-Indicator]中输入"A".如何在IF语句中写入?
谢谢你,黛比
我有这个表customerDetail,其中有一个字段c_type,其中"a"代表"active"而"d"代表"not-active".现在我必须在同一查询中找到它们的计数.
我用过这些但没有结果.
SELECT Count(c_type) AS Active, Count(c_type) AS Not_Active
FROM customerDetail
WHERE c_type="a" OR c_type="d"
Run Code Online (Sandbox Code Playgroud)
当然我知道它看起来很脏,但我也尝试了这个,但这也没有用 -
SELECT
Count(customerDetail.c_type) AS Active,
Count(customerDetail_1.c_type) AS Not_Active
FROM customerDetail INNER JOIN customerDetail AS customerDetail_1
ON customerDetail.Id=customerDetail_1.Id
WHERE (customerDetail.c_type="a") AND (customerDetail_1.c_type="d")
Run Code Online (Sandbox Code Playgroud)
但是它也没有用,所以有人可以告诉我,我应该如何知道同一查询中活动和非活动的计数?
我刚刚接管了访问网站,我试图弄清楚为什么当我尝试更新一张表中的记录时,它向我提供了这条消息。
“Microsoft JET 数据库引擎错误‘80040e21’
You cannot add or change a record because a related record is required in table 'Members'. "
Run Code Online (Sandbox Code Playgroud)
我如何找出相关记录是什么。
感谢您的帮助
我正在实施审计日志以记录数据库更改的简要说明.我的审计表包括自动编号PK,empID(编号),描述(备忘录)和auditDate(日期/时间).正确插入我的empID和描述而不会抛出错误,但我的日期/时间没有被插入.我认为这可能不像错位的引号那么简单.我的VBA代码如下:
在afterInsert事件中:
Dim strQuery As String
'Dim js As Integer
Dim currDateTime As Date
currDateTime = Now()
strQuery = "INSERT INTO Audits ([emp Number], Description, dateofAudit) VALUES (" & Me.empID & ", '" & "insertion" & "'," & currDateTime & " )"
CurrentDb.Execute (strQuery)
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我可以很好地得到前三个值,但是当我尝试插入日期时间时,我遇到了问题.任何输入都表示赞赏.希望这不像错放引号那么简单,因为我在提交此问题之前尝试了4种引号放置变体:)
我正在寻找一种方法来搜索和替换整个单词.因为在我的情况下,整个单词不仅可以通过空格分隔,而且可以分隔.,;:/ /?我无法想到一种有效的编码方式.
基本上,我想做这样的事情
replace([address], ***--list of separators, like .,;:/?--*** & [replacewhat] & ***--list of separators, like .,;:/?--*** ," " & [replacewith] & " ")
Run Code Online (Sandbox Code Playgroud)
我不知道如何立即传递一个分隔符列表而不是为每个分隔符组合运行一次替换函数(结合300个单词我正在替换它将构成疯狂的查询数量)
好吧,之前我曾经问了一个类似的问题,但我花了大约八个小时(真的)试图解决这个问题而没有运气.
因此,我制作了这个大型Access表单来修改"联盟"数据,该数据有一个记录选择器来更改联盟.我将大表格分成导航表格,因此不会在一页上.但是,现在当您切换标签时,它总是会恢复为修改第一个联合体.我想在不同的标签中保持一致.
现在,我已经阅读了表单和子表单控件以及链接字段,但是我无法将每个子表单(即每个选项卡)成功链接到更大的导航表单.整个"链接主域/链接子域"的东西甚至没有出现.是什么赋予了?每个人都不是主表格的子表格吗?它就好像那里没有层次结构.
这里有一些图片来说明我的观点.例如,在我的"评估"选项卡上,我能够包含一个子表单,该子表单能够链接到其主表:
但是,我无法将整个评估子表单链接到更大的导航表单.该选项甚至不存在,更改更大表单上的记录不会更改评估子表单中的记录:
有谁知道如何解决这个问题?
我希望将SQL Server中的几千条记录复制到C#中的Access中.另一个方向使用SqlBulkCopy.有没有相反的做法?
我正在尽力避免在每条记录中循环遍历每个字段并构建一个令人发指的Insert声明,不仅要花费很长时间才能运行,而且如果有任何变化,可能会崩溃.
我喜欢在Access 2010数据库中创建和更新表,查询,表单等时创建列表.
从理论上讲,这可以通过一些VBA代码实现,但不幸的是,这段代码显示了错误的信息.我自己测试了它,微软在这里证实了这一点:https://support.microsoft.com/en-us/kb/299554
Access在导航面板上显示正确的修改日期,但似乎无法通过VBA或任何表格访问此信息.前段时间我在互联网上搜索过这个问题,有几个人证实了这个问题,但没有人得到答案.
现在我的问题:有人知道如何从Access导出正确的修改日期信息(显示在导航面板中)?
如果这是不可能的(我目前的研究表明这一点),是否有人知道将一个数据库文件与另一个数据库文件进行比较并显示表格,查询,表格等的所有差异的可靠方法?
这完全是关于Access对象的设计,而不是关于表中存储的任何数据.
我有一个myRegex函数,可从字符串中提取正则表达式。当我运行使用该函数的查询时,在多行上出现以下错误。
找不到方法或数据成员。
这是正则表达式函数:
Function myRegex(ByRef myString As String, ByVal pattern As String) As String
Dim rgx As New RegExp
Dim colMatches As MatchCollection
With rgx
.pattern = pattern
.ignoreCase = True
.Global = False
.Multiline = False
Set colMatches = .Execute(myString)
End With
If colMatches.Count > 0 Then
myRegex = colMatches(0).Value
Else
myRegex = ""
End If
End Function
Run Code Online (Sandbox Code Playgroud)
这是我使用的查询:
SELECT myRegex(phone,"[0-9]+")
FROM table1
Run Code Online (Sandbox Code Playgroud)
我检查了以下参考库:
ms-access ×10
access-vba ×5
vba ×3
asp-classic ×1
c# ×1
datemodified ×1
excel ×1
excel-vba ×1
if-statement ×1
replace ×1
sql ×1
sql-server ×1
t-sql ×1