我试图通过按钮进行查询; 虽然它在JOIN操作中显示语法错误.当我点击它...我找不到语法错误,也许你们可以帮助我吗?这是代码:
Set qdef = CurrentDb.CreateQueryDef("UnitMoreInfoQ", _
"SELECT UnitsT.*, WorkOrdersQ.CustomerName, WorkOrdersQ.ClientName, WorkOrdersQ.WorkOrderNumber " & _
"FROM UnitsT inner join workordersQ on WorkOrdersT.WorkOrerID=WorkOrdersQ.WorkOrderID " & _
"WHERE UnitsT.UnitID = " & txtWorkOrderID.Value)
Run Code Online (Sandbox Code Playgroud) 所以这是交易,我有一个存储过程,接受三个输入参数,并有一个输出参数.最初它看起来像这样:
CREATE PROCEDURE upGetTestIDForAnalyte @ThisWOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @TestId int OUT
AS
SELECT @TestID = t1.TestID
FROM tblWOSampleTest t1 JOIN tblTest t2
ON t1.TestID=t2.TestID
WHERE (t1.SampleID = @SampleID) AND (t2.Analyte = @Analyte) AND (t1.WOID = @ThisWoid)
SELECT @TestID =ISNULL(@Testid,0)
Go
Run Code Online (Sandbox Code Playgroud)
它在MS-SQL Server Management Studio 2008上执行时效果很好,但在MS-Access 2010(VBA)中调用时,我会收到以下错误:将nvarchar值'1406-00591'转换为数据类型int时转换失败.(我的@ThisWoid输入)
所以基本上我发布了一个关于这个的问题,我发布了所有内容(我称之为存储过程/表columns..ect的数据类型),我被告知一切看起来很好,它可能与我的值有关分配给我的输入参数,如果有人好奇,我会将链接发布到页面底部的上一个问题.我找到了一种循环漏洞,通过使用'LIKE'代替'='来摆脱这个错误,因为数据类型约束对于'LIKE'并不那么严格(我不知道最好的解决方案,但我很想要取得进展).无论如何,现在我的SQL代码如下所示:
CREATE PROCEDURE upGetTestIDForAnalyte2 @ThisWOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @TestId int OUT
AS
SELECT @TestID = t1.TestID
FROM tblWOSampleTest t1 JOIN tblTest t2
ON t1.TestID=t2.TestID
WHERE (t1.SampleID LIKE @SampleID) AND (t2.Analyte Like @Analyte) …Run Code Online (Sandbox Code Playgroud) 有人能发现语法错误吗?我觉得我拥有必要的OpenRecordset方法的所有运算符.
The error says "Syntax error (missing operator) in query expression '(Date: = 10/31/2014)'.
该class变量等于该字符串"007-14 A"
下面是错误来自的代码行:
Set rec = db.OpenRecordset("SELECT '" & class & "' FROM tblCalendar WHERE (Date: = 10/31/2014)")
我是否对错误的内容有错误的引用,或者它可能与字段Date的标题中的分号有关?
class是我想要选择的字段.所以实际的字段标题是007-14 A.
我有大约600个带有标题的文本文件,我真的不想将它们逐个手动导入MS Access.
我不想将文本文件附加到一个Access表中.如果我有600个文本文件,我希望结果是600个访问表.
我为此搜索了高低,我最接近的是一些代码,它将获取我的文本文件并将它们附加到一个访问表中.我不希望这样.
以下存储过程不起作用,我已经尝试了一切没有成功.请帮忙.
Sub Create_View()
Dim conn As ADODB.Connection
Set conn = Application.CurrentProject.Connection
conn.Execute "CREATE VIEW vw_RobPS AS " & _
"SELECT sid, " & _
"Lname, " & _
"Fname, " & _
"EmpStatus, " & _
"[Peax Update as of 6-18-15], " & _
"[Peax Update Date] " & _
"FROM Master_06-18-2015" & _
"WHERE [Peax Update Date] as PeaxUdDt is not null; "
Application.RefreshDatabaseWindow
ExitHere:
If Not conn Is Nothing Then
If conn.State = adStateOpen Then conn.Close
End If …Run Code Online (Sandbox Code Playgroud) 编辑:请参阅下面的评论,了解部分解决方案.
编辑2:我找到了一个关闭VBA编辑器的适当解决方案,但只想知道是否有人知道如何让它在整个时间内完全不可见.我发现的东西可以满足我的需求,但我会为任何想要详细说明其他方法或扩展我的方法的人留下这个主题.
原帖:我有一个创建表,查询和表单的函数.对于表单,它复制模板表单并调用一个动态替换表单VBA代码的函数.我创建的下面的函数很有用,但是,如果我没有在编辑器中打开类对象表单,我得到运行时错误'2516':"Microsoft Access无法找到模块'SPCInputFormVBA.',其中SPCInputFormVBA是类对象名称的变量.为了进一步详细说明行为,如果我关闭了编辑器,只要模块或类对象在编辑器中打开,它仍然可以工作.我希望能够激活编辑器中的相应Form_xyz对象没有编辑器打开,这样我就可以使用这个函数来做一堆东西了.我使用的是模板形式,因为嵌入了很多东西并且有很多东西在继续我可以更改记录源和其他各种内容的形式,但到目前为止VBA部分对我来说是难以捉摸的.我认为打开对象很容易,但是我遇到了很多麻烦而无法找到方法描述我的问题导致我找到解决方案.
Public Function InputFormVBA(SPCInputFormVBA)
DoCmd.OpenModule (SPCInputFormVBA)
Dim i As Integer
With Application.Modules(SPCInputFormVBA)
For i = 1 To .CountOfLines
If InStr(.Lines(i, 1), "TempTable") > 0 Then
' .ReplaceLine i, " If DCount( ""serial"", """ & tblName & """, _"
End If
'If Instr(.Lines(i, 1), "
Next i
End With
End Function
Run Code Online (Sandbox Code Playgroud)
我最接近的是尝试使用此功能的各种事情,以帮助我了解Access如何对我在网上找到的不同潜在解决方案做出反应:
Sub PrintOpenModuleNames()
Dim i As Integer
Dim modOpenModules As Modules
Set modOpenModules = Application.Modules
For i = 0 To modOpenModules.Count - 1
Debug.Print modOpenModules(i).Name
'DoCmd.OpenModule (modOpenModules(i).Name) …Run Code Online (Sandbox Code Playgroud) 我在表单中有一个子表单。默认情况下,当我更改子窗体中的记录时,当我在子窗体外部单击时,该记录将自动保存。我在主窗体上添加了一个按钮,用于手动将记录保存在窗体和子窗体中,因此我取消了在子窗体出口处的保存以避免写冲突。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.Undo
Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)
使用此代码,在子窗体外部单击不仅会取消保存,还会清除我在子窗体中输入的所有内容。这意味着我必须先取消子表单更改才能保存表单。
如何在保留所有编辑直到退出主窗体的同时取消子窗体中的自动保存?
我Sheet 1在Excel中有一些列.我需要通过匹配Access和Excel中的列标题将数据导入Access.以同样的方式,我想将多个Excel文件导入Access,根据Access中的列(字段)将数据附加到现有表.
这甚至可能吗?如果是这样,我该怎么做呢?
我必须限制用户输入任何空格或任何反斜杠的字符串.应该允许所有人物休息.我之前尝试使用以下字符串进行正则表达式.
请更正或帮助我使用新的正则表达式来帮助我.我在访问中这样做 - vba
[^0-9a-zA-Z~@#$%^&*()_?<>,.[]{}|-+=].
我是使用正则表达式的新手.
问题解决了.
[\s \\ \/]
Run Code Online (Sandbox Code Playgroud) 我在Excel 2010工作表中有三个单元格,例如a1,a2和a3.每次用户运行我的Excel宏时,我都需要它来获取这些单元格中的信息并将其附加到现有的Access DB文件中.这就是db文件中的所有内容,只是一个运行列表.
所以,我不想从Access导入.我希望这一切都发生在Excel方面,最好不要打开访问权限.这是可能的还是我可以告诉我的丈夫忘掉它?
如果有可能,有人能给我一个关于如何去做的线索吗?或者在哪里了解它?我对Excel中的VBA很满意,但对Access或甚至是数据库都没有经验.
谢谢!
在Access中的更新操作期间是否可以进行双内连接?
以下代码不适用于我:
UPDATE [TableA]
INNER JOIN [TableB] ON [TableB].Field1= [TableA].Field1,
INNER JOIN [TableC] ON [TableC].Field2 = [TableB].Field2
Set
[TableA].Field3 = 'Test'
where [TableC].Field4 = 0
Run Code Online (Sandbox Code Playgroud) 我需要一个创建一个VBA函数,从我写这个java方法的字符串中提取文本
public static String extract(String str) {
String s = str.substring(str.indexOf("'"),str.lastIndexOf("'"));
String fg = s.substring(s.indexOf("'")+1, s.indexOf("to")-2);
String sg = s.substring(s.indexOf("to")+4);
return sg;
}
Run Code Online (Sandbox Code Playgroud)
做我想要的但是在VBA中我找不到等价于indexOf和lastIndexOf而且最重要的是如何使用字符索引来模仿java子串而不使用长度来提取,如在VBA中.任何人都可以帮助我.
提前致谢.
我有一个名为Product_Id(类型字符串)的字段,其长度为7并从0开始.但是当通过VBA插入文本类型的表字段时,零未插入.
这是插入查询:
dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES (" & prodID & ");"
Run Code Online (Sandbox Code Playgroud) access-vba ×13
ms-access ×9
vba ×9
sql ×4
excel ×2
excel-vba ×1
inner-join ×1
java ×1
regex ×1
sql-server ×1
string ×1
text-files ×1