Пилю автоматизацию для системы учета.
Использую TestComplete 8
Задачка в проверке данных:
- Есть программа учета с базой на SQL
- Завел Item I со значением N через интерфейс программы
- Необходимо проверить наличие данных в SQL
Подскажите пожалуйста, как можно реализовать функцию сравнения введенного значения N с наличием его в SQL
PS DBTables в Stores добавлен. Коннект к базе есть.
Сверка данных c SQL в TestComplete 8
Автор melkoridze, 24 ноя 2011 10:55
Сообщений в теме: 4
#1
Отправлено 24 ноября 2011 - 10:55
#2
Отправлено 24 ноября 2011 - 12:36
С DBTables не работал, но насколько я понял из документации - это внутренние файлы проектов, которые используются в качестве чекпойнтов.
Чтобы работать с живой базой данных, необходимо настроить подключение. Строка подключения будет зависеть от того, какой движок базы данных используется, и как настроен к нему доступ.
Потом можно писать запросы на SQL и обрабатывать результаты. Кстати, не знаю, как в восьмерке, а в 7.52 документация на работу с базой данных довольно бедненькая, приходилось смотреть хелп к Delphi.
Могу поделиться тем, как делаю запросы к SQLServer (использую DelphiScript):
1) Настраиваем Connection String (Зависит от Вашего типа подключения к серверу, у меня SQLServer 2008 c собственным логином. Различные типы ConnectionString легко нагуглить).
5) Закрываем:
Чтобы работать с живой базой данных, необходимо настроить подключение. Строка подключения будет зависеть от того, какой движок базы данных используется, и как настроен к нему доступ.
Потом можно писать запросы на SQL и обрабатывать результаты. Кстати, не знаю, как в восьмерке, а в 7.52 документация на работу с базой данных довольно бедненькая, приходилось смотреть хелп к Delphi.
Могу поделиться тем, как делаю запросы к SQLServer (использую DelphiScript):
1) Настраиваем Connection String (Зависит от Вашего типа подключения к серверу, у меня SQLServer 2008 c собственным логином. Различные типы ConnectionString легко нагуглить).
connection_string := 'Network Library = ' + strServerName + ';' + 'Data Source = ' + strDBName + ';' + 'User ID = ' + strLogin + ';' + 'Password = ' + strPwd + ';';2) Создаем объект доступа к таблице
adoMainTable := ADO.CreateADOTable; adoMainTable.ConnectionString := connection_string; adoMainTable.TableName := strMainTableName; adoMainTable.Open;3) Создаем объект запроса
adoQry := ADO.CreateADOQuery; adoQry.SQL := '<мой текст запроса>';4) Выполняем запрос
adoQry.Open;И делаем с ним всё, что хотим. Можно пользоваться документацией к дельфийскому TADOQuery. Может быть, не все поля будут доступны, но такие базовые, как RecordCount, First, Next, FieldByName вполне работают.
5) Закрываем:
adoQry.Close; adoMainTable.Close;
#3
Отправлено 24 ноября 2011 - 16:44
Прописать подключение к базе уже не проблема, с этим разобрался.
Данные сравнивать тоже научился.
Тут засада в следующем:
- в Сторах создана DBTable "TEST" с запросом на одну таблицу.
- при обновлении данных в SQL, они не обновляются в "TEST"
Вот ломаю голову над тем, как актуализировать данных из SQL в "TEST"
Заранее спасибо за помощь.
Данные сравнивать тоже научился.
Тут засада в следующем:
- в Сторах создана DBTable "TEST" с запросом на одну таблицу.
- при обновлении данных в SQL, они не обновляются в "TEST"
Вот ломаю голову над тем, как актуализировать данных из SQL в "TEST"
Заранее спасибо за помощь.
#4
Отправлено 25 ноября 2011 - 05:43
Вот ломаю голову над тем, как актуализировать данных из SQL в "TEST"
По идее, вызовы DBTable.Check или DBTable.Compare могут обновлять данные в DBTable.
если установлена опция, указывающая это делать.
Прочитать про это можно здесь http://smartbear.com...warticle/11218/
Возможно Вам нужна не DBTable, а DB Table variable, которая просто обеспечивает доступ к внешним данным?
Посмотрите - http://smartbear.com...warticle/11860/
#5
Отправлено 25 ноября 2011 - 08:07
Решил проблему составлением необходимого количества чекпоинтов, что правильно.
Для сверки данных в чекпоинте DBTable "TEST" использовал C# Script
Но можно иметь несколько DBTables, используя их, как expected results и тогда уже смело применять
DBTable.Check
Для сверки данных в чекпоинте DBTable "TEST" использовал C# Script
function Compare() { var Col1, Col2, i; // i - идентификатор строки var x = 1; // ID продукта var y = 100; // Ожидаемое значение Col1 = DBTables["TEST"]["ColumnIndex"]("InternalCode"); Col2 = DBTables["TEST"]["ColumnIndex"]("Amount"); // Итерация строк for(i = 0; i < DBTables["TEST"]["RowCount"]; i++) { if(DBTables["TEST"]["Values"](i, Col1) == x) { amount = DBTables["TEST"]["Values"](i, Col2); break; } } // Сравнение с известным количеством if (amount == y) Log["Message"]("Данные совпадают!"); else Log["Error"]("Некорректные остатки!"); }
Но можно иметь несколько DBTables, используя их, как expected results и тогда уже смело применять
DBTable.Check
function CompareDBTables() { // Specifies a DB Table element var DBTab = DBTables["Table1"]; // Performs some action with the stored data // Checks whether the data has been changed if (DBTab["Check"]()) Log["Message"]("The data hasn't been changed."); }
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных