Требуется помощь с небольшим проектом VBScript - PullRequest
0 голосов
/ 25 ноября 2018

Я получил файл accdb от друга, в котором есть информация о заклинаниях, которые она делает для настольной RPG (по идее D & D).Один из столбцов в этой таблице называется «Тип», и в нем есть несколько записей, таких как Темнота, Яд, Исцеление и т. Д.

Мои цели для этого проекта следующие:

  • Получить уникальные записи в столбце Типы
  • Подсчитать, сколько раз каждый тип повторяется в столбце Типы
  • Отображать данные в окне сообщения следующим образом:

    Dark = n
    Poison = n
    Healing = n
    

Где n = - это количество повторений этого типа в столбце Типы.

Вот код, который у меня есть:

Dim connStr, objConn, getTypes

connStr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Rachelle_TableTop_RPG_Spells_0.1.1.accdb"

Set objConn = CreateObject("ADODB.Connection")

objConn.Open connStr

Set rs = objConn.Execute("SELECT Distinct(Type) FROM Spells")

Do While Not rs.EOF
  getTypes = getTypes + rs.Fields(0) & " = " & vbCrLf
  rs.MoveNext
Loop

objConn.Close
Set rs = Nothing
Set objConn = Nothing

MsgBox getTypes

В нем отображается окно сообщения, которое отображается как моя цель выше, но без номера.

Мне нужна помощь в выяснении, какие запросы и т. Д. Я должен использовать для достижения своих целей.Я не ищу кого-то, чтобы переписать мой код для меня.

1 Ответ

0 голосов
/ 25 ноября 2018

Для строки подключения требуется полный путь к базе данных, если скрипт не находится в той же папке, что и база данных.Чтобы подключиться к работе, я должен был следовать советам: https://rtmccormick.com/2014/06/05/provider-cannot-be-found-it-may-not-be-properly-installed/

Я создал ярлык и установил Цель с:
%windir%\SysWoW64\wscript.exe C:\filepath\filename.vbs

В другом месте читайте:
"Отредактируйте файл cmd для запуска 32-разрядного процесса
windir% \ SysWoW64 \ cmd.exe / c C: \ filepath \ filename.vbs
вместо просто
C: \ filepath \ filename.vbs"
Не следил за этим.

Измените запрос для набора записей:

SELECT [Type], COUNT([Type]) AS CountType FROM Spells GROUP BY [Type]

Тип имеет особое значение в Access.Использование зарезервированных слов в качестве имен может вызвать проблемы.Заключите имя поля в [] или не используйте зарезервированные слова в качестве имен для чего-либо.

Объединение в цикле для построения строки:

getTypes = getTypes & rs.Fields(0) & " is repeated " & rs.Fields(1) & " times" & vbCrLf

...