是否可以将 vba 代码放在 BarTender Design 后面并让它 运行 在访问中删除查询

Is it possible to put vba code behind BarTender Design and have it run a delete query in access

  1.Public sub test()
  2.dim cn, rs, cmd
  3.Set cn = createobject("ADODB.Connection")
  4.Set rs = createobject("ADODB.Recordset")
  5.Set cmd = createobject("ADODB.Command")
  6.connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
DataSource=C:\Users\text\Documents\PrintCenterForm\PrintCernter_v1.accdb;"
  7.cn.Open connectionString
  8.cmd.ActiveConnection = cn
  9.cmd.Execute
  10.End sub

抱歉,伙计们,我昨天发布了我的代码和错误的图片,但出于某种奇怪的原因他们删除了它?

但不管怎样,我在第 8 行收到一条错误消息:"Command text was not set for the command object."

我也试过重写这段代码,因为它只是坐在这里等待响应没有用,但我也试过这种方式,但似乎无法让它工作

 1.Set accessApp = GetObject("C:\Users\texthere\Documents\PrintCenterForm\PrintCernter_v1.accdb")
 3.Set accessApp = createObject("Access.Applicaiton")
 4.accessApp.visible = true
 5.accessApp.UserControl = true 
 6.accessApp.OpenCurrentDataBase
("C:\Users\texthere\Documents\PrintCenterForm\PrintCernter_v 
 1.accdb"),false
 7.accessApp.Run "Qry_DeletePrinted"
 8.End Sub

我在底部代码的第 1 行收到一条错误消息:“ActiveX 组件无法创建对象:'Access.Application' 我很可能不会使用这段代码,除非你们看到它会更容易使用吗?我也将 OnPrintJobStart 更改为 OnNewRecord 以查看这种方法是否有效,但首先我需要解决编码问题。

我的最终结果我只想要一些代码,这些代码将在 Access 中启动删除查询,以删除从 Bartender 打印的记录。

我在 Access 调用中已经有一个删除查询 "Qry_DeletePrinted"。

这个数据库位于我的 C:Drive DataSource=C:\Users\text\Documents\PrintCenterForm\PrintCernter_v1.accdb

澄清一下,我使用的是 MS Access 2013

如你们所见,我对 VB 脚本

一点都不熟悉

可以,Bartender 软件 中有一个 VBScript 类型的数据源。 创建一个新的 VBScript 数据源并将脚本类型设置为事件控制脚本。

Edit with Script Assistant.. 中选择 OnPrintStart 并注入您的 VBScript 连接并删除语句代码。每次开始打印标签时都会运行。

首先,您需要通过 Bartender 在 VBScript 中打开您的 Access 数据库: 资料来源:Access 2013 Connection String

Dim cn, rs, cmd
set cn = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
set cmd = CreateObject("ADODB.Command")

connectionScring = "Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=C:\Users\text\Documents\PrintCenterForm\PrintCernter_v1.accdb;"
cn.Open connectionScring 

其次,你可以准备你的SQL声明:

注意:此脚本中的Value表示分配给此VBScript数据源的值

您可以选择通过调用以下方式获取其他数据源值:Format.NamedSubStrings("OtherDataSource").Value

sql = "delete from yourTable where key = '" & Value & "'"
cmd.ActiveConnection = cn
cmd.CommandText = sql
cmd.execute
cn.Close    

虽然我没有很多 VBscript 经验。前段时间我确实创建了一些东西来删除 firebird 数据库中的记录。在我看来,您没有给出正确的命令来执行查询/过程。在我与程序一起使用并且有效的编码下方。

Const Connection = "DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=C:\DB\Database.FDB;" 
SQL = "execute procedure NameOfProcedure " + Format.NamedSubStrings("TELLER").Value
Set dbconn = CreateObject("ADODB.Connection")
dbconn.Open connection
dbconn.Execute(SQL)
dbconn.Close

重要的部分是 "SQL"。该过程具有从数据库中删除打印行的代码,而 BarTender 仅调用该过程。当然我们需要告诉它需要删除哪一行。我为此 "Teller" 使用命名数据源。这与数据库字段 ID 链接。

以下是这些人帮助我完成的事情,而且效果非常好!

 Dim cn, rs, cmd
   set cn = CreateObject("ADODB.Connection")
   set rs = CreateObject("ADODB.Recordset")
   set cmd = CreateObject("ADODB.Command")
   ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
   Source=\NetworkDriveName\PrintCernter_v1.accdb;"
   cn.Open ConnectionString 
   sql = "Qry_DeletePrinted" 
   '+ Format.NamedSubStrings("Printed_User").Value
   cmd.ActiveConnection = cn
   cmd.CommandText = sql
   cmd.execute
   cn.close