Прекращена работа программы microsoft visual foxpro
Целью данной статьи не является пропаганда актуальности устаревшего ПО. Автору хотелось помочь тем, кто по долгу службы вынужден сопровождать досовский софт.
В данной статье я хочу поговорить о СУБД FoxPro, а точнее, о ее досовских версиях.
Так случилось, что множество программ, написанных на фоксе, до сих пор остаются "в строю". Знакомое окно текстового режима можно нередко увидеть в банке, в почтовом отделении, расчетных центрах ЖКХ да и просто в организациях.
Сложно объяснить, почему фокс так хорошо прижился на жестких дисках некоторых компьютеров, равно как и сложно понять, почему большая часть компьютерщиков терпеть не может этот программный продукт.
Давным-давно, когда деревья были большими, а дискеты пятидюймовыми, FoxPro мирно существовал под MS-DOS и радовал своих пользователей. Но время не стоит на месте, на смену ДОСу пришла Win95, а за ней - Win98. Но и тут наши рыжие программы продолжали упорно трудиться, не причиняя лишних проблем своим пользователям и сисадминам.
Следующей популярной ОС, которая заполонила практически все компьютеры, стала Windows XP. И вот тут с нашей СУБД начались проблемы. С одной стороны, XP не так удачно заточен под досовский софт и имеет другую архитектуру, нежели Win9x, с другой, прогресс не стоит на месте, и в железной начинке компьютера появилось много нового - многоядерные процессоры, USB-принтеры и т.д.
Оба этих фактора породили немалое количество разнообразных глюков и проблем. Недаром на форумах частенько можно видеть злобные высказывания в адрес FoxPro с призывом похоронить его окончательно и безвозвратно.
Давайте же посмотрим, какие типичные проблемы возникают при работе фокса под Windows XP и что можно предпринять в данных ситуациях, дабы облегчить себе жизнь.
Программа вообще не запускается или запускается с кракозябрами вместо букв
Первым делом необходимо проверить наличие на компьютере библиотек FoxPro. Обычно их кладут в какую-нибудь папку, например, C:\Foxpro. Для того чтобы программа могла их найти, необходимо в системном файле
прописать путь к библиотекам, добавив строку
(разумеется, имя диска и название папки windows могут отличаться).
Если в программе отсутствует русский язык и буквы отображаются неверно, то необходим драйвер русского языка для MS-DOS, к примеру, keyrus. Его запуск также нужно прописать в autoexec.nt. Справедливости ради хочется заметить, что обычно драйвер keyrus требуется очень редко, так как Windows XP хорошо справляется с его функциями сама.
Хочется еще отметить тот момент, что у FoxPro было несколько версий, и библиотеки нужны строго от той версии, на которой написана программа. Различные версии - 2.0, 2.5, 2.6 - несовместимы между собой.
Также в системном файле C:\windows\system32\config.nt должны присутствовать следующие 2 строки:
Первая указывает максимальное число одновременно открытых файлов, вторая - размер буферов.
Собственно, все. Вышеупомянутых действий вполне хватает, чтобы программа запускалась.
Нехватка памяти
Если возникает следующая ситуация - программа запускается, вроде бы как все работает, но время от времени в каком-то определенном месте (например, расчете) или произвольно программа вылетает с ошибкой с надписью о нехватке памяти или отсутствии свободных рабочих областей ("All workareas is in use").
В таком случае обратим внимание на ярлык на рабочем столе, по которому запускается программа. Правый клик по ярлыку - идем в свойства, открываем закладку "Память". Смотрим на параметры "Отображаемая (EMS) память" и "Дополнительная (XMS) память". В этих двух строчках необходимо выставить максимальное значение - 16384 (обычно при создании ярлыка Windows не выделяет этой памяти).
"Маленький экран"
При старте программы она запускается в оконном режиме или в полноэкранном, но сама программа работает лишь на полэкрана, вторая половина остается пустой (для текстового режима 80х25).
У этой проблемы два способа решения, описанные ниже.
Первый способ (стандартный). Ставим в свойствах ярлыка полноэкранный режим. Запускаем программу. Затем нажимаем комбинацию Alt+Enter - программа переходит в оконный режим. Правый клик по синему заголовку окна программы. Идем в свойства. Открываем закладку "Расположение". Параметры "Размер буфера экрана" и "Размер окна" выставляем в 80 на 25 (если у вас стандартный текстовый режим, если другой - поставьте свои параметры).
Нажимаем Ок, появится диалог "Изменения свойств". Выбираем "Сохранить свойства для других окон с тем же именем", нажимаем Ок. Больше ничего не делая, выходим из программы (желательно через меню программы). Все. Теперь при запуске программа будет красиво разворачиваться на весь экран. Способ работает почти всегда, но иногда попадаются компьютеры, на которых этот фокус не проходит. В таком случае переходим к способу 2.
Второй способ (если не помог первый). Открываем папку программы. Ищем в нем файл CONFIG.FP, если он не найден - создаем его. Дописываем туда строчку вида display=VGA25 и сохраняем. Теперь программа будет также работать полноэкранно. Единственный нюанс - скорее всего, понадобится установка драйвера русского языка keyrus.
Медленная печать на матричный принтер
Приложения MS-DOS в среде Windows NT/2000/XP при печати используют NT-спулер, который ждёт некоторое время (15 секунд по умолчанию), прежде чем передать полученные данные на принтер. Чтобы уменьшить таймаут печати, который задаётся в реестре, открываем REGEDIT и лезем в ветку
В строковом параметре "LPT_timeout" установим его значение в "3".
Настройки драйвера принтера трогать не нужно, пусть остаются по умолчанию.
Кстати, если в системе установлено несколько принтеров, то обязательно по умолчанию должен быть установлен матричный.
Печать на USB-принтер (локально или по сети)
Этот вопрос для программ на ФоксПро стоит особо остро. Матричные принтеры уже почти не используются, а вот количество лазерных растет как грибы после дождя.
Для решения этой проблемы используются программы, которые перехватывают печать на LPT, преобразуют документ и отправляют уже на USB принтер. Таких программ множество. Но лучше всего для этих целей подходит программа DOSUSB. После установки необходимо поместить ее в автозагрузку или же сделать пользователю ярлык на рабочем столе.
DOS2USB обладает достаточным количеством настроек. Будет необходимо выбрать USB-принтер, настроить размер и тип шрифта, а также установить галочку "Advance Spool".
Среди особенностей программы хочется отметить режим "DMP Print". Он позволяет при подключении матричного принтера по USB эмулировать обыкновенный текстовый режим печати LPT. Что очень удобно: если на компьютере отсутствует или не работает порт LPT, матричный принтер можно подключить по USB (последние модели EPSON это позволяют).
Печать на сетевой матричный принтер
Если необходимо печатать по сети на матричный принтер, то есть и такая возможность.
Чтобы открыть доступ по сети к тому матричному принтеру, на который мы будем печатать, на компьютере, с которого будем печатать, необходимо проделать следующие изменения: в файле autoexec.nt добавить строчку: net use LPT1: \\имя компьютера\сетевое имя принтера, например:
Если наша фокс-программа запускается через .BAT-файл, то вместо autoexec.nt эту строчку можно добавить прямо в этот bat.
Зависание программы на многоядерных процессорах
При наличии в системе двух- и более ядерных процессоров программы на FoxPro периодически зависают. Происходит это, видимо, из-за того, что Windows пытается распределить код программы на несколько ядер одновременно, и это не очень-то получается. Чтобы этого не происходило, нужно, чтобы система запускала ДОС-программы только на одном ядре CPU.
Для этого необходима утилита imagecfg.exe , с ее помощью нужно пропатчить файл ntvdm.exe. После этого проблемы исчезнут. Можно поступить еще проще - взять готовый пропатченный ntvdm и смело заменить его в системе. Записать в каталоги
Правда, ОС через некоторое время отреагирует - на экране появится окно с предупреждением о том, что системные файлы заменены. Отвечаем Windows, что так и нужно, и чтобы она оставила измененный файл. Если на этот вопрос не ответить, то система автоматически без вашего ведома вернет оригинальный ntvdm на место из резервной копии.
Хочется заметить, что можно смело заменять ntvdm одной системы другим, даже если они не совпадают по размеру (SP1, SP2, SP3).
Невозможно открыть DBF
Время от времени программа вываливается с красной рамкой - ошибка открытия базы DBF.
Данное чудо было замечено на компьютере, где установлен Антивирус Касперского. Видимо, программа и антивирус не могут поделить доступ к файлу. Чтобы избежать проблемы, необходимо добавить файлы DBF в список исключений (чтобы антивирус их не проверял) или же добавить программу в доверенную зону антивируса.
Программа "съедает" все ресурсы компьютера
Действительно, если свернуть работающую программу или перейти в оконный режим (например, при долгом расчете), то даже на мощном современном компьютере можно ощутить "торможение".
Существуют специальные программы, которые позволяют избавиться от подобного эффекта. Это Resfree и Tame.
Tame - более навороченный зарубежный аналог. Программа устанавливается автоматически и имеет дополнительные функции, вроде более тонких настроек, мониторинга программ и т.п.
Вот мы и подошли к концу.
Надеюсь, перечисленные советы будут полезны и помогут существующим программам прожить еще много лет ;)
P.S. Все вышеназванные советы касаются Windows XP. В работе FoxPro на более свежих версиях ОС, например Windows 7, могут быть отличия.
When trying to open a program (Investment Account Manager) I receive the warning "Microsoft Visual FoxPro has stopped working". This program has worked before on the same computer. How do I get the program to open?
I am running Windows Vista Business, Service Pack 2
This thread is locked. You can follow the question or vote as helpful, but you cannot reply to this thread.
Report abuse
Harassment is any behavior intended to disturb or upset a person or group of people. Threats include any threat of suicide, violence, or harm to another. Any content of an adult theme or inappropriate to a community web site. Any image, link, or discussion of nudity. Any behavior that is insulting, rude, vulgar, desecrating, or showing disrespect. Any behavior that appears to violate End user license agreements, including providing product keys or links to pirated software. Unsolicited bulk mail or bulk advertising. Any link to or advocacy of virus, spyware, malware, or phishing sites. Any other inappropriate content or behavior as defined by the Terms of Use or Code of Conduct. Any image, link, or discussion related to child pornography, child nudity, or other child abuse or exploitation.
Welcome to Microsoft answers!
Since when are you facing this issue?
I would suggest you to try the following steps:
Step 1: Firstly, check if there are updates available for the program, if yes, install the latest updates from the program manufacturer’s website.
If that doesn’t help,
Step 2: Put the computer in clean boot, to figure out if any third party software is hindering the process)
Enable clean boot, see step 1 in the link below:
Proceed with the remaining steps to pin-point out the third party service.
Note: After you figure out the problem causing program, you may have to update or install a higher version of the program, if you seldom use that software you can consider uninstalling
Important: - remember to put the computer back to normal startup follow step 7 in the link.
If the issue still persists, Please visit the link below to find a community that will offer the support you request.
Thanks and Regards:
Microsoft Answers Support Engineer
Visit our Microsoft Answers Feedback Forum and let us know what you think.
Report abuse
Harassment is any behavior intended to disturb or upset a person or group of people. Threats include any threat of suicide, violence, or harm to another. Any content of an adult theme or inappropriate to a community web site. Any image, link, or discussion of nudity. Any behavior that is insulting, rude, vulgar, desecrating, or showing disrespect. Any behavior that appears to violate End user license agreements, including providing product keys or links to pirated software. Unsolicited bulk mail or bulk advertising. Any link to or advocacy of virus, spyware, malware, or phishing sites. Any other inappropriate content or behavior as defined by the Terms of Use or Code of Conduct. Any image, link, or discussion related to child pornography, child nudity, or other child abuse or exploitation.
This article introduces a C0000005 error and offers troubleshooting suggestions.
Original product version: Visual FoxPro
Original KB number: 2722492
Symptoms
You are running Visual FoxPro interactive development environment or a custom VFP executable. The application closes and reports this error:
C0000005 Fatal exception
Cause
A C0000005 error is memory error. Specifically, a C0000005 error is an access violation error caused by a buffer overrun.
Resolution
Many scenarios may cause Visual FoxPro to report a C0000005 error. The most efficient method of determining the root cause is to get a memory dump on the Visual FoxPro process when the error occurs and then examine the stack for the faulting module. For example, if a printer driver module is on the top of the stack, one should try updating the printer driver or trying a different driver. If a third party OCX appears as the faulting module, then you should check with the developer of that control for an update on compatibility with your version of Visual FoxPro.
Since Visual FoxPro is a 32-bit application, you must use a 32-bit debugger to obtain a memory dump.
To obtain the latest version of debug diag, see Debug Diagnostics Tool v1.2 is now available
These are some generic instructions for obtaining a memory dump for a Visual FoxPro process.
Install it on the machine(s) experiencing the crashes. Double-click DebugDiag.msi and follow the setup wizard. Install DebugDiag to a hard drive with at least 200 megs free.
To configure DebugDiag:
- Open DebugDiag. The 'Select Rule Type' dialog should open. Select CRASH and then click next.
- On the 'Select Target Type' dialog, select 'A specific process' and then click 'Next'.
- Type the name of your .EXE into the 'Selected Process' textbox or select it from the list. If typing it in, be careful to spell the .EXE name correctly. Do NOT check the 'This process instance only' box - we want the rule in effect for all instances, until we capture a dump. Click 'Next' when done.
- On the 'Advanced Configuration' dialog, set the 'Maximum Userdump Limit' to 25, then click the 'Exceptions' button.
- Click 'Add Exception'
- Select C0000005 in the list, then set the 'Action Type' to 'Full Userdump' and the 'Action Limit' to 25
- Click 'OK', then 'Save and Close' and finally click 'Next'
- On the next screen, please leave the rule name and path to store the dumps as-is, then click 'Next'.
- On the 'Rule Complete' screen, select 'Activate the rule now' and click FINISH. Now when a crash occurs in the application DebugDiag should automatically create dump files. The Userdump Count will also be incremented inside the DebugDiag IDE each time a dump for this rule is created. NOTE: It is not necessary to keep the DebugDiag window open; the dump monitor actually runs as a service and will capture the dump even if DebugDiag is closed.
Once the crash collection is complete, you can disable the rule we made earlier by doing this:
Многие начинающие пользователи сталкиваются с такой проблемой:
"Прекращена работа программы . "
И многих эта проблема раздражает.
Сейчас я вам расскажу,как справится с этой проблемой.
Подробности
Для начала разберёмся с возможными вариантами,из-за чего эта трабла возникает :
1. Установлено много стороннего ПО,которое "ест" ресурсы системы.
2. Программе не хватает оперативной памяти.
3. В системе не установлено необходимое ПО для "правильной" работы программы.
5. Проблема в самой программе.
6. При запуске программа обращается к какому-нибудь системному файлу,который может быть повреждён.
Теперь пройдёмся по каждому этому варианту:
1. Посмотрите будет ли программа вылетать в режиме "чистой" загрузки ,если в этом режиме всё нормально работает,то попробуем выявит виновника,среди всего установленного ПО, с помощью метода "половинного деления".
Зайдите в Конфигурацию системы -> Службы и включите половину служб и перезагрузитесь. Если проблема не появляется, причина в оставшихся отключенных службах. Если проблема воспроизводится, причина во включенных службах — отключите половину из них и снова перезагрузитесь. Тоже самое и для ПО в Автозагрузке.
2. Убедитесь,что у вас включён файл подкачки,для этого:
а) Нажмите Пуск –> Панель управления –> Система –> Все элементы панели управления –> Дополнительные параметры системы -> Дополнительно:
б) В разделе Быстродействие нажмите Параметр,откройте вкладку Дополнительно и нажмите Изменить;
в) И посмотрите,чтобы стояла галочка напротив надписи "Автоматически выбирать объём файла подкачки".
3. Убедитесь,что у вас установлено следующее ПО:
Для 32 (x86) bit'ных систем :
Для 64 bit'ных систем :
Потом после их установки установите все обновления,которые будут в Центре обновления Windows !
4. Проверьте систему на наличие "зловредов" с помощью Dr.Web CureIt.
5. Проблема может быть в самой программе:
а) Если у вас установлена пиратская версия программы (взломанная , RePack),то обращайтесь к тому,у кого вы ею скачали;
б) Если у вас установлена Beta-версия программы,удалите её и найдите законченную версию программы у разработчика :
в) Если у вас лицензионная версия программы,то обращайтесь в тех. поддержку производителя.
6. Определим,кто виноват в вылете программы,для этого:
а) Скачайте программу ProcDump и распакуйте её в папку C:\ProcDump;
б) Откройте командную строку от имени администратора и выполните:
- C:\ProcDump\procdump.exe -accepteula -e -w [имя сбойного приложения] C:\ProcDump\
в) Как определить имя сбойного приложения:
1) зайдите в Панель управления -> Все элементы панели управления -> Центр поддержки ->Монитор стабильности системы -> Отчеты о проблемах.
2) Найдите событие,когда вылетело проблемное приложение,щёлкните по нему 2 раза левой кнопкой мыши и там вы увидите надпись "Имя приложения:
в) Запустите это приложение и дождитесь вылета.
г) После этого у вас появится файл с расширением .dmp в C:\ProcDump
д) Теперь заглянем в это дам (заглядывать в него можно также,как и и в дампы синих экранов Анализ причин возникновения BSOD при помощи Debugging Tools for Windows (только команда выгладит по другому: Kdfe -v [путь к дампу]).
е) Как определите,что за файл виноват - определите системный ли он или принадлежит сторонней программе (для этого достаточно его "погуглить ") ,если к сторонней программе,то определите к какой и удалит её.
Если файл системный,то запустите командную строку от имени администратора и выполните команду:
Дождитесь конца проверки и:
Если в конце проверки будет написано,что все файлы были восстановлены,то перезагрузитесь для их полного восстановления.
Если в конце проверки будет написано,что не все файлы были восстановлены,то:
Если у вас Windows 8/8.1,то вам достаточно в командной строке,запущенной от имени администратора, при подключённом интернете , выполнить команду:
Если у вас Windows 7,то обратимся к другой статье ( пишется ) за помощью.
P.S. Спасибо Дмитрию Кулакову за то.что подал идею для создание статьи.
Эта цепочка заблокирована. Вы можете просмотреть вопрос или оставить свой голос, если сведения окажутся полезными, но вы не можете написать ответ в этой цепочке.
Прошу помощи клуба.
Уже лет 10 у меня работает программа передачи данных в Министерство соц. защиты.
Тащит данные с DB2, формирует то XML, то TXT, в общем, что попросят.
Вчера она вдруг отказалась работать, как только начинается SQLEXEC из таблицы с 300 тыс записей.
Виснет напрочь:Microsoft Visual FoxPro не отвечает.
Странно, 4 млн записей тянула без проблем еще позавчера.
Переставила фокс, перекомпилировала программу.
Ничего не изменилось.
Из программ за это время ставила только лицензионный SQL Server.
Снесла.
Ничего не изменилось.
Перезагрузилась, чтобы другие программы не мешали.
Не помогло.
Прошу помощи, подскажите, куда копать.
Ибо 58 тыс человек останутся без субсидий и пособий.
Вряд ли мой ответ поможет. Но вдруг. Была схожая проблема, хотя и с другим средством. Вопчем, если есть возможность, надо попытаться локализовать фрагмент обрабатываемого файла, приводящего к такому результату. Можно предположить, что во входном файле есть некие нарушения формата, подвешивающие VFP. В моем случае я нашел конкретную запись, которая "подвешивала", то так и не понял, что с записью было не так. Пришлось по-другому обрабатывать входной файл (как раз при помощи SQLEXEC), и проблема больше не проявлялась.
Вопчем, мое предположение - есть какие-то нарушения формата во входном файле - в конкретной записи или в заголовке файла.
А как тогда пользователи работают с такой таблицей?
Человек 700, наверное.
Давно бы уже какой-нибудь модуль подвис или ругнулся.
В Excel, кстати, таблица вчера выгрузилась.
Так что тут нечто другое.
Права какие-то, возможно.
Что-то административное и мне непонятное.
Ну, возможно, есть какой-нибудь некорректный символ в таблице. DB2 и Excel это игнорируют, а VFP подвешивается.
Вообще я имел в виду следующее. Сначала попробовать открыть таблицу хоть с одной записью. Если обработка пройдет корректно, то увеличивать количество входных записей, удваивая их число.
Если же даже и с одной записью не будет обработки входных данных, то тогда уже разбираться с правами и т.п.
Драйвер ОДСБС поменять, строка соединения.
Фильтр наложить, чтобы выбиралось 10ок записей, любой подходящий критерий, типа д/р клиента, потом фильтр больше, и больше. Может так станет видна граница по кол. записей, или конкретная запись.
Ну так запусти под отладчиком и найди конкретную строку, на которой виснет программа - это или строка соединения (один куст проблем), или что-то с данными (другой куст проблем), или что-то другое, может на уровне системы.. И все переменные выведи, какие они значения имеют.. И сюда кидай, если по этим препарированным данным решить проблему не сможешь.
Почти 100%, что проблему надо искать не в фоксе, а на DB2. Ясно, что по сравнению с предыдущими разами, в SQL операторе изменился период выборки. На DB2 это элементарно может привести к изменению плана, а это, всвою очередь, привести к тому, что время исполнения изменится, скажем, с 1 минуты на 10 часов. Нужно прпробовать запустить тот же оператор не из фокса, а из какого-нибудь другого клиента (Toad?). Сравнить планы запроса с этим периодом с тем, который получается с периодом, при котором "все работало". Если дело в этом, то SQL оператор придется оптимизировать. Делать это, как правило, совсем непросто. В помощь книжка "SQL Tuning", автор - Dan Tow. Найти ее можно в интернете.
Удалил. Леонид здравую мысль подал..
Исправлено: sphinx, 08.04.16 09:57
leonid
Почти 100%, что проблему надо искать не в фоксе, а на DB2.
.
Сравнить планы запроса с этим периодом с тем, который получается с периодом, при котором "все работало".
.
2. Попробуй обновить статистику на табличках в DB2
------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Да, для чего запустить инструменты контроля - посмотреть что делает проблемная сессия, на чём "висит". Увы, хорошего инструментария для db2 я не знаю.
Тут ещё такой нюанс - далеко не всегда выполнение якобы "такого же" запроса из другой системы показывает проблему - по разному передаются параметры (если запрос параметризован), по разному идёт извлечение результирующего набора. Так что после проверки "подозрительного" запроса в каком-нить консольном db2 или в другом инструменте нужно будет то же самое проверить и в фоксе - оставив только код соединения и посылки запроса.
В общем по хорошему этот вопрос нужно переадресовать администратору данного сервера - он со своей стороны посмотрит на проблему. Конечно, если таковой человек имеется, и он адекватен
Проблема остается.
Пробовала изменить имя пользователя (ввела пользователя с доменным именем), вместо 2 минут на 100 записей стало тратиться 45 сек, но результат для меня все равно неудовлетворительный.
Снесла все лишнее в "Программах и компонентах". SQL-сервер, например, ставила. Результата не дало.
Освободила максимально диск С. Результат 0. На диске свободно около 500 Гб.
Снесла административного клиента ДБ2 и заново поставила. Результат 0.
Еще раз переставила фокс.
Еще раз сменила DSN.
Ничего не помогает.
При этом:
select * from pf.man man
виснет после 1200> записей.
select * from pf.man man where
срабатывает мгновенно.
select * from pf.man man where ra=1
виснет также, как и выбор всей таблицы.
Коннект с таблицей напрямую из Control Center стал занимать 43 сек (раньше занимал от силы 3 сек).
Зато
select * from pf.man man
проходит в доли секунды, очень быстро.
И я уже отчаялась. Я не понимаю, что я сделала не так (вернее, ничего не делала).
Начальник требует результат. результата нет.
Он говорит, чтобы я пересмотрела алгоритм. Я смутно понимаю, что дело не в алгоритме.
А в чем?
Прошу прощения, не под своим именем оказалась на клубе.
Проблема остается.
Пробовала изменить имя пользователя (ввела пользователя с доменным именем), вместо 2 минут на 100 записей стало тратиться 45 сек, но результат для меня все равно неудовлетворительный.
Снесла все лишнее в "Программах и компонентах". SQL-сервер, например, ставила. Результата не дало.
Освободила максимально диск С. Результат 0. На диске свободно около 500 Гб.
Снесла административного клиента ДБ2 и заново поставила. Результат 0.
Еще раз переставила фокс.
Еще раз сменила DSN.
Ничего не помогает.
При этом:
select * from pf.man man
виснет после 1200> записей.
select * from pf.man man where
срабатывает мгновенно.
select * from pf.man man where ra=1
виснет также, как и выбор всей таблицы.
Коннект с таблицей напрямую из Control Center стал занимать 43 сек (раньше занимал от силы 3 сек).
Зато
select * from pf.man man
проходит в доли секунды, очень быстро.
И я уже отчаялась. Я не понимаю, что я сделала не так (вернее, ничего не делала).
Начальник требует результат. результата нет.
Он говорит, чтобы я пересмотрела алгоритм. Я смутно понимаю, что дело не в алгоритме.
А в чем?
CSQLSTRINGCONN="IBM DB2 ODBC Driver;Persist Security Info=False;DSN=;PATCH2=15;UID=;pwd=;mode=SHARE;DBALIAS=ROS;Location=10.10.0.00;Mode=Read"
n_con = SQLSTRINGCONNECT(CSQLSTRINGCONN)
IF n_con = -1
DIMENSION err_(1)
AERROR(err_)
=messagebox(err_(2),64)
= MESSAGEBOX("Неверно введено имя пользователя или пароль",0+16+0,"Ошибка соединения")
quit
ELSE
=MESSAGEBOX("Соединение установлено",0+16+0,"Соединение установлено")
ENDIF
* lcquery="SELECT * FROM pf.man man where "
lcquery="SELECT * FROM pf.man man where man.ra=1 "
WAIT WINDOW "Выполняется запрос man" TIMEOUT 1
IF SQLEXEC(n_con,lcQuery,"man1",acount)>-1
messagebox("Выбрано "+STR(acount(1,2),10)+" записей",64,1000)
ELSE
MESSAGEBOX("Ошибка 1")
ENDIF
1. Что из ранее рекомендованного было выполнено.
2. Что в фоксе возвращает:
------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
С DB2 работать не приходилось, но клиент DB2, как понимаю - аналог клиента на Oracle. И кроме драйверов соединения в данном случае он и не сильно нужен. А что по проблеме сказал админ серверной части DB2? У него должны быть инструменты и знания, чтобы посмотреть особенности выполнения твоих запросов. Или ты к нему не обращалась?
sphinx
А что по проблеме сказал админ серверной части DB2? У него должны быть инструменты и знания, чтобы посмотреть особенности выполнения твоих запросов. Или ты к нему не обращалась?
Обращалась. Пытается помочь, но пока безуспешно. То, что нельзя работать с логином локального юзера, вычислено с его помощью.
Пользователя заменила, стало не 2 мин на 100 записей, а 45 сек. Мне это не сильно помогло.
Просила обновить статистику на таблицах, сказал, что пока некогда, ставит изменения.
Читайте также: