小编Ton*_*ews的帖子

访问VBA - 相对文件引用

在已经构建了几个mda库文件,然后我从我的主Access应用程序引用(即使用IDE中的工具 - >引用).

有没有办法可以使这些参考相对而不是绝对.我问的原因是,如果所有三个文件(主应用程序和两个mda文件)可以简单地放在任何目录中并且无需更改引用即可工作,这样可以很容易地在用户的计算机上进行设置. .

谢谢

ms-access vba access-vba

6
推荐指数
2
解决办法
1万
查看次数

条件表达式中的数据类型不匹配| Access,OleDb,C#

我使用C#从MS Access读取/更新数据.我的代码是:

public static void UpdateLastLogin(int userid, DateTime logintime) ///logintime = DateTime.Now
{
    string sql = @"UPDATE [Customers] SET [LastLogin]=?";
    OleDbParameter[] prms = new OleDbParameter[] { 
     new OleDbParameter("@LastLogin",logintime)
    };
    using (DAL dal = new DAL())
    {
        dal.UpdateRow(sql, false, prms);
    }
}
Run Code Online (Sandbox Code Playgroud)

谈到日期,我遇到了麻烦.这会引发"条件表达式中的数据类型不匹配".错误.(为了保持简单,我删除了WHERE子句)我是否考虑将[LastLogin] =?括起来?单引号的问号,#符号..没有帮助.任何有关如何使用Access和OleDb提供程序处理DateTime对象的线索将不胜感激.

提前致谢.

c# asp.net oledb ms-access datetime

6
推荐指数
2
解决办法
2万
查看次数

在Access中导入.sql文件

我需要导入到Access使用MySql创建的.sql数据库备份文件.

有没有办法执行此操作?

mysql sql ms-access

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

比较两个大型SQL查询

我正在使用新版本替换旧的不整洁的SQL查询,因为它未能包含它应该具有的多个行.

新查询肯定包含这些缺失的行,但我想完全确定它还包括原始查询中的所有行.

这两个查询使用完全不同的表.每个查询大约是14000行.

是否有我可以编写的查询检查QueryA是否包含QueryB没有的任何行?

sql

6
推荐指数
1
解决办法
1万
查看次数

当一列是文本而另一列是数字时,如何在Access中连接两个表?

我有一个访问程序正在使用一些链接的ODBC表.我原来有一个包含以下INNER JOIN的查询:

FROM Neptune_FN_Analysis 
INNER JOIN Neptune_prem ON Neptune_FN_Analysis.PremID = Neptune_prem.premice_id 
Run Code Online (Sandbox Code Playgroud)

这个工作正常,直到Neptune_prem.premice_id列从数字更改为文本数据类型.所以现在我需要一种方法在两列上使用INNER JOIN,一个是数字,另一个是文本.

请记住,我不能简单地更改链接的ODBC表正在查看的表中的数据类型.

如果这是不可能的或一定数量的代码我的另一个逻辑选项是进行查询以创建一个本地表,我可以使用Neptune_FN_Analysis表中的所有相同数据编辑,并在该查询之后的代码中编辑列I我正在加入以输入文字.如果它是合理的,我宁愿只修改这个SQL查询.

sql ms-access join ms-access-2007 access-vba

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

如何使用vba压缩MS Access数据库,同时打开数据库

我正在运行几个VBA代码模块.在运行过程中,代码崩溃,因为Access的最大大小为2GB; 但是,如果我在那时压缩数据库它只有200MB.

在代码运行时是否可以定期压缩数据库?

ms-access vba

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

MS Access链接表中可以为空的bool字段

看起来我不是唯一一个有这个问题的人,但似乎没有对这个问题感到满意.

我在Access 2010中工作,使用链接表到SQL Server 2005数据库(通过SQL Server ODBC管道).在该表中,其中一个布尔字段被标记为可为空,并且该表中的多个记录实际上在该字段中具有空值.到现在为止还挺好.

在Access中,只要打开链接表,Access就会显示0(假)而不是空白单元格(问题#1).如果您尝试修改记录中的任何内容,则会收到一条错误消息,指出该记录已被其他人修改,并且您的更改无法保存.最后一个问题是由于Access不能容忍可以为空的bool字段,并且在尝试保存值时有点疯狂.

我的研究表明,这可能与Access在后台使用Jet连接到SQL Server数据库有关,而Jet显然不支持可空的bool.似乎没有办法配置Jet来支持这一点(尽管如果你在代码中连接,可能会有).我还认为MS正在用Office 2010中使用的另一种技术取代Jet(ACE,我认为),但无法判断这是否是Access实际使用的内容.在任何一种情况下,我都找不到关于可空bool的可配置选项.

最后,这个问题似乎很久以前就已经提到了MS,但是他们的结局没有答案:https://connect.microsoft.com/SQLServer/feedback/details/617339/null-bit-fields-produce -spurious-MS-访问错误-当-用最原生的ODBC驱动程序?WA = wsignin1.0#标签

我想知道是否有其他人遇到这个并找到了解决方案.在你建议它之前,关闭可空选项并将所有空值设置为'false'在我们的例子中并不是一个真正的选择.对我们来说,null实际上是一个有效状态,与'false'非常不同.

谢谢!

sql-server ms-access nullable ms-jet-ace

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

在VBA/Access 2003中设置后无法从字典中提取值

我正在编写一个脚本,它可以提取一些患者数据并生成XML导出.

每个患者记录都有一个相关的医生 - 但不是在每个记录中重复医生的详细信息,我想我会在患者记录中设置医生ID,然后在文档底部的不同部分中包含医生列表.

我需要做的一件事是在患者记录中包含医生的GUID,但实际的数据库关系是本地非唯一ID.我认为最好的方法是使用字典将GUID映射到本地ID列表中.

无论如何,长话短说,这里是构建需求列表的位:

While Not PatientRec.EOF
    Set DoctorRec = MyDB.OpenRecordset("Select Lng_Key, Txt_GUID From Tbl_LU_DoctorDetail Where Lng_Key = " & PatientRec![Lng_Doctor])

    While Not DoctorRec.EOF
        If (IsNull(DoctorRec![Txt_GUID])) Then
            DoctorRec.Edit
            DoctorRec![Txt_GUID] = CreateGUID()
            DoctorRec.Update
        End If

        DoctorList.Add DoctorRec![Lng_Key], DoctorRec![Txt_GUID]

        ' outputs something like '5:{03f50fe1-a0a4-4733-906a-771e22845ea6}
        MsgBox (DoctorRec![Lng_Key] & ":" & DoctorList.Items(DoctorRec![Lng_Key]))

        DoctorRec.MoveNext
    Wend
Wend

' outputs nothing!
MsgBox (DoctorList.Item(5))

' but there is something in there???
MsgBox (DoctorList.count)
Run Code Online (Sandbox Code Playgroud)

我也尝试使用CStr将id转换为字符串,但使用DoctorList.Item("5")获得相同的结果

更糟糕的是,当我尝试:

Dim v As Variant
For Each v In DoctorList.Keys
    MsgBox (v …
Run Code Online (Sandbox Code Playgroud)

ms-access vba dictionary access-vba

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

使用VBA在Access表中记录计数

我正在尝试获取表的记录数,如果count大于17,则创建一个新表.

Dim rst As DAO.Recordset
strSQL = "Select * from SKUS"
Set rst = db.OpenRecordset(strSQL)

If rst.RecordCount > 17 Then
    Set tdf = db.CreateTableDef("161-0363")

    Set fld = tdf.CreateField("SKUS", dbText, 30)
    tdf.Fields.Append fld

    Set fld = tdf.CreateField("Count", dbInteger)
    tdf.Fields.Append fld

    db.TableDefs.Append tdf
End If
Run Code Online (Sandbox Code Playgroud)

此代码不会创建新表,但是当我将if语句更改为this时,它的工作原理如下:

...
If rst.RecordCount > 0 Then
    Set tdf = db.CreateTableDef("161-0363")
...
Run Code Online (Sandbox Code Playgroud)

所以RecordCount正在返回1,我想.为什么会这样?我知道桌子上有18行.
谁能帮我吗?

ms-access access-vba

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

如何从Microsoft Access中的"附件"字段查询附件数?

我的一个用户有一个Microsoft Access数据库,在表中他有一个附件字段.在他的一个查询中,他想要返回该字段包含的附件​​数量.我试图让这个工作无济于事.我已经尝试创建一个VBA模块并将其传入该字段,但它对我有误.我已经尝试将参数创建为DAO.Recordset,DAO.Field,Attachment等.

我也试过像[MyField] .AttachmentCount那样查询字段.

ms-access access-vba

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