标签: ms-access-2007

“MSysObjects”没有读取权限

我想在我的项目中使用 MS Access。我尝试与这段代码集成。

rs = st.executeQuery("SELECT name FROM MSysObjects where database <> ''");
Run Code Online (Sandbox Code Playgroud)

通过使用它,我尝试从 中获取所有表名MSysObjects。但我收到一个错误:

java.sql.SQLException:[Microsoft][ODBC Microsoft Access Driver] 无法读取记录;没有“MSysObjects”的读取权限。

请帮我解决这个错误。

java ms-access ms-access-2007 jakarta-ee

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

如何阻止用户直接访问表?

首先,我不是 MS Access 开发人员。但是我有一份新工作,必须做一些 MS Access 开发。我将与另一位有这方面经验的开发人员合作;至少比我多。

他向我展示的一件事是,用户将进入这个 MS Access 应用程序,该应用程序进入表单,无论他们在那里做什么,然后退出表单应用程序以直接访问数据库的表。(Access 应用程序是 SQL Server 2005 数据库的前端。)由于最终用户可以直接访问 SQL 表,所以您可以想象他们会遇到什么样的恶作剧。(Access 应用程序是由承包商编写的,该承包商未完成该应用程序。)

所以我的问题是:我们如何防止最终用户离开 Access 应用程序直接与 SQL 表交互?我认为这是可能的,但就像我说的,我不是 Office 开发人员,所以我不知道如何完成,甚至不知道我会寻找什么样的东西。

Access 应用程序是用 MS Access 2007 编写的。

ms-access ms-access-2007

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

访问数据库共享策略

您使用哪些策略让多个人在访问数据库上工作?

是否可以在线托管它并使其功能仍然可用而无需开发自定义前端?

MS Access作为一个软件有一些很好的功能,不需要任何编程配置:

  • 下拉列表 - 选择一个
  • 多重复选框列表 - 选择多个

即使在线托管,是否可以获得所有这些功能?我基本上想到了一种替代方法,可以使用上述GUI功能快速让人们使用数据,而无需使用webapp <> MySQL方式.

database collaboration ms-access sharing ms-access-2007

0
推荐指数
1
解决办法
2019
查看次数

访问 - 选择只有一列不同的不同记录

我有一个Access表,其中包含两列(ID和Active),其数据如下所示:

ID  |  Active
------------
123 | 0
124 | 0
125 | 0
123 | 1
314 | 1
948 | 1
Run Code Online (Sandbox Code Playgroud)

我想选择具有唯一ID(仅存在一次,而不仅仅是第一次存在)的不同记录,但我还需要Active值.如果我做了

SELECT DISTINCT ID from table1
Run Code Online (Sandbox Code Playgroud)

我得到了唯一的ID,但不是表格.它还返回123表中不唯一的.如果我做:

SELECT DISTINCT * from table1
Run Code Online (Sandbox Code Playgroud)

如果它们具有不同的Active值,我会获得重复的ID.我需要一个查询来获取唯一ID及其相关的Sheet值.它将返回以下内容:

ID  |  Active
------------
124 | 0
125 | 0
314 | 1
948 | 1
Run Code Online (Sandbox Code Playgroud)

我是否需要将它们放入两个不同的表并进行外连接?活动只有0或1.

select unique ms-access-2007

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

Access 2007运行时错误

我不确定这是否是发布此问题的正确网站,但在这里......

在Access 2007中,我收到错误"运行时错误'3061':参数太少.预期1"在这段VBA代码上:

Private Sub btnCheck_Click()

    Dim rs As Recordset
    Dim db As Database
    Dim id As String
    Dim query As String
    MsgBox ("one")
    Set db = CurrentDb()
    id = Me.UniqueID.Value
    query = "SELECT [Unique_ID] from tblPatients WHERE [Unique_ID] =" & id
    MsgBox (id)
    Set rs = db.OpenRecordset(query) <<<<<HIGHLIGHTED LINE

    If IsNull(rs) Then
        Me.lblCheck.Caption = "NEW"
    Else
        Me.lblCheck.Caption = "EXISTS"
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

数据源是表,而不是查询.任何帮助将非常感激!

ms-access vba runtime ms-access-2007

0
推荐指数
1
解决办法
803
查看次数

在MS ACCESS SQL插入查询中设置数据类型

我们如何在MS Access中的INSERT INTO/SELECT查询中显式转换数据类型?

示例查询:

INSERT INTO pStudents( pStudentID, pDate, pRate, pGrade )
SELECT sStudentID, sDate, sRate, sGrade
FROM sStudents
WHERE (((sStudents.sStudentID) Is Not Null);
Run Code Online (Sandbox Code Playgroud)

在这里,我想在插入pStudents之前从sStudents表转换字段到以下内容:

pStudentID = text
pDate = Short Date
pRate = Double
pGrade = text
Run Code Online (Sandbox Code Playgroud)

提前致谢

sql ms-access-2007

0
推荐指数
1
解决办法
9039
查看次数

MSAccess vba中的"另存为..."对话框:如何?

在MSAccess中,我有一个带按钮的面具.当用户单击该按钮时,表中的数据将导出到.txt文件中:

Private Sub Command_Click()
Dim Rst As DAO.Recordset
Dim AField As DAO.Field
Dim TempStr As String
Dim FileNumber
FileNumber = FreeFile
Open "c:\table.txt" For Output As #FileNumber
Set Rst = CurrentDb.OpenRecordset("Tabella1", dbOpenForwardOnly)
Do While Not Rst.EOF
    For Each AField In Rst.Fields
        If (AField.Name <> "ID") Then
            TempStr = TempStr & AField.value & "    "
        End If
    Next
    Print #FileNumber, Left(TempStr, Len(TempStr) - 1)
    TempStr = ""
    Rst.MoveNext
Loop
Rst.Close
Set Rst = Nothing
Close #FileNumber
End Sub
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我会显示一个"另存为..."对话框,允许用户选择导出数据的文件.

可能吗?

dialog export ms-access-2007 access-vba

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

从第二个左连接突然"无效使用Null"

我在Access中有这个SQL查询,工作正常:

SELECT TableA.FieldA As [Code],
   Count(TableA.FieldC) AS [Count]
FROM ((MainTable)
   LEFT JOIN TableA ON MainTable.FieldB = TableA.FieldB)
WHERE (((MainTable.DateOf)>=#1/1/2012#))
   AND Clng(TableA.FieldA) >= 119593451
   AND Clng(TableA.FieldA) <= 119593461
GROUP BY TableA.FieldA;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试另一个左连接时,就像这样:

SELECT TableA.FieldA As [Code],
   Count(TableA.FieldC) AS [Count]
FROM ((MainTable)
   LEFT JOIN TableA ON MainTable.FieldB = TableA.FieldB)
   LEFT JOIN TableB ON TableA.FieldD = TableB.FieldD
WHERE (((MainTable.DateOf)>=#1/1/2012#))
   AND Clng(TableA.FieldA) >= 119593451
   AND Clng(TableA.FieldA) <= 119593461
GROUP BY TableA.FieldA;
Run Code Online (Sandbox Code Playgroud)

我在FROM claused中使用括号基于此:http://nm1m.blogspot.com/2007/10/multiple-left-joins-in-ms-access.html

它给出了错误Invalid use of Null,这对我来说没有意义,因为我没有执行空检查等.这里有什么问题?我正在尝试拉出TableB中的一个字段来显示(但还没有把它放在选择部分).

sql ms-access-2007

0
推荐指数
1
解决办法
999
查看次数

MS Access中的"验证规则",用于仅包含数字的字符串列

是否可以在MS Access中为一列只允许数字的文本/字符串数据类型设置"验证规则"?还有一个只允许使用字母的"验证规则"?

database ms-access ms-access-2007 ms-access-2010 ms-access-2013

0
推荐指数
1
解决办法
5681
查看次数

删除名称中包含<String>的所有表

我正在寻找一个函数或子函数(在模块中),我可以调用它来删除名称中包含"tbl"的所有表.我发现几段代码无法正常工作.


澄清我的问题:

我在Access工作.在我的项目中,我使用VBA生成一些表.我事先不知道这些表的名称是什么.我知道我想要删除的表("DROP")在其名称中有"tbl".

我正在寻找的代码是这样的:

DoCmd.runSQL (DROP ALL TABLE LIKE '%tbl%')
Run Code Online (Sandbox Code Playgroud)

我知道这段代码不起作用,但它应该对我想要实现的内容有所了解

ms-access vba ms-access-2007 access-vba

0
推荐指数
1
解决办法
3625
查看次数