我想在我的项目中使用 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”的读取权限。
请帮我解决这个错误。
首先,我不是 MS Access 开发人员。但是我有一份新工作,必须做一些 MS Access 开发。我将与另一位有这方面经验的开发人员合作;至少比我多。
他向我展示的一件事是,用户将进入这个 MS Access 应用程序,该应用程序进入表单,无论他们在那里做什么,然后退出表单应用程序以直接访问数据库的表。(Access 应用程序是 SQL Server 2005 数据库的前端。)由于最终用户可以直接访问 SQL 表,所以您可以想象他们会遇到什么样的恶作剧。(Access 应用程序是由承包商编写的,该承包商未完成该应用程序。)
所以我的问题是:我们如何防止最终用户离开 Access 应用程序直接与 SQL 表交互?我认为这是可能的,但就像我说的,我不是 Office 开发人员,所以我不知道如何完成,甚至不知道我会寻找什么样的东西。
Access 应用程序是用 MS Access 2007 编写的。
您使用哪些策略让多个人在访问数据库上工作?
是否可以在线托管它并使其功能仍然可用而无需开发自定义前端?
MS Access作为一个软件有一些很好的功能,不需要任何编程配置:
即使在线托管,是否可以获得所有这些功能?我基本上想到了一种替代方法,可以使用上述GUI功能快速让人们使用数据,而无需使用webapp <> MySQL方式.
我有一个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.
我不确定这是否是发布此问题的正确网站,但在这里......
在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中的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)
提前致谢
在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)
它可以工作,但我会显示一个"另存为..."对话框,允许用户选择导出数据的文件.
可能吗?
我在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中的一个字段来显示(但还没有把它放在选择部分).
是否可以在MS Access中为一列只允许数字的文本/字符串数据类型设置"验证规则"?还有一个只允许使用字母的"验证规则"?
database ms-access ms-access-2007 ms-access-2010 ms-access-2013
我正在寻找一个函数或子函数(在模块中),我可以调用它来删除名称中包含"tbl"的所有表.我发现几段代码无法正常工作.
澄清我的问题:
我在Access工作.在我的项目中,我使用VBA生成一些表.我事先不知道这些表的名称是什么.我知道我想要删除的表("DROP")在其名称中有"tbl".
我正在寻找的代码是这样的:
DoCmd.runSQL (DROP ALL TABLE LIKE '%tbl%')
Run Code Online (Sandbox Code Playgroud)
我知道这段代码不起作用,但它应该对我想要实现的内容有所了解
ms-access-2007 ×10
ms-access ×6
access-vba ×2
database ×2
sql ×2
vba ×2
dialog ×1
export ×1
jakarta-ee ×1
java ×1
runtime ×1
select ×1
sharing ×1
unique ×1