首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将vba代码放在BarTender设计之后,并让它在access中运行删除查询

是否可以将vba代码放在BarTender设计之后,并让它在access中运行删除查询
EN

Stack Overflow用户
提问于 2019-10-09 13:37:40
回答 3查看 1.3K关注 0票数 0
代码语言:javascript
复制
  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行都会收到一个错误:“命令文本没有为命令对象设置。”

我也尝试过重写这段代码,因为它只是坐在这里等待响应是没有用的,但我也尝试过这样做,但似乎无法让它起作用。

代码语言:javascript
复制
 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调用"Qry_DeletePrinted“中已经有一个delete查询。

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

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

正如你们所看到的,我对VB脚本一点也不熟悉

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-25 11:24:32

下面是这些人帮助我完成的事情,它的作用就像一个魅力!

代码语言:javascript
复制
 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
票数 0
EN

Stack Overflow用户

发布于 2019-10-10 07:54:42

是的,您可以,VBScript类型的数据源存在于酒保软件中。创建一个新的VBScript数据源,并将脚本类型设置为事件控制脚本。

Edit with Script Assistant..内部,选择OnPrintStart并注入VBScript连接和delete语句代码。每当标签开始打印时,它都会运行。

首先,您需要通过VBScript:中的酒保打开Access数据库。

代码语言:javascript
复制
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数据源的值

您可以选择通过标注以下内容来获得其他dataSource值:Format.NamedSubStrings("OtherDataSource").Value

代码语言:javascript
复制
sql = "delete from yourTable where key = '" & Value & "'"
cmd.ActiveConnection = cn
cmd.CommandText = sql
cmd.execute
cn.Close    
票数 0
EN

Stack Overflow用户

发布于 2019-10-16 06:59:15

虽然我对VBscript没有太多的经验。不久前,我确实创建了一些东西来删除firebird数据库中的记录。在我看来,您没有给出正确的命令来执行查询/过程。下面是我使用的编码过程,它可以工作。

代码语言:javascript
复制
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链接的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58305476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档