小编Han*_*sUp的帖子

是否存在与SQL Server NewId()函数等效的Access?

我编写了SQL语句(存储在文本文档中),将数据加载到SQL Server数据库中.这些陈述需要每天重复.一些语句使用该NewId()函数来填充数据库中的键控字段,这很好.当我正在编写应用程序来复制这些语句时,我想使用Access查询和宏而不是将查询复制并粘贴到SQL Server中,从而节省了我每天的时间.一切正常,但我找不到任何将取代SQL NewId()函数的函数.是存在还是有解决方法?我正在使用SQL Server 2005和Access 2007.

ms-access sql-server-2005

5
推荐指数
1
解决办法
9678
查看次数

用于存储带有前导零的数字的适当数据类型是什么?

在Access 2003中,我需要在保持前导零的同时显示这样的数字:

  • 080000
  • 090000
  • 070000

我应该使用什么数据类型?

formatting ms-access string-formatting

5
推荐指数
1
解决办法
4098
查看次数

access:如何使用VBA检测是否打开了查询?

是否可以在access-2007中检测是否存在使用VBA的打开查询?

我正在打开这样的查询:

    stDocName = "Meeting_Reasons_Frequency"
  DoCmd.OpenQuery stDocName
Run Code Online (Sandbox Code Playgroud)

是否可以检测它是否开放?

sql ms-access vba access-vba

5
推荐指数
1
解决办法
4751
查看次数

我应该何时将VBA代码从表单模块移动到单独的模块?

我有很多实例,我从一个基本子表单开始,然后我有3个其他子表单构建在它上面,每个子表单添加一些不同的基本子元素.这意味着我有一个每个子表单的代码页,有很多重复.是否可以将公共元素放入单独的模块中,并且只在其代码页上留下与每个子表单相关的附加代码?这有什么性能问题吗?

ms-access ms-access-2007 access-vba

5
推荐指数
1
解决办法
4049
查看次数

针对Access 2010 DB的SQL语句不能与ODBC一起使用

我正在尝试对Access DB运行一个简单的语句来查找记录.

记录中的数据验证非常糟糕,我无法对其进行消毒.意思是,它必须保持原样.

我需要能够搜索带有空格和删除连字符的字符串.以下语句将直接在Access 2010中使用:

select * from dummy where Replace(Replace([data1],' ',''),'-','') = 'ABCD1234';
Run Code Online (Sandbox Code Playgroud)

通过PHP从ODBC连接运行它不会.它会产生以下错误:

SQL error: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'Replace' in expression., SQL state 37000 in SQLExecDirect
Run Code Online (Sandbox Code Playgroud)

在运行该函数的数据库中创建查询并尝试间接搜索其值会导致相同的错误:

select * from dummy_indirect where Expr1 = 'ABCD1234';
Run Code Online (Sandbox Code Playgroud)

我试图使用两个ODBC驱动程序.ODBCJR32.dll(03/22/2010)和ACEODBC.dll(02/18/2007).据我所知,这些应该是最新的,因为它与完整的Access 2010和Access 2010数据库引擎一起安装.

有关如何解决此错误并实现相同效果的任何想法都是受欢迎的.请注意,我无法以方式,形状或形式更改数据库.该间接查询是在另一个mdb文件中创建的,该文件具有从原始数据库链接的原始表.

*更新*

OleDB并没有真正影响任何事情.

$dsn= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\dummy.mdb;";
Run Code Online (Sandbox Code Playgroud)

我也没有尝试将它用作网络后端.我不是一个虐恋者.

我必须支持遗留系统,它确实使用Access作为后端.数据从其他旧系统填充,我必须将其集成到更现代的系统中.因此,在支持遗留系统的服务器上运行的Apache/PHP创建API.

我需要能够搜索具有字母数字大小写标识符的表,以获得唯一的数字标识符并绑定到生成器(访问中的自动编号).用户多年来一直使用垃圾箱(使用偶发符号进行不一致的数据输入),因此我唯一的解决方案是从字段值和搜索值中删除除字母数字之外的所有内容,并尝试对其执行LIKE比较.

如果不是支持访问的replace(),我可以使用哪些ODBC兼容函数做同样的比较?

sql ms-access odbc ms-access-2010

5
推荐指数
2
解决办法
3130
查看次数

Access 2013 VBA - 为控件设置新的Click事件

我到处寻找这个,这似乎是一个简单的修复,但我似乎无法找到解决方案.我在Access 2013表单中有几个Rectangle控件,我正在创建一个OnClick事件来处理它们.我已经研究了几种不同的方法,我认为我找到了最简单/最干净的方法.我将控件放在一个集合中,并为每个控件更改OnClick事件.这是我的问题:Access打开表单并识别我更改了控件的事件,但是一旦我单击该控件,它就会抛出错误并且不会执行该事件.

错误:

"作为事件属性设置输入的单击On Click会产生以下错误:您输入的表达式具有Microsoft Access无法找到的函数名称."

代码:

Private Sub Form_Load()
Dim m_colRectangle As Collection
Dim ctl As Access.CONTROL

Set m_colRectangle = New Collection
For Each ctl In Me.Controls
    If ctl.ControlType = acRectangle Then
        If ctl.Name = "shpTest" Then
            m_colRectangle.Add ctl, ctl.Name

            ctl.OnClick = "=TestClick()" ' <--- Error on this line

        End If
    End If
Next ctl
End Sub

Private Sub TestClick()
    MsgBox "Test"
End Sub
Run Code Online (Sandbox Code Playgroud)

或者,我shpTest.OnClick = "=TestClick()"在Form_Load事件中尝试了一个简单的操作,这产生了同样的错误.有人有主意吗?

ms-access vba access-vba ms-access-2013

5
推荐指数
2
解决办法
8073
查看次数

在不打开表单的情况下获取表单记录源

MS Access 是否允许在不打开表单本身的情况下获取表单的记录源值?我现在正在尝试优化我的代码,我所做的只是隐藏表单然后获取 Recordsource 表单查询,但是加载需要时间,因为某些表单在加载时触发代码。

ms-access vba

5
推荐指数
1
解决办法
4642
查看次数

参数太少。(1) 预期

我正在使用 VBA 将参数传递给存储的查询,但不断收到错误消息。这是存储的查询:

PARAMETERS Parm1 Long;
UPDATE tJ010_SRP4Codes INNER JOIN tZ100_VendorProfiles 
ON tJ010_SRP4Codes.SRP4Code = tZ100_VendorProfiles.JdeSRP4Code 
SET tJ010_SRP4Codes.Vendor = 'TEST'
WHERE ((([Parm1]=tZ100_VendorProfiles.VendorID)));
Run Code Online (Sandbox Code Playgroud)

这是调用查询的 VBA:

Dim Parm1 As Long
db.QueryDefs(!QueryName).Parameters(Parm1) = intVdrProfileID
db.Execute !QueryName, dbFailOnError
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在存储查询中使用和不使用“参数...”行。两种方式相同的错误。存储的查询本身可以正常工作,只是在从 VBA 调用时不行。

sql parameters ms-access vba

5
推荐指数
1
解决办法
129
查看次数

Split function to an array. Type mismatch error #13

I have a string with multiple email addresses separated by semicolons and want to split them into separate values.

Dim RecipientArray() As Variant 'I've also tried as string
Debug.Print txtRecipients.Value
RecipientArray = Split(txtRecipients.Value, ";") 'error happens here
For i = 0 To UBound(RecipientArray)
    Debug.Print RecipientArray(i)
Next
Run Code Online (Sandbox Code Playgroud)

arrays ms-access vba split type-mismatch

5
推荐指数
1
解决办法
7384
查看次数

VBA OpenRecordset 产生错误 3061

databasename = "qryDataExport"
Dim grpfield As String
grpfield = "Group"

Dim keys As DAO.Recordset
groupcmd = "SELECT [" & databasename & "].[" & grpfield & "] FROM [" & databasename & "] GROUP BY [" & databasename & "].[" & grpfield & "]"
Set keys = CurrentDb.OpenRecordset(groupcmd, dbOpenSnapshot)
Run Code Online (Sandbox Code Playgroud)

以上产生“错误 3061:参数太少。预期为 13。” 运行时。到目前为止,我的阅读已经严重暗示这可能是字段标题不正确的拼写问题或由定义 groupcmd 的行中的不正确引用引起的问题。

我为 databasename 尝试了以下格式:

CurrentDb.Queries.qryDataExport
CurrentDb!Queries!qryDataExport
Run Code Online (Sandbox Code Playgroud)

而以上"qryDataExport"。后两个不提供错误消息,而第一个不编译。我已经确认在主表和 qryDataExport 中都有一个名为 Group 的列。

正在使用的模块来自这个 Google 代码页

(编辑:截至此时的完整编辑模块:http : //pastebin.com/TJip86ED

从我所看到的情况来看,我认为这是数据库名称定义中一个非常明显的格式错误,但是我没有足够的 VBA 经验来发现它,而且我的想法已经用完了。任何建议将不胜感激。

EDIT2: …

ms-access vba

4
推荐指数
1
解决办法
1422
查看次数