Преобразование Кофакса - обновление полей в форме при проверке - PullRequest
0 голосов
/ 17 января 2020

Я использую Kofax Transform для извлечения данных из OCR. Для этого у меня есть форма с несколькими входами. В основном: имя, фамилия, адрес электронной почты. Моя проблема касается шага проверки.

Я хочу обновить поля ввода при указанном событии c (нажмите Enter, когда поле электронной почты выбрано, и обновите значения из базы данных). В этой таблице базы данных у меня есть 4 поля: идентификатор, имя, фамилия и адрес электронной почты

Это мой первый опыт работы с VBA, и мне нужно создать скрипт:

Private Sub FillFormOneEmailValidated(ByVal pXDoc As CASCADELib.CscXDocument)

   'define required properties
   Dim rs As ADODB.Recordset
   Dim cn As ADODB.Connection

   Dim sqlRequest As String
   Dim email As String

   Dim dbHostServer As String
   Dim dbUsername As String
   Dim dbPassword As String
   Dim dbName As String
   Dim dbConnString As String

   'Prapare the db connection
   Set rs = New ADODB.Recordset  : Set cn = New ADODB.Connection

   dbHostServer = "127.0.0.1"
   dbUsername = "root"
   dbPassword = "root"
   dbName = "dbtest"

   'build the connection string and open connection to database
   dbConnString = "Provider=MSDASQL;Driver={MySQL ODBC 5.3 Unicode Driver};
   dbConnString = dbConnString & "Server=" & dbHostServer & ";"
   dbConnString = dbConnString & "UID=" & dbUsername & ";"
   dbConnString = dbConnString & "PWD=" & dbPassword & ";"
   dbConnString = dbConnString & "database=" & dbName

   'Create recordset and set conncetion
   Set rs = New ADODB.Recordset : : Set cn = New ADODB.Connection
   cn.ConnectionString = dbConnString
   cn.Open

   'build query
   sqlRequest = "SELECT name, surname, email FROM users WHERE email = " & email 
   Set rs = cn.Execute(sqlRequest)

   'iterate the values of the sql request
   On Error Resume Next
   rs.MoveFirst
     pXDoc.Fields.ItemByName("name") = CStr(sqlRequest("name"))

   rs.Close : Set rs = Nothing
   cn.Close : Set cn = Nothing
End Sub

Вот мои проблемы:

  • кажется, что этот код неверен.
  • Как я могу "наблюдать" событие на входе (форме) электронной почты в KTA Transform?

1 Ответ

0 голосов
/ 23 апреля 2020
  1. Избегайте построения запроса sql, подобного этому, так как это может привести к риску внедрения. Посмотрите на использование параметров. (Или надейтесь, что никого из ребят не зовут Бобби, или вы будете подвержены злонамеренному пользователю)

Также пароли в скриптах не рекомендуются.

Я бы посмотрел на уже встроенные функции локатора базы данных. И диалог базы данных вы можете добавить к своей маске проверки.

Если сценарий - единственно возможная вещь

Вы можете использовать несколько событий для этого , Один из способов, как вы сказали, это когда поле подтверждено ValidationForm_AfterTableCellChanged.

Вы можете просмотреть доступные вам события в редакторе сценариев / построителе проекта с помощью опций введите описание изображения здесь

Не уверен для KTA, но в обычном KT вы можете отлаживать и наблюдать за другими методами, включив отладку сценариев в опциях синхронизации.

Ошибка в скрипте выглядит очевидной

sqlRequest - это ваш запрос как строковая переменная. Вы должны получить данные строки из набора записей. (я не проверял остальную часть сценария)

...