Можно ли поместить код VBA за BarTender Design и запустить запрос на удаление в доступе - PullRequest
0 голосов
/ 09 октября 2019
  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, заявляющей: "Текст команды былне установлен для объекта команды. "

Я также пытался переписать этот код, так как он бесполезен, просто сидеть здесь в ожидании ответа, но я тоже пытался так, но не могу заставить это работать

 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.

У меня уже есть запрос на удаление в Acceвызов ss "Qry_DeletePrinted".

Эта база данных находится на моем C: Drive DataSource = C: \ Users \ text \ Documents \ PrintCenterForm \ PrintCernter_v1.accdb

Просто чтобы уточнить, я используюMS Access 2013

Как вы оба видите, я не знаком с VB Script

Ответы [ 3 ]

0 голосов
/ 16 октября 2019

Хотя у меня нет большого опыта работы с VBscript. Я создал что-то для удаления записей из Databse 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 просто вызывает процедуру. Конечно, нам нужно указать, какую строку нужно удалить. Я использую именованный источник данных для этого "Теллера". Это связано с идентификатором поля базы данных.

0 голосов
/ 25 октября 2019

НИЖЕ ЧТО ТАКОЕ, ЧЕМ ЭТИ ПАРНИ ПОМОГИЛИ МНЕ СОЗДАВАТЬ, И ЭТО РАБОТАЕТ, КАК ОЧАРОВАТЬСЯ!

 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 голосов
/ 10 октября 2019

Да, вы можете, есть VBScript тип источника данных в Bartender Software . Создайте новый источник данных VBScript и установите тип сценария как сценарий управления событиями.

Bartender VBScript Data Source

Внутри Edit with Script Assistant.. выберите OnPrintStart и введите свойVBScript соединение и удаление кода оператора. Он будет запускаться каждый раз, когда начинается печать этикетки.

Bartender Script Assistant

Сначала необходимо открыть базу данных Access через Bartender в VBScript: Источник: Строка подключения Access 2013

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    
...