Каким образом можно конвертировать данные из формата ACCESS .mdb в формат, понимаемый прозвонкой?
Для версии 4.ХХ ничего конвертировать не нужно, она позволяет работать с файлами Access напрямую через ODBC. Вам необходимо только настроить источник данных для доступа к базе данных MS Access. Это делается в программе в разделе
Источник данных.
Как передать в программу список телефонов?
Программа позволяет извлекать данные из вашего списка телефонов, так как позволяет работать с большинством источников данных. Настройка доступа производится в программе в разделе Источник данных.
Где производиться настройка количества повторных звонков если "Занято"?
Количество повторных звонков настраивается в сценарии в SQL командах и по умолчанию программа пытается дозвонится абоненту 5 раз.
Что означают поля в таблицах, поставляемых с программой?
Поля во всех таблицах имеют следующее значения:
Имя поля |
Тип данных |
Описание |
Telefon | строка (10) | Номер телефона |
Abonent | строка (30) | Наименование абонента |
RingDate | дата | Дата последнего звонка |
RingTime | строка (8) | Время последнего звонка |
RingType | число (1, 0) | Тип звонка:
- 0 - не звонили;
- 1 - звонили, дозвонились;
- 2 - звонили, не дозвонились;
|
RingPass | число (2, 0) | Количество попыток дозвона |
Dolg | число (16, 2) | Долг (необязательное) |
VoiceData | мемо | Голосовые данные (не обязательное) |
При попытке изменить данные внутри цикла прозвонки возникает ошибка: Подключение занято до получения результатов другого hstmt.
Проблема в том, что программа пытается выполнять запрос внутри выборки. То есть, цикл на выборку кандидатов еще не завершился, а программа уже шлет другие запросы. Некоторые ODBC - драйверы не хотят этого делать, как в вашем случае. Выходов может быть два - подыскать альтернативный ODBC драйвер, у которого нет таких ограничений или изменить сценарий примерно так:
Начало бесконечного цикла
Телефон = "" // Присваиваем переменной Телефон пустое значение
Цикл для курсора (...) // этот цикл должен выбрать одного кандидата
Телефон = Выборка. Телефон // Сохраняем выбранный номер в переменной Телефон
Конец цикла для курсора
Если Телефон != 0 // Если кандидат существует
// Здесь должен быть стандартный процесс дозвона, то есть набор номера (номер берем уже из переменной Телефон), анализ линии и запись результатов в базу.
Иначе
Выход из цикла // Кандидатов нет, выходим из цикла прозвонки
Конец Если
Конец бесконечного цикла
В этом случае такой проблемы не будет, так как все запросы будут выполняться последовательно, а не один внутри другого.
Какое отношение имеет запрос в источнике данных (Кандидаты на прозвонку) к Курсору Выборка, взаимосвязаны они или нет?
Нет, они не взаимосвязаны. Каждый из них выполняет свои задачи. Запросы в источнике данных служат для получения данных или их анализа. Запросы в сценарии служат для получения данных необходимых для работы сценария, а так же для модификации данных в процессе работы сценария.
При попытке соединения с базой InterBase - программа вываливается с критической ошибкой. Что можно сделать?
Проверьте версию программы, если версия файла менее 4.02.03, скачайте более свежую. Проверьте настройки ODBC драйвера для доступа к InterBase.
Отображаются дробные значения при любых драйверах кроме файл dBASE и база Microsoft Access, а именно они и нужны. В access начинает отображаться только когда поставишь тип поля денежный, а при любом числовом только целая часть числа.
Да, это особенность работы различных ODBC драйверов. Некоторые из них не указывают количество знаков после запятой. Проверьте версию программы, если версия файла менее 4.02.03, скачайте более свежую, там эта проблема подкорректирована.
При автопрозвонке выполнение алгоритма доходит до "Цикл для курсора" и пишется следующая ошибка: [Microsift][Драйвер ODBC Microsoft Access] Неопределенная функция 'recno' в выражении.
Все очень просто, источник данных который вы используете не знает функции recno (). Нужно настроить источник данных с использованием драйвера FoxPro или Visual FoxPro (VFP). Там эта функция есть.
Как в версии 3.04 сделать чтоб звонила с наибольшей суммы? Сейчас она звонит с наименьшего номера телефона.
Версия 3.04 просматривает базу данных в физическом порядке расположения записей в таблице, поэтому для того, что бы прозвонка велась в нужном порядке базу нужно отсортировать именно в этом порядке (например в языке FoxPro для этого есть команда SORT). В версии 4.ХХ этого не требуется, так как в запросе можно задать любой порядок выборки данных даже по нескольким полям или выражениям.
Никак не получается получить данные их документа Excel. Какое название имеют таблицы в нем?
Для того, чтобы использовать документ Excel, вам необходимо открыть этот документ в Excel-e. Затем выделить необходимый диапазон ячеек и присвоить ему имя, например Ring (как например это сделано в документе Ring.xls поставляемым с программой). После этого программа сможет выбирать данные из этого документа обращаясь к выделенному диапазону ячеек по введенному вами имени (ring). Помимо этого, проверьте, чтобы источник данных указывал именно на этот документ.
Что за функция alltrim используется в сценарии Автоответчик, который поставляется с программой?
alltrim это функция ODBC драйвера FoxPro, она убирает пробелы справа и слева строки. Вы можете убрать эту функцию или использовать другую, которую поддерживает ваш ODBC драйвер, например в MS Access есть аналог - функция trim, можно использовать ее.
MS Access видимо не понимает команду update она следует после информационного сообщения долга в SQL команде, в сценарии Автопрозвонки. Какую команду можно использовать?
MS Access прекрасно понимает команду update, просто в примере сценария, который идет с программой, в команде update используется функция recno () которая есть в FoxPro но нет в Access-е. Эта функция используется для поиска нужной записи. Вместо нее можно использовать значение ключевого поля. То есть нужно поле или несколько полей которые однозначно бы определяли запись в таблице в этом случае значение любого поля можно изменить командой:
update <имя таблицы>
set <имя поля> = <новое значение>
where <имя ключевого поля> = <значение ключевого поля>
Подскажите пожалуйста, можно ли используя базу данных формата *.dbf при запущенном сценарии перезаписать базу, чтобы она соответственно оставалась работоспособной, т.е. разрешить мульти доступ. Если возможно то как?
Переписать базу (файл dbf) которая отрыта в приложении нельзя. А вот изменять, удалять и добавлять записи в базе которая открыта в общедоступном режиме можно без проблем. Программа как раз и открывает базу именно в общедоступном режиме. То есть, к этому же файлу можно получить доступ из других приложений открывая его в режиме общего доступа. Например, для языка FoxPro перед открытием базы нужно включить общедоступный режим командой set exclus off.
Подскажите пожалуйста, как в режиме автоответчика вести текстовый log-файл, т.е. чтобы записывалась информация номер дозвонившегося телефона и в какое время, т.е. сама SQL-команда.
Программа пока не предусматривает запись информации в текстовый файл. Запись в текстовый файл можно сделать, если настроить источник данных для работы с текстовыми файлами. В этом случае можно писать информацию в текстовый файл обычными SQL запросами. Можно сбрасывать любую информацию, в том числе номер телефона, дату и время. Гораздо удобнее записывать информацию о звонивших абонентах в отдельную таблицу базы данных, которую вы используете.
Никак не могу подставить в SQL запросы дату. Как это можно сделать?
С датой работать достаточно просто, согласно стандарта ODBC ее нужно указывать в формате {d'YYYY-MM-DD'}, например:
select *
from Ring
where date={d'2003-08-14'}
Для получения текущей даты можно использовать функцию Date(), например:
select *
from Ring
where date=Date()
Запросом в данных я получаю список абонентов, удовлетворяющих условиям запроса. Дальше приходится пересчитывать их, тыкая пальцем в монитор. Хотелось бы иметь оперативную статистику: количество прозвоненных (всего за сегодня, с момента запуска программы), оставшееся количество на прозвонку в этом цикле.
Все правильно, но вы можете изменить SQL запрос так, что он будет возвращать не список абонентов, а их количество, например:
select count (*)
from Ring
where Type = 1 | - вернет в виде одной строки с одним значением количество прозвоненных абонентов. |
select max (Pass)
from Ring | - вернет номер текущей попытки прозвона. |
select count (*)
from Type <> 1 | - вернет количество не прозвоненных абонентов. |
По аналогии можно легко на создавать нужных запросов, для получения нужных данных. Эти запросы в программе для этого и предназначены.
Если в базе поле символьного типа возникает либо ошибка обработки запроса SQL (type mistmath) либо конфликт ODBC.
Все правильно, если переменная символьная, то при подстановке ее значения в SQL-запрос имя переменной нужно заключить в кавычки, например Telefon = 'VariableTelefon', в этом случае при подстановка значения переменной, это значение будет символьным, то есть заключенным в кавычки - Telefon = '343343' и ошибки не возникнет.
Почему обзвон списка телефонов производится в произвольном порядке?
Если в SQL-запросе на выборку номеров телефонов не указан порядок выборки номеров при помощи конструкции order by, то порядок извлечения данных из базы в общем случае неопределен, поэтому, если номера необходимо выбирать в нужном порядке, этот порядок следует указывать в тексте SQL-запроса.
Как можно пользоваться базами из Excel и управлять ими?
Базу Excel можно подключить используя ODBC. То есть, в системе Вы должны создать источник данных ODBC для доступа к нужным книгам Excel, а затем указать программе использовать этот источник. Параметры источника данных настраиваются в разделе данные. Там же, нажав на кнопку Менеджер можно создать/изменить любой из источников данных установленных в системе. Подробная инструкция по настройке источника данных для доступа к документу Excel находится здесь